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

前端Monorepo大倉代碼按需拉取技術實現原理

開發(fā) 前端
本文主要對于git sparse checkout 的原理和在其之上的應用——大倉按需拉取cli和 vscode按需拉取插件展開講解,實現了初版的基礎能力,當然不可避免也存在著一些問題,當下的按需檢出實現方案可能不是最終極的解決辦法,但它卻是最適合我們當下業(yè)務進程的方案。


1、背景與難點

目前,前端平臺探索大倉研發(fā)模式,通過Monorepo大倉的技術,整合前端平臺現有應用的倉庫代碼,使得各業(yè)務域應用質量衡量標準統(tǒng)一,通用基礎組件以及工具函數能夠快速復用,當基礎通用功能出現問題的時候,能快速地在各應用中升級,提升研發(fā)工作效率,節(jié)省人效。

我們知道在普通的項目開發(fā)中進行 git 的克隆和拉取不會遇到什么問題。但是隨著我們代碼的不斷擴充,代碼倉庫內容會變得越來越大,需要幾個G甚至幾十上百G的磁盤空間時,如果把所有代碼都pull到本地屬實是個不現實的方式,不僅是我們沒有這么大的磁盤空間,而且還有網絡流量的占用問題以及網絡速度問題都是沒有辦法解決。而且,如果Git倉庫特別大,每次執(zhí)行Git命令,等待時間會特別長。對于這些問題,我們做了相關的技術調研。

2、技術調研

我們調研了下Facebook和Google大倉代碼按需拉取的實現,其使用方式大致如下:

Facebook

mercurial:是一個分布式版本控制工具(類似Git,是Matt Mackall開發(fā)),采用的是基于內容尋址的技術。當對一個文件進行修改時,mercurial 不會直接修改文件本身,而是創(chuàng)建一個新版本,該版本包括指向之前版本的引用以及所做修改的差異。這樣,就可以在沒有改變之前版本的基礎上構建新版本,同時正確地跟蹤文件的變化歷史。

Vscode工具:支持下載局部代碼 & 全局代碼檢索等能力

  • Google
  • Piper:代碼管理系統(tǒng)(類似github),是一個強大的分布式版本控制和數據管理系統(tǒng),它使用了 Google 自行開發(fā)的 Colossus 文件系統(tǒng)、索引機制等多項技術來實現高效的管理和處理大規(guī)模的代碼庫,并具有高可擴展性、高可靠性和高吞吐量等特點。
  • Citc: 云存儲客戶端,用來和piper進行交互

像Facebook和Google都是自研的類似Git的工具,如果我們自己自研的話,成本會很大。所以,目前是另辟蹊徑選擇了基于 git 的sparse checkout 來實現。Git在2.25及以上版本提供了sparse checkout的能力,能夠實現代碼的按需拉取。

3、實現原理

3.1 git sparse checkout的原理

3.1.1 sparse checkout定義

所謂稀疏檢出就是,Git本地庫檢出時不檢出全部,只將指定的文件從Git本地庫檢出到Git工作區(qū),而其他未指定的文件則不予檢出(即使這些文件存在于工作區(qū),其修改也會被忽略)。

3.1.2 sparse checkout原理

當開啟sparse checkout功能的時候, Git 從遠程倉庫下載整個倉庫對象的元數據(metadata),而不是下載所有的文件。具體來說,Git下載倉庫時,首先下載倉庫的基礎元數據對象(如提交對象、樹和blob等),然后將基礎數據對象整合成commit對象,并下載相關的歷史記錄。在這個過程中,Git會逐步下載和存儲文件的有關信息(例如文件名、大小和內容哈希值),但并不會立即下載所有文件的內容。只有當執(zhí)行檢出命令時,Git才會根據指定的分支或標簽,從遠程倉庫下載所需的文件的實際內容。

Git 實現這個稀疏檢出,是靠一個skip-worktree的標識, 即在 index (即Git暫存區(qū))中為每個文件提供一個名為 skip-worktree 的標志位,默認這個標志位處于關閉狀態(tài)。如果開啟該標志位,則無論Git工作區(qū)對應的文件存在是否,或者是否被修改,Git都認為Git工作區(qū)該文件的版本是最新的、無變化的。Git通過配置文件 .git/info/spare-checkout 定義一個要檢查的目錄和或文件列表,當前Git的基于合并(git merge、git checkout)等命令能夠根據該配置文件更新的index中文件的 skip-worktree 表示位,實現Git本地庫文件的稀疏檢出。

圖片

  • 執(zhí)行 "git checkout" 命令來檢出僅僅包含所選目錄或文件路徑的副本倉庫,不包括篩選掉的文件或目錄。
  • 當執(zhí)行 "git add" 命令時,會根據 sparse-checkout 文件進行文件過濾,只有匹配到正則表達式描述的文件才會被加入到 Git 的跟蹤列表中。

3.2 基于sparse checkout的CLI實現

我們先來看下在 git 中手動使用sparse checkout 操作的一般步驟 :

第一步,git 初始化
git init


第二步,設置remote倉庫地址
git remote add orgin git@pkg.xxx.com:du-monorepo/XXXXX.git


第三步,初始化
git sparse-checkout init —cone


第四步,添加目錄
git sparse-checkout add xxx/xx ...


第五步,檢出
git pull orgin master

為了更方便地使用 sparse checkout 特性,我們開發(fā)了命令行工具,集合封裝了按需檢出相關的操作步驟。

3.2.1 cli 操作步驟

  1. 命令行執(zhí)行 dx init
  2. 選擇業(yè)務域
  3. 選擇項目
  4. 檢出目標項目

這里面所做的就是把稀疏檢出的操作流程集合在了統(tǒng)一的命令行里面了,便于操作。本質上還是差不多上文demo里面所描述的內容。

圖片圖片

上圖是前端大倉目前已經遷移的全部應用目錄結構,可以看到不同的業(yè)務域下有不同的應用,比如客服的研發(fā)只關注客服的應用,商家的研發(fā)只關注商家的應用,通過上面的CLI操作步驟只需拉取對應目錄下的代碼就可以了,流程效果如下:

3.2.2 實現流程

圖片圖片

如上圖所示,整個cli 是基于Pipline 的設計模式,Pipeline模式為管道模式,也稱為流水線模式。通過預先設定好的一系列的階段來處理輸入的數據,每個階段的輸出即是下一個階段的輸入(Pipeline其實是使用了責任鏈模式的思想)。模型圖如下:

圖片圖片

Pipeline設計模式的精髓在于它的可配置化,并且嵌套可拓展。在使用Pipeline時,如果想調換Valve的順序,或者某些業(yè)務是不是用某個Valve,都是可以在外部配置的。這樣就可以很靈活地適配多樣化的業(yè)務,針對不同的業(yè)務配置不同的處理流程,擴展性、靈活性比較強。

3.3 基于sparse checkout的VSCode插件實現

3.3.1 大倉VsCode插件組成要素

大倉VsCode插件由【啟動按鈕】、主側邊欄【HELP】以及【Monorepo管理面板】三個要素組成

插件組成要素插件組成要素

3.3.2 插件實現原理

下面介紹下這三個元素以及元素間聯(lián)動的代碼實現。

  • 插件代碼結構&基本架構

代碼結構代碼結構

插件基本架構插件基本架構

  • 插件啟動按鈕

啟動按鈕是在package.json里配置的,配置項為contributes.viewsContainers.viewsContainers,可以配置按鈕的id,標題和icon

圖片圖片

當點擊啟動按鈕后,就會激活插件,并執(zhí)行activate的鉤子函數,activate需要在名為extension.ts的文件中實現并導出:

圖片圖片

當插件被銷毀時,會調用extension.ts導出的deactivate鉤子函數,在這個鉤子里可以進行一些資源的銷毀。

其中activate執(zhí)行了打開【Monorepo管理面板】的代碼,這樣插件在啟動時就會自動打開面板。

  • 主側邊欄【HELP】

該元素也是在package.json中配置的,配置項為:contributes.viewsWelcome,可以在content配置項中配置內容,綁定視圖,并為按鈕的點擊事件綁定響應指令,這里綁定的指令是自定義指令:monorepo-init-extend.startClone。

圖片圖片

在extension.ts中注冊自定義指令:monorepo-init-extend.startClone,以及執(zhí)行該指令的響應。

圖片圖片

可以看到該指令將創(chuàng)建并打開【Monorepo管理面板】,從而實現主側邊欄【HELP】和【Monorepo管理面板】之間的聯(lián)動效果。當用戶點擊【HELP】中的【請選擇應用】時,就會執(zhí)行該指令并打開【Monorepo管理面板】。

  • Monorepo管理面板

Monorepo管理面板是通過在VSCode中創(chuàng)建一個webviewPanel,并注入html模版來實現的。并且插件和webview之間可以通過postMessage api來進行通信。如在【Monorepo管理面板】中,當點擊了【確定】按鈕,就會通過postMessage將所選應用的信息通過postMessage發(fā)送給插件,插件將這些信息作為執(zhí)行初始化或代碼追加指令的參數,借助稀疏檢出的命令行工具,執(zhí)行相應的指令,即可按需拉取代碼到本地。在插件執(zhí)行完指令后,就會將相應的反饋信息通過postMessage發(fā)送給【Monorepo管理面板】。

Monorepo管理面板中樹形結構的應用列表數據是通過前端統(tǒng)一配置中心獲取的,支持動態(tài)可配置:

圖片圖片

4、技術挑戰(zhàn)

基于Git的代碼按需拉取雖然實現了,但是基于Git的文件系統(tǒng)是存在弊端的:

  • Git 文件系統(tǒng)中的每個版本都是一組完整的快照,因此在執(zhí)行稀疏操作時,用戶需要指定需要的文件或目錄,此時 Git 會進行文件或目錄的部分檢出。但是,由于 Git 文件系統(tǒng)中的快照是完整的,因此即使只檢出部分文件或目錄,Git 仍需要讀取不相關的文件或目錄,導致 I/O 操作和網絡傳輸量增加,尤其對于大型代碼庫來說,這會增加服務器和網絡的負擔。

Git 仍需要讀取不相關的文件或目錄:這是因為 Git 文件系統(tǒng)使用的是內容尋址(content-addressable)的存儲方式,即每個對象的名稱都是由其內容(也就是文件的具體內容)計算出的 SHA-1 校驗和。每個提交(commit)都是一個完整的目錄樹(tree)對象,其中包含了所有的文件和子目錄。由此,在執(zhí)行稀疏檢出時,Git 需要讀取整個目錄樹(包括不相關的文件和目錄)以計算出其 SHA-1 校驗和和對象名,然后根據用戶的請求將需要的文件和目錄進行檢出。

  • Git 文件系統(tǒng)中的歷史記錄是由一系列提交組成的,每個提交最多保存一個完整的快照。因此,如果對代碼庫進行了稀疏檢出,從歷史記錄中檢查或恢復文件或目錄可能會變得更加困難,因為歷史記錄只能訪問和操作現在存在的文件或目錄,而不包括被檢出的、或不再在代碼庫中的文件或目錄。

由于 Git 文件系統(tǒng)是基于快照(snapshot)記錄歷史記錄的,每個提交都包含整個代碼庫的目錄樹對象和其中所有文件的快照,那么如果使用稀疏檢出機制來指定只檢出部分文件或者目錄,那么在檢查或恢復歷史版本的時候,只能訪問和操作現在存在的文件或目錄。因為那些之前被篩選過去的文件或目錄現在不在當前檢出的代碼庫中,所以無法直接訪問它們的歷史版本。

  • sparse checkout是基于Git的元數據實現的,跟Git文件系統(tǒng)天然綁定。如果當代碼量達到一定體量的時候,Git的元數據會非常龐大,特別是后續(xù)試行主干開發(fā)分支的時候,元數據會膨脹的很快,當達到Git本身性能臨界點的時候,就會出現git相關操作卡頓的情況,如git add、git commit等相關命令執(zhí)行會非常緩慢。所以維護好Git的元數據在一定的范圍內非常重要,這也是我們后續(xù)在分支維護策略上比較大的技術挑戰(zhàn)。

5、總結

本文主要對于git sparse checkout 的原理和在其之上的應用——大倉按需拉取cli和 vscode按需拉取插件展開講解,實現了初版的基礎能力,當然不可避免也存在著一些問題,當下的按需檢出實現方案可能不是最終極的解決辦法,但它卻是最適合我們當下業(yè)務進程的方案。后面還會繼續(xù)迭代和優(yōu)化,同時關注git官方能力的改善以及我們自身對未來滿足需求能力上的前置探索。


責任編輯:武曉燕 來源: 得物技術
相關推薦

2023-12-07 07:02:00

大倉權限設計

2024-11-21 17:35:10

2021-11-13 08:32:41

lerna Monorepo 項目

2023-12-07 08:07:47

Node流程代碼

2024-07-11 11:31:17

2023-08-23 18:56:46

2017-07-26 14:50:37

前端模板

2021-02-02 13:45:31

Vue代碼前端

2016-09-29 09:57:08

JavascriptWeb前端模板

2021-03-25 09:41:43

前端Monorepo技術熱點

2021-10-26 18:22:25

原理注冊表信息

2022-09-22 09:54:56

技術選型

2024-09-11 15:59:31

LLM.int8()大模型量化

2022-05-24 12:34:32

Docker容器Linux容器進程

2013-07-01 23:59:47

個推技術實現原理

2015-09-25 09:56:37

負載均衡

2017-05-16 15:33:42

Python網絡爬蟲核心技術框架

2013-06-09 11:14:21

用友UAP云計算移動應用

2017-03-13 13:21:34

Git處理大倉庫

2024-08-19 02:35:00

模型量化深度學習
點贊
收藏

51CTO技術棧公眾號

www.欧美日本韩国| 在线免费观看日韩视频| 亚洲丝袜美腿一区| 欧美日韩五月天| 亚洲欧洲日本国产| 蜜桃91麻豆精品一二三区| 妖精视频成人观看www| 国产性猛交xxxx免费看久久| 黄色小视频免费网站| 国产精品186在线观看在线播放| 久久影院视频免费| 97视频资源在线观看| 成年人视频在线免费看| 国产精品不卡| 日韩电影中文字幕在线| 国产视频1区2区3区| yellow在线观看网址| 国产精品久久夜| 精品欧美日韩| 99精品免费观看| 久久精品麻豆| 欧美人在线视频| 精品国产成人亚洲午夜福利| 最新国产一区二区| 欧美日韩午夜在线| 成年人网站大全| 高清电影在线免费观看| 成人免费小视频| 蜜桃传媒视频麻豆一区| 国产福利第一视频| 免费欧美日韩国产三级电影| 午夜美女久久久久爽久久| 天天色天天综合| 国产一区二区观看| 日韩成人在线视频| 丰满熟女人妻一区二区三区| 伊人久久大香线蕉综合影院首页| 色综合久久久久网| 国产妇女馒头高清泬20p多| 国产三区视频在线观看| 国产三级欧美三级| 欧美连裤袜在线视频| 人妻少妇精品无码专区| 国产精品一区二区久久不卡| 国产欧美一区二区三区视频| 久久久久久无码午夜精品直播| 狠狠色丁香久久综合频道 | 99视频在线视频| 里番在线播放| 亚洲欧美激情视频在线观看一区二区三区 | 免费xxxx性欧美18vr| 91高清视频免费| 国产成人精品亚洲男人的天堂| 久久久久久久久国产一区| 在线观看欧美日韩| 丁香花五月婷婷| 精品视频97| 中文字幕日韩电影| 黄色片网站在线播放| 日本女优一区| 爱福利视频一区| 强制高潮抽搐sm调教高h| 欧美成人精品一区二区三区在线看| 一区二区三欧美| 大吊一区二区三区| 97欧美在线视频| 精品久久久999| 69xx绿帽三人行| 欧美一区二区三区久久精品| 九九精品在线播放| 国产在线视频你懂的| 亚洲视频一区| 26uuu久久噜噜噜噜| 久久久成人免费视频| 久久精品91| 国产美女91呻吟求| 99精品国产99久久久久久97| 成人性生交大片免费看中文| 国内精品视频免费| 美女欧美视频在线观看免费| 日本一区二区免费在线观看视频 | 五月婷婷深深爱| 91免费观看视频| 日本精品国语自产拍在线观看| av中文天堂在线| 国产精品白丝在线| 国产天堂视频在线观看| 亚洲伊人av| 欧美私模裸体表演在线观看| 亚洲精品视频三区| 国产成人精品福利| 国产午夜精品美女视频明星a级| 大吊一区二区三区| 黄色在线成人| 国产精品国产福利国产秒拍| 99久久精品免费看国产交换| 99久久国产综合精品麻豆| 欧美xxxx黑人又粗又长精品| 三区四区在线视频| 午夜国产精品影院在线观看| 日韩精品无码一区二区三区免费| 国产精品一区二区精品视频观看| 91精品国产丝袜白色高跟鞋| 亚洲少妇18p| 大胆日韩av| 欧美激情aaaa| 一二三区免费视频| 丰满岳乱妇一区二区三区| 欧美亚洲免费高清在线观看 | 久久久久久久久久久国产| 91精品国产高清一区二区三密臀| 蜜桃一区二区三区四区| 高清视频在线观看一区| 成人午夜影视| 午夜激情一区二区| 99re6在线观看| 免费成人三级| 不卡av日日日| 国产精品xxxxxx| 高清国产午夜精品久久久久久| 欧美精品一区二区三区在线四季| a视频在线免费看| 在线精品视频免费播放| 成人在线视频免费播放| 欧美好骚综合网| 91高清在线免费观看| 国产日韩在线观看一区| 国产日韩成人精品| av动漫在线看| ccyy激情综合| 久久亚洲综合国产精品99麻豆精品福利 | 国产成人黄色网址| 精品一区亚洲| 97色在线播放视频| 亚洲国产精品18久久久久久| 国产精品欧美久久久久无广告 | 日韩精品在线一区二区| 五月婷婷婷婷婷| 久久中文字幕一区二区三区| 国产精品一区二区a| 97影院秋霞午夜在线观看| 欧美日韩亚洲综合在线| 国产精品久久免费观看| 麻豆精品91| 久久艳妇乳肉豪妇荡乳av| 69av成人| 欧美精品一区二区蜜臀亚洲| 免费在线观看日韩| 国产成人亚洲精品青草天美| 中文字幕第一页亚洲| 国产精品99精品一区二区三区∴| 国产一区二区精品丝袜| 高潮毛片又色又爽免费 | 成人影院中文字幕| 久久亚洲一区二区三区四区| 午夜免费福利小电影| 视频一区国产| 久久成人精品电影| 精品欧美在线观看| 一区二区不卡在线视频 午夜欧美不卡在 | 精品人伦一区二区三区蜜桃网站| wwwxxx色| 日韩香蕉视频| 欧美一区二区综合| 国产韩日精品| 日韩亚洲精品视频| av中文字幕第一页| 亚洲一区免费视频| 色呦呦一区二区| 可以看av的网站久久看| 欧美一级二级三级| 精品久久在线| 久久夜色精品亚洲噜噜国产mv | 精品影院一区二区久久久| 一区二区三区国| 日韩一区网站| 91成人性视频| 日本电影在线观看网站| 日韩一区二区三区视频在线观看| 日韩影院一区二区| 成人国产在线观看| 欧美精品第三页| 欧美激情理论| 国产欧美一区二区视频| **在线精品| 久久久精品久久| 欧美一区,二区| 欧美主播一区二区三区| 久久久久久久久久网站| 91免费看视频| 亚洲欧美日韩综合网| 韩日在线一区| 欧洲视频一区二区三区| 久久精品九色| 日本精品免费观看| xvideos国产在线视频| 日韩国产中文字幕| 国产日韩免费视频| 一本色道a无线码一区v| www.av免费| 99精品国产99久久久久久白柏| 成人免费在线观看视频网站| 午夜视频精品| 亚洲国产一区二区精品视频 | 亚洲综合不卡| 裸体裸乳免费看| 综合国产视频| 成人动漫在线观看视频| 日韩漫画puputoon| 97精品国产97久久久久久春色| 91福利在线视频| 亚洲精品720p| 国产丰满美女做爰| 欧美性感一区二区三区| 国产成人自拍视频在线| 一区二区中文视频| 亚洲成人网在线播放| 国产电影精品久久禁18| the porn av| 国产精品永久| 妞干网在线播放| 色天天综合网| 欧美性大战久久久久| 九九热播视频在线精品6| 成人自拍性视频| 精品123区| 欧美一级高清免费| av成人福利| 九九热99久久久国产盗摄| 超碰国产在线| 亚洲视频在线观看网站| 天堂av在线免费观看| 精品国产免费人成在线观看| 国产毛片在线视频| 欧美日韩综合在线免费观看| 狠狠人妻久久久久久| 午夜精品久久久久久不卡8050| 欧美性猛交xxxxx少妇| 国产精品护士白丝一区av| 亚洲精品成人无码| 久久香蕉国产线看观看99| 欧美xxxx×黑人性爽| 国产白丝精品91爽爽久久| 日本中文字幕在线不卡| 国产一区免费电影| 黄色小视频免费网站| 麻豆精品国产传媒mv男同| 九一精品在线观看| 日韩av高清在线观看| 国产97色在线 | 日韩| 久久欧美肥婆一二区| 成人黄色片视频| 久久精品一区二区三区中文字幕| 久久国产成人精品国产成人亚洲| 亚洲精品免费观看| 久久久999免费视频| 国产精品亚洲产品| 人妻内射一区二区在线视频| 久久中文在线| 一道本视频在线观看| 久久99久久99精品免视看婷婷 | 五月天婷婷网站| 亚洲成av人片在线| 亚洲视频免费播放| 色综合久久综合网97色综合| 老熟妇一区二区三区| 欧美日韩国产高清一区二区三区 | 一级免费黄色录像| 亚洲男人的天堂网| 久久中文字幕在线观看| 亚洲成a人v欧美综合天堂| 国产成人无码精品亚洲| 午夜电影网亚洲视频| 免费污污视频在线观看| 欧美性感一区二区三区| 国产欧美熟妇另类久久久| 精品久久人人做人人爱| 青青青手机在线视频观看| 最近2019年手机中文字幕| 日本中文字幕伦在线观看| 欧美另类交人妖| a国产在线视频| 国产精品mp4| 日本少妇精品亚洲第一区| 国内一区在线| 日韩激情一区| 亚洲色欲久久久综合网东京热| 国产日韩综合| 青青草久久伊人| va亚洲va日韩不卡在线观看| www在线观看免费视频| 亚洲日本韩国一区| 9i看片成人免费看片| 欧美女孩性生活视频| 黄色小视频免费观看| 一区二区在线视频| 日本一级理论片在线大全| 国产ts人妖一区二区三区| 国产精品1区在线| 欧美日韩一区二区三区在线观看免| 99久精品视频在线观看视频| 蜜臀av色欲a片无码精品一区| 日韩国产欧美视频| 日本黄色大片在线观看| 国产欧美日韩精品在线| 久久婷婷综合国产| 欧美日韩一区不卡| 色婷婷激情五月| 久久精品99久久香蕉国产色戒| а√天堂8资源中文在线| 国产日韩换脸av一区在线观看| 精品欧美午夜寂寞影院| 成年人免费观看的视频| 久久国产日韩| 色哟哟网站在线观看| 国产精品你懂的在线| 国产精品一区无码| 精品999久久久| 国产黄色小视频在线| 国产精品91在线| 电影一区二区在线观看| 青少年xxxxx性开放hg| 日韩精品一二三| 好吊一区二区三区视频| 亚洲资源中文字幕| 一级黄色大片免费| 一区二区欧美在线| 日本不卡一二三| 国产精品久久久久av福利动漫| 欧美高清视频手机在在线| 99热成人精品热久久66| 波多野结衣精品在线| 久草福利资源在线观看| 欧美精品粉嫩高潮一区二区| 久草在线免费福利资源| 91国内精品久久| 久久成人福利| 日本熟妇人妻xxxx| 国产精品中文字幕欧美| 永久免费看片直接| 欧美日韩美女一区二区| www.亚洲.com| 国产精品久久不能| 国产99亚洲| 欧美 日韩 国产一区| 99在线精品视频| 日本网站在线播放| 日韩精品欧美激情| 极品美鲍一区| 精品国产综合区久久久久久| 亚洲激情偷拍| 国产草草浮力影院| 精品久久久久久久久中文字幕| 欧美大片在线播放| 亚洲欧美另类视频| 日本亚洲一区| 欧美激情综合| 久久国产天堂福利天堂| 女同激情久久av久久| 精品176二区| 国产精品网曝门| 成人黄色在线观看| 妺妺窝人体色www婷婷| 麻豆精品av| 日韩一区二区三区国产| 亚洲成人av观看| 偷拍视频一区二区| 蜜桃视频在线观看一区二区| 国产wwwwxxxx| 欧美一区二区成人| heyzo在线| 欧美精品七区| 久久成人综合网| 九九热精品在线观看| 亚洲国产小视频在线观看| 亚洲校园激情春色| 亚洲资源视频| 国产精品88av| 青草视频在线观看免费| 国产性猛交xxxx免费看久久| 中文字幕日韩亚洲| 丰满的少妇愉情hd高清果冻传媒 | 精品人妻午夜一区二区三区四区| 欧美大荫蒂xxx| 日韩最新在线| 亚洲一区在线不卡| 夜夜嗨av一区二区三区四季av | 国产亚洲精彩久久| 天堂а√在线中文在线| 97久久人人超碰| 中文字幕人妻精品一区| 色综合久久久888| 国产不卡av一区二区| 97超碰人人爽| 亚洲成人777| www.国产精品.com| caoporn国产精品免费公开| 久久av最新网址| 欧美第一页在线观看| 亚洲欧美日韩成人|