精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

使用 NFS 將 Git 提交記錄顯示成文件目錄

系統 Linux
這個項目很有實驗性(我不確定這究竟是一個有用的軟件,還是一個思考 Git 如何工作的有趣玩具),但寫起來很有趣,我自己也很喜歡在小型存儲庫中使用它,下面是我在寫這個項目時遇到的一些問題。

大家好!某天,我突發奇想 —— 是否能把 Git 存儲庫制作成一個 FUSE 文件系統,然后把所有的提交記錄做成文件夾呢?答案是肯定的!有 giblefs、 GitMounter 和用于 Plan 9 號的 git9

但在 Mac 上使用 FUSE 實在很煩人 —— 你需要安裝一個內核擴展,但由于安全的原因,Mac OS 上安裝內核擴展看起來越來越難了。此外,我還有一些想法,希望能用與這些項目不同的方式來組織文件系統。

因此,我想在 Mac OS 上嘗試 FUSE 以外的掛載文件系統的方法會很有趣,因此我創建了一個名為 git-commit-folders 的項目來做這個事。它可以同時使用 FUSE 和 NFS(至少在我的電腦上),WebDav 的實現起來還有點問題。

這個項目很有實驗性(我不確定這究竟是一個有用的軟件,還是一個思考 Git 如何工作的有趣玩具),但寫起來很有趣,我自己也很喜歡在小型存儲庫中使用它,下面是我在寫這個項目時遇到的一些問題。

目標:像文件夾一樣顯示提交記錄

我做這個事的主要目的是給大家一些啟發:Git 核心是如何運行的。總結來說,Git 提交記錄實際上和文件夾非常類似 —— 每個 Git 提交都包含一個目錄,其中 列出了文件,這個目錄也可以有子目錄,依此類推。

只是為了節省磁盤空間,Git 提交實際上并不是以文件夾的形式實現的。

而在 git-commit-folders,所有的提交記錄實際上看起來就是一個文件夾,如果你想瀏覽歷史提交記錄,你可以像瀏覽文件系統一樣瀏覽它們!例如如果你像查看我的博客的初始提交記錄,你可以如下操作:

$ ls commits/8d/8dc0/8dc0cb0b4b0de3c6f40674198cb2bd44aeee9b86/
README

其他之后的提交記錄,如下:

$ ls /tmp/git-homepage/commits/c9/c94e/c94e6f531d02e658d96a3b6255bbf424367765e9/
_config.yml  config.rb  Rakefile  rubypants.rb  source

分支是符號鏈接

通過 git-commit-folders 掛載的文件系統中,提交是唯一真正的文件夾 —— 其他一切(分支、標簽等)都是提交記錄的符號鏈接。這反映了 Git 底層的工作方式。

$ ls -l branches/
lr-xr-xr-x 59 bork bazil-fuse -> ../commits/ff/ff56/ff563b089f9d952cd21ac4d68d8f13c94183dcd8
lr-xr-xr-x 59 bork follow-symlink -> ../commits/7f/7f73/7f73779a8ff79a2a1e21553c6c9cd5d195f33030
lr-xr-xr-x 59 bork go-mod-branch -> ../commits/91/912d/912da3150d9cfa74523b42fae028bbb320b6804f
lr-xr-xr-x 59 bork mac-version -> ../commits/30/3008/30082dcd702b59435f71969cf453828f60753e67
lr-xr-xr-x 59 bork mac-version-debugging -> ../commits/18/18c0/18c0db074ec9b70cb7a28ad9d3f9850082129ce0
lr-xr-xr-x 59 bork main -> ../commits/04/043e/043e90debbeb0fc6b4e28cf8776e874aa5b6e673
$ ls -l tags/
lr-xr-xr-x - bork 31 Dec  1969 test-tag -> ../commits/16/16a3/16a3d776dc163aa8286fb89fde51183ed90c71d0

這個并不能完全呈現 Git 的所有工作機理(相比簡單的類似文件夾的提交,還有很多復雜的細節),但是我希望大家對“每個提交如同一個文件夾,里面有你的舊版本代碼”有一個直觀的認識。

這么做有什么好處呢?

在我深入介紹它的實現之前,我想說下為什么把 Git 提交記錄變成擁有文件夾的文件系統很有用。我的很多項目最終都沒有真正使用過(比如 dnspeep),但我發現自己在做這個項目的時候確實使用到了一些。

目前為止我發現主要用處是:

  • 查找已經刪除的函數 - 可以用 grep someFunction branch_histories/main/*/commit.go 查找它的舊版本
  • 快速查看其他分支的一個文件并從其拷貝一行,如 vim branches/other-branch/go.mod
  • 在每個分支中搜索某個函數,如 grep someFunction branches/*/commit.go

所有這些操作都通過提交記錄的符號鏈接,來替代提交記錄的直接引用。

這些都不是最有效的方法(你可以用 git show 和 git log -S 或者 git grep 來完成類似操作),但是對我個人來說,我經常忘記 Git 語法,而瀏覽文件系統對我來說更簡單。git worktree 還允許你同時簽出多個分支,但對我來說,為了看一個文件而設置整個工作樹感覺很奇怪。

接下來我想談談我遇到的一些問題。

問題 1: 用 WebDav 還是 NFS?

Mac OS 原生支持的兩個文件系統是 WebDav 和 NFS。我說不出那個更新容易實現,所以我就索性嘗試兩個都支持。

起初,WebDav 的實現看起來更容易一些,在 golang.org/x/net 上有一個 WebDav 實現,這個很好配置。

但這個實現不支持符號鏈接,我想可能原因是它用的是 io/fs 接口,而 io/fs 還不支持 符號鏈接。不過看起來正在進行中。所以我放棄了 WebDav,而決定重點放在 NFS 實現上了,用 go-nfs NFSv3 的庫文件來實現。

有人也提到了 Mac 上的 FileProvider,我還沒有深入了解這個。

問題 2: 如何確保所有的實現保持一致?

我已經實現了三個不同的文件系統(FUSE、NFS 和 WebDav),但對我來說還是沒搞清楚如何避免大量的重復代碼。

我的朋友 Dave 建議寫一個核心實現,然后寫一個適配器(如 fuse2nfs 和 fuse2dav)來轉換成 NFS 和 WebDav 版本。這個看起來需要我著手實現三個文件系統的接口:

  • 對應 FUSE 的 fs.FS
  • 對應 NFS 的 billy.Filesystem
  • 對應 WebDav 的 webdav.Filesystem

因此我把所有的核心邏輯放到 fs.FS 接口上,然后寫兩個函數:

  • func Fuse2Dav(fs fs.FS) webdav.FileSystem
  • func Fuse2NFS(fs fs.FS) billy.Filesystem

所有的文件系統都比較類似,因此轉換起來不是很難,但就是有大量的煩人的問題需要修復。

問題 3: 我不想羅列所有的提交記錄怎么辦

一些 Git 存儲庫有成千上萬的提交記錄。我的第一個想法是如何讓 commits/ 看起來是空的,這樣就可以如下展示:

$ ls commits/
$ ls commits/80210c25a86f75440110e4bc280e388b2c098fbd/
fuse  fuse2nfs  go.mod  go.sum  main.go  README.md

因此所有的提交記錄可以直接查看,但是又不能羅列它們。這個對文件系統是一個奇怪的事情,實際上 FUSE 可以做到。但我在 NFS 上無法實現。我認為這里的原因是,如果你告訴 NFS 某個目錄是空的,它就會認為該目錄實際上是空的,這是合理的。

我們最終是這樣處理的:

  • 按照 .git/objects 的方式,以前兩個字符組織管理提交記錄(因此 ls commits 會顯示 0b 03 05 06 07 09 1b 1e 3e 4a),但這樣做會分為兩層,這樣 18d46e76d7c2eedd8577fae67e3f1d4db25018b0 則為 commits/18/18df/18d46e76d7c2eedd8577fae67e3f1d4db25018b0
  • 開始只羅列一次所有的已經打包的提交哈希,將它們緩存在內存中,然后后面僅更新稀疏對象。主要思路是版本庫中幾乎所有的提交都應該打包,而且 Git 不會經常重新打包提交

這個看起來在擁有百萬提交記錄的 Linux 內核的 Git 存儲庫上似乎效果不錯。在我的機器上實測它初始化大概需要一分鐘,之后只需快速增量更新即可。

每個提交哈希只有 20 個字節,因此緩存 1 百萬個提交哈希也不是很大,大約 20MB。

我認為更聰明的做法是延遲加載提交列表 —— Git 會按提交 ID 對其打包文件進行排序,所以你可以很容易地進行二叉樹搜索,找到所有以 1b 或 1b8c 開始的提交。我用的 Git 庫 對此并不支持,因為羅列出來 Git 存儲庫所有的提交記錄確實一個奇怪的事情。我花了 幾天時間 嘗試實現它,但沒有達到我想要的性能,所以就放棄了。

問題 4: 不是目錄

我常遇到下面這個錯誤:

"/tmp/mnt2/commits/59/59167d7d09fd7a1d64aa1d5be73bc484f6621894/": Not a directory (os error 20)

這起初真的把我嚇了一跳,但事實證明,這只是表示在列出目錄時出現了錯誤,而 NFS 庫處理該錯誤的方式就是顯示 “Not a directory”(不是目錄)。這個錯誤遇到了很多次,我需要每次跟蹤這個錯誤的根源。

有很多類似錯誤。我也遇到 cd: system call interrupted,令人沮喪的是,但最終也只是程序中的其他錯誤。

我意識到終極大法是用 Wireshark 查看 NFS 發送和接受的數據包,很多問題便可迎刃而解。

問題 5: inode 編號

在開始的時候我不小心將所有的文件夾的 inode 設為 0。這很糟糕,因為如果在每個目錄的 inode 都為 0 的目錄上運行查找,它就會抱怨文件系統循環并放棄,這個也是符合邏輯的。

我通過定義一個 inode(string) 來修復這個問題,通過散列字符串來獲取 inode 編號,并使用樹 ID / blob ID 作為散列字符串。

問題 6: 過期文件句柄

我一直遇到這個“Stale NFS file handle”(過期文件句柄)錯誤。問題是,我需要獲取未知的 64 字節 NFS “文件句柄”,并將其映射到正確的目錄。

我使用的 NFS 庫的工作方式是為每個文件生成一個文件句柄,并通過固定大小的緩存來緩存這些引用。這對小型存儲庫來說沒問題,但是如果對于擁有海量的文件的存儲庫來說,由于緩存就會溢出,就會導致“stale file handle” 錯誤。

這仍然是個問題,我不知道如何解決。我不明白真正的 NFS 服務器是如何做到這一點的,也許它們只是有一個非常大的緩存?

NFS 文件句柄占用 64 個字節(不是比特),確實很大,所以很多時候似乎可以將整個文件路徑編碼到句柄中,根本不需要緩存。也許我會在某個時候嘗試實現這一點。

問題 7: 分支歷史

branch_histories/ 目錄目前僅羅列對應分支的最近 100 個提交記錄。我不知道該怎么做,如果能以某種方式列出分支的全部歷史就更好了。也許我可以使用 commits/ 目錄中類似的子文件夾技巧。

問題 8: 子模塊

Git 存儲庫有時包含了子模塊。由于目前我對子模塊的理解還不深入,我先忽略它吧。因此這個算是一個問題。

問題 9: NFSv4 是否更好?

我構建這個項目使用的是 NFSv3 庫,因為我當時只能找到一個 NFSv3 的 Go 庫文件。可當我搞完的時候才發現了一個名叫 buildbarn 的項目里有 NFSv4 服務器。有沒有可能用它會更好一些?

我不知道這樣做有什么問題,或者用 NFSv4 有哪些優點?我還有點不確定是否要使用 buildbarn NFS 庫,因為不清楚他們是否希望其他人使用它。

就這些吧

之前已經解決了很多問題我都忘記了,這是我目前能回想起來的。我未來有可能解決或根本解決不了 NFS 的“過期文件句柄” 錯誤,或者“在 Linux 內核的存儲庫上啟動需要 1 分鐘”的問題,就這樣吧。

感謝我的朋友 vasi,他給我了很多文件系統方面的幫助。

責任編輯:龐桂玉 來源: Linux中國
相關推薦

2022-11-06 20:40:24

Gitgit log 命令

2024-01-22 10:01:41

Git 提交快照

2021-01-04 13:25:10

Git開源工具

2020-11-10 09:45:16

Git修改記錄

2024-04-08 08:37:41

代碼githook

2010-08-03 15:40:30

NFS文件格式

2022-12-02 10:18:55

Gitbisect

2021-01-22 05:55:12

GitAngularJStype

2023-08-27 21:41:14

Git文件系統版本

2023-11-09 09:00:00

OpenAI人工智能Whisper

2014-09-23 09:40:09

2010-08-05 14:25:44

nfs服務

2010-08-02 17:24:25

NFS目錄

2022-03-23 09:18:10

Git技巧Linux

2025-08-27 06:10:00

2011-07-20 14:46:59

Cocoa XML 文件

2022-04-28 09:02:55

Gitcommitlint配置

2022-10-27 09:34:06

git撤銷

2010-08-05 13:45:41

NFS網絡文件

2017-03-09 15:32:04

Linux.htaccessWeb目錄
點贊
收藏

51CTO技術棧公眾號

久久在线视频免费观看| 1024在线看片你懂得| 久久国产精品色婷婷| 久久久久北条麻妃免费看| 又色又爽又黄18网站| 末成年女av片一区二区下载| 亚洲国产电影在线观看| 99高清视频有精品视频| 中文字幕の友人北条麻妃| 精品国产黄色片| 亚洲一区日韩在线| 久久精品电影一区二区| 国产精品久久AV无码| 成人影院在线免费观看| 亚洲一区二区视频| 视频在线一区二区三区| 成人精品在线播放| 人人爽香蕉精品| 亚洲精品一区二区三区婷婷月| 一区二区三区免费播放| 69av成人| 最新久久zyz资源站| 久久青青草综合| av官网在线观看| 久久一区激情| 97国产在线视频| 亚洲波多野结衣| 国产日产一区 | 日本一区二区乱| 日韩欧美aaa| 日本男女交配视频| 欧美激情二区| 日本一区二区免费在线| 精品一区久久| 成人午夜免费福利| 精品一区二区三区欧美| 国产福利精品在线| 久久久久久久久久影院| 亚洲欧美伊人| 日韩在线视频国产| 国产真人真事毛片视频| 精品视频99| 亚洲男人天堂2024| 日韩片在线观看| 日本乱码一区二区三区不卡| 综合婷婷亚洲小说| 无码免费一区二区三区免费播放| 亚洲欧美自偷自拍| 99精品黄色片免费大全| 成人三级在线| 精品久久久中文字幕人妻| 久久国产综合精品| 国产噜噜噜噜噜久久久久久久久| 黄色污污视频软件| 久热re这里精品视频在线6| 国外视频精品毛片| 国产真人真事毛片| 尹人成人综合网| 久久人人爽人人爽人人片av高清| 国产性70yerg老太| 伊人精品成人久久综合软件| 久久久久亚洲精品成人网小说| 免费视频网站www| 欧美激情1区2区3区| 欧美大片在线免费观看| 国产一级在线观看视频| 在线观看视频免费一区二区三区| 欧美激情一区二区三区成人| 四虎永久在线精品| 99精品国产福利在线观看免费| 性视频1819p久久| 久久中文字幕免费| 久久性天堂网| 国产中文字幕日韩| 性猛交富婆╳xxx乱大交天津| 国产成人av影院| 国产精品日韩一区二区三区 | 亚洲偷欧美偷国内偷| 第一次破处视频| 欧美wwwww| 欧美乱妇40p| 香蕉视频黄色在线观看| 亚洲人成网www| 在线免费看av不卡| 蜜臀久久精品久久久用户群体| 日韩免费电影在线观看| 欧美人狂配大交3d怪物一区| 8x8x成人免费视频| **爰片久久毛片| 亚洲精品自拍第一页| 我不卡一区二区| 欧美在线视屏| 欧美亚洲激情视频| 亚洲一卡二卡在线观看| 丁香激情综合国产| 欧美日韩精品久久久免费观看| av网站无病毒在线| 亚洲线精品一区二区三区八戒| 国产精品宾馆在线精品酒店| 国产精品99久久久久久董美香| 日韩欧美中文字幕一区| 国产全是老熟女太爽了| 91精品高清| 日本人成精品视频在线| 国产农村老头老太视频| 久久久影院官网| 欧美h视频在线观看| 国产中文字幕在线| 亚洲欧美日韩久久| 国产女女做受ⅹxx高潮| 麻豆久久一区| 在线观看国产欧美| 日韩av女优在线观看| 蜜臀av性久久久久av蜜臀妖精| 成人黄视频免费| 阿v免费在线观看| 国产欧美日韩视频在线观看| 国产精品无码免费专区午夜| 成人免费短视频| 精品欧美久久久| 九九热视频在线免费观看| 亚洲免费婷婷| 国产精品久久久久久久免费大片 | 久久视频在线看| 7799精品视频天天看| 成人自拍视频在线| 男女爱爱视频网站| 成人午夜亚洲| 亚洲香蕉成视频在线观看| 精品处破女学生| 国产一区二区在线电影| 亚洲综合中文字幕在线观看| 国产中文在线| 日韩欧美黄色动漫| 久久精品综合视频| 亚洲调教视频在线观看| 91av成人在线| 好吊色一区二区| 亚洲精品欧美激情| 视频免费1区二区三区| 欧美一区2区| 国产成人精品一区二区三区| 天堂av一区二区三区| 夜夜嗨av一区二区三区网页| 天天做天天干天天操| 欧美一二区在线观看| 国产精品xxx视频| 日本成人一区| 欧美性猛交xxxx黑人| 国产黄色三级网站| 亚洲视频成人| 国产九色精品| 阿v视频在线| 亚洲国产精品大全| 中文字幕亚洲高清| 久久久久久免费| 99免费视频观看| 免费观看久久av| 色噜噜国产精品视频一区二区| 欧美特级黄色片| 久久久久久久免费视频了| 18禁免费无码无遮挡不卡网站| 欧美男男freegayvideosroom| 7m精品福利视频导航| 日本在线视频1区| 色呦呦一区二区三区| 91资源在线播放| 精彩视频一区二区三区| 麻豆视频传媒入口| 6080亚洲理论片在线观看| 欧美激情欧美激情在线五月| 天天操天天干天天| 色素色在线综合| 又嫩又硬又黄又爽的视频| 激情六月婷婷久久| 精品免费久久久久久久| 久久久免费毛片| 国产高清视频一区三区| 国内外激情在线| 亚洲成人a**站| 成年人视频免费| 尤物视频一区二区| 国产中文字幕一区二区| 日本最新不卡在线| 免费看日本黄色| 欧美日本成人| 国产日韩精品在线观看| 日韩激情美女| 亚洲欧美福利视频| 国产视频一区二区三区四区五区| 亚洲国产精品一区二区久久恐怖片| 国产精品九九九九九| 奇米一区二区三区av| 色爽爽爽爽爽爽爽爽| 日韩免费电影在线观看| 成人欧美一区二区三区黑人孕妇| 91吃瓜在线观看| 中文字幕亚洲字幕| 色综合久久久久久| 欧美日本一道本| 尤物视频在线观看国产| 国产精品久久久久毛片软件| 91视频在线免费| 理论片日本一区| 国产精品裸体瑜伽视频| 国产精品成久久久久| 久久日韩精品| 视频成人永久免费视频| 国产精品久久久久久亚洲调教| 欧美videos另类精品| 一区二区三区四区精品| 无码国产精品一区二区色情男同| 欧美色窝79yyyycom| 日韩欧美中文字幕一区二区| 中文字幕一区二区三区在线观看 | 国产精品情趣视频| 少妇一级淫片免费放播放| 久久国产免费看| 99爱视频在线| 亚洲小说欧美另类婷婷| 中文有码久久| 成人6969www免费视频| 久久精品国产精品国产精品污| 99视频这里有精品| 日韩在线播放av| 欧美中文在线| 精品国产一区二区亚洲人成毛片 | 麻豆免费版在线观看| 欧美乱大交xxxxx| 黄色网页在线播放| 中文字幕久精品免费视频| 欧美一区二区少妇| 亚洲高清在线观看| 性一交一乱一伧老太| 欧美精品乱码久久久久久| 亚洲精品国产精品国自产网站按摩| 午夜激情综合网| 国产一级在线播放| 亚洲综合一二区| 免看一级a毛片一片成人不卡| 一色屋精品亚洲香蕉网站| 成人激情五月天| 久久久久国产一区二区三区四区| 国产精品无码电影| av一区二区三区| 国产老熟女伦老熟妇露脸| 成人精品一区二区三区中文字幕| 久久久久中文字幕亚洲精品| 国产精品一二三| 中文字幕一区二区三区人妻在线视频 | 亚洲欧美经典视频| 情侣偷拍对白清晰饥渴难耐| 国产精品视频一二三| 久久视频精品在线观看| 国产女人18毛片水真多成人如厕| 国产精品一二三区在线观看| 久久久亚洲国产美女国产盗摄| 爱爱免费小视频| 国产亚洲欧美一区在线观看| 欧美黄色高清视频| 中文字幕在线观看不卡视频| 久久一级免费视频| 99久久婷婷国产综合精品电影| 日本天堂在线播放| 久久机这里只有精品| 成人亚洲免费视频| 国产成人无遮挡在线视频| 成年女人免费视频| 91亚洲永久精品| 乐播av一区二区三区| 国产精品麻豆久久久| 顶臀精品视频www| 亚洲永久精品国产| 久热这里只有精品6| 在线亚洲+欧美+日本专区| 中文字幕在线播放日韩| 91精品国产色综合久久久蜜香臀| 精品人妻一区二区三区换脸明星 | 韩曰欧美视频免费观看| 无码人妻久久一区二区三区| 欧美日韩国产影片| 精品免费久久久| 亚洲精品国产免费| 成人动漫在线播放| 欧美高跟鞋交xxxxhd| 亚洲黄色中文字幕| 国产欧美在线看| av成人资源网| 亚洲不卡1区| 亚洲精品国产首次亮相| 女性女同性aⅴ免费观女性恋| 免费一级欧美片在线观看| 美国黄色一级视频| 国产精品免费网站在线观看| 久久久久久久久久久97| 91成人在线观看喷潮| 99国产在线播放| 亚洲欧洲高清在线| 制服丝袜在线播放| 国产极品jizzhd欧美| 无码国模国产在线观看| 色播五月综合| 亚洲国内欧美| 黄色aaaaaa| 2014亚洲片线观看视频免费| 日本黄色小说视频| 亚洲欧美激情在线| 亚洲视频 欧美视频| 精品日韩99亚洲| 又爽又大又黄a级毛片在线视频| 欧美精品videos| 亚洲精品777| 日本成人三级电影网站| 国产精品啊啊啊| 91视频这里只有精品| 2020国产精品自拍| 久久精品久久精品久久| 欧美精品国产精品| 成年人在线观看视频| 孩xxxx性bbbb欧美| 无码国模国产在线观看| 一区二区三区视频| 丝袜诱惑亚洲看片| 人妻无码一区二区三区| 一区二区日韩av| 国产男女猛烈无遮挡| 国产亚洲精品成人av久久ww| 激情视频网站在线播放色| 国产精品v欧美精品∨日韩| 97精品中文字幕| 三级视频中文字幕| 国产亚洲综合av| 欧美a视频在线观看| 日韩精品视频免费| √天堂8资源中文在线| 99超碰麻豆| 国产精品99一区二区| 成人免费黄色av| 亚洲欧美另类图片小说| 国产绳艺sm调教室论坛| 精品国内产的精品视频在线观看| 国产福利亚洲| 亚洲精品国产精品国自产观看| 日日骚欧美日韩| 中文字幕中文在线| 国产精品少妇自拍| 在线免费a视频| 一色桃子一区二区| 日本在线一区二区| 亚洲综合首页| 国产在线一区观看| 九九热视频精品| 精品国产青草久久久久福利| 女子免费在线观看视频www| 成人一区二区三区四区| 亚洲高清网站| 亚洲成人av免费在线观看| 蜜桃久久久久久久| 日本久久中文字幕| 国产一区二区三区四区在线| 欧美理伦片在线播放| 亚洲奶大毛多的老太婆| 六十路息与子猛烈交尾| 成人精品电影在线| 欧美日韩精品一区二区在线播放| 香蕉视频成人在线| 奇米4444一区二区三区 | 97天天综合网| 国产精品免费视频一区二区 | 天堂在线视频观看| 国内久久久精品| 亚洲黄页网站| 污污视频网站免费观看| 国产精品看片你懂得 | 日韩电影免费在线观看中文字幕| 天堂资源在线| 亚洲国产精品www| 国产一区二区三区四区在线观看| 欧美黑吊大战白妞| 国产视频精品在线| 国产成人精品一区二区三区视频| 成人短视频在线看| 成人精品在线视频观看| 免费看毛片网站| 色偷偷av亚洲男人的天堂| 亚洲一区二区三区日本久久九| 国产原创中文在线观看 | 男女男精品视频| 国产一区二区三区在线视频观看| 精品成人在线观看| 视频一区在线免费看| 91嫩草国产丨精品入口麻豆| 97久久精品人人澡人人爽| 亚洲手机在线观看| 97色在线观看| 欧美高清在线| xxxx黄色片| 欧美精品九九99久久| 成人影院在线视频| 国产又爽又黄ai换脸|