精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

国产精品永久在线| 亚洲最大在线视频| 北条麻妃在线视频观看| 黄色在线免费观看大全| 老司机免费视频一区二区| 久久影视电视剧免费网站清宫辞电视 | 亚洲综合男人的天堂| 久久精品国产第一区二区三区最新章节 | 噜噜噜91成人网| 久久精品国产91精品亚洲| 国产免费一区二区三区最新6| 国产超碰精品| 亚洲一区二区在线视频| 午夜精品短视频| 国产综合无码一区二区色蜜蜜| 久久综合九色| 国产69精品久久久久9| 精品人体无码一区二区三区| gogo人体一区| 欧美在线制服丝袜| 国产精品999视频| 国产黄色在线观看| 国产色一区二区| 精品无码久久久久久久动漫| 国产男女无套免费网站| 日韩成人av影视| 欧美在线观看日本一区| 黄色在线观看免费| 99热在线成人| 日韩在线观看你懂的| 久久久久国产精品区片区无码| 亚洲精品大全| 欧美亚洲日本国产| 久久国产乱子伦免费精品| 国产又色又爽又黄刺激在线视频| 国产精品二三区| 日韩精品一线二线三线| 亚洲人成色777777精品音频| 国产91综合一区在线观看| 成人精品视频在线| 伊人久久中文字幕| 玖玖国产精品视频| 欧美一区二区三区免费视| 久草资源在线视频| 欧美日韩一区二区高清| 久久国产精品久久久久久久久久| 99在线视频免费| 国产一区二区三区91| 精品丝袜一区二区三区| 毛片网站免费观看| 亚洲专区视频| 亚洲欧洲午夜一线一品| 精品人妻互换一区二区三区| 国产欧美日韩精品高清二区综合区| 日韩电影在线观看永久视频免费网站| 69xxx免费视频| 91久久精品无嫩草影院| 日韩欧美精品在线| 亚洲成人福利视频| 中文字幕av一区二区三区四区| 日韩三区在线观看| 97中文字幕在线观看| 无码国模国产在线观看| 日韩精品影音先锋| 亚洲av成人片无码| 全国精品免费看| 亚洲欧美日韩国产中文专区| 日韩毛片无码永久免费看| 第一sis亚洲原创| 色系列之999| 91免费公开视频| 欧美黄色aaaa| 午夜精品在线视频| 少妇高潮av久久久久久| 免费的国产精品| 亚洲伊人久久综合| 人妻丰满熟妇av无码区hd| caoporen国产精品视频| 欧美日韩综合久久| 免费网站成人| 午夜精品福利久久久| 欧洲av无码放荡人妇网站| 在线成人视屏| 日韩精品一区二区三区视频| 黄色性生活一级片| 五月精品视频| 久久久久久久久亚洲| www.国产一区二区| 国产在线精品免费av| 国产福利一区二区三区在线观看| 色播色播色播色播色播在线| 中文字幕不卡一区| 欧美图片激情小说| 97精品国产99久久久久久免费| 在线不卡中文字幕| 欧美大片免费播放器| 99re66热这里只有精品8| 久久久久国产精品免费网站| 日本视频免费观看| 国产精品一级片| 欧美专区一二三| 日韩专区av| 欧美色老头old∨ideo| 色悠悠在线视频| 99久久婷婷| 国产91精品黑色丝袜高跟鞋| 国产美女裸体无遮挡免费视频| 91在线视频免费91| 老汉色影院首页| 六月婷婷综合| 精品欧美乱码久久久久久1区2区| 波多野结衣一二三四区| 亚洲福利久久| www日韩av| 免费a在线看| 色天天综合久久久久综合片| 中文字幕制服丝袜| 天天综合国产| 国产精品成人在线| 亚洲人在线观看视频| 亚洲三级电影网站| www.亚洲高清| 国产成人1区| 992tv在线成人免费观看| 精品人妻一区二区三区蜜桃| 国产欧美一区二区精品秋霞影院| www..com日韩| 亚洲成人五区| 久久综合国产精品台湾中文娱乐网| 波多野结衣 久久| 99这里都是精品| 996这里只有精品| 欧美国产中文高清| 久久九九免费视频| 亚洲一二区视频| 国产欧美一区二区精品久导航 | 国产高清精品在线| 最新欧美日韩亚洲| 久久人人视频| 中文字幕在线日韩| 中文字字幕在线观看| 国产情人综合久久777777| 欧美精品99久久| 亚洲精品亚洲人成在线| 91高清免费视频| 丝袜视频国产在线播放| 精品久久香蕉国产线看观看亚洲 | 91影院在线播放| 国产精品午夜久久| 色婷婷综合网站| 91免费精品| 91在线免费视频| 超碰人人在线| 欧美成人猛片aaaaaaa| 久久精品www| 成人av电影在线| 亚洲美免无码中文字幕在线 | 51xx午夜影福利| 久久久久毛片免费观看| 欧美成人中文字幕在线| 精品二区在线观看| 午夜国产不卡在线观看视频| 精品人妻伦一二三区久| 国产日韩高清一区二区三区在线| 久久久久se| 免费电影日韩网站| 影音先锋欧美精品| 97人妻一区二区精品免费视频| 亚洲男人的天堂在线观看| 日本中文字幕有码| 国产日韩视频| 亚洲国产欧洲综合997久久| 日本成人在线网站| 欧美激情亚洲激情| 美国成人毛片| 4438成人网| 日韩 欧美 精品| 久久久99精品久久| 日本网站在线看| 日韩一区二区免费看| 欧美亚洲国产免费| 欧美视频精品| 欧美激情一区二区久久久| 三级在线播放| 这里只有精品电影| 日韩女优在线观看| 中文字幕不卡一区| www.啪啪.com| 六月丁香婷婷色狠狠久久| 日本a在线天堂| 精品日韩一区| 91久久精品一区二区别| 亚洲欧美小说色综合小说一区| 少妇av一区二区三区| 亚洲第九十九页| 欧美午夜不卡视频| 国产午夜小视频| 最新高清无码专区| 在线免费观看麻豆| 国产成人精品免费在线| 91淫黄看大片| 亚洲国产黄色| 国产日本欧美在线| 国产一区99| 精品欧美日韩| 这里视频有精品| 国产日韩欧美夫妻视频在线观看 | 91在线视频精品| gay欧美网站| 欧美精品成人在线| 黄色网在线免费看| 伊人久久精品视频| 色综合888| 精品少妇一区二区三区免费观看| 一区二区视频播放| 色综合久久综合| 国产一级在线观看视频| 自拍偷拍亚洲激情| 欧美成人另类视频| 久久免费看少妇高潮| 性活交片大全免费看| 国产资源精品在线观看| 久久久精品麻豆| 国产精品久久久亚洲一区| 丝袜人妻一区二区三区| 91精品动漫在线观看| 亚洲欧美日韩精品久久久 | aaa国产精品视频| 亚洲va久久久噜噜噜| 国产一区高清| 国产精品欧美日韩久久| 国产精欧美一区二区三区蓝颜男同| 久久久久久久av| 最近中文字幕免费mv2018在线| 日韩有码片在线观看| 国产区视频在线| 亚洲欧洲一区二区三区在线观看 | 北条麻妃av高潮尖叫在线观看| 亚洲国产精品第一区二区| 无码人妻少妇伦在线电影| 国产精品二区影院| 18黄暴禁片在线观看| 国模吧视频一区| 免费拍拍拍网站| 国产精品红桃| 欧美视频在线观看网站| aa国产精品| 黄色片视频在线免费观看| 中日韩视频在线观看| 免费看的黄色大片| 久久久精品网| 伊人网在线综合| 国内精品伊人久久久久av影院| 国产美女视频免费看| 国产精品一区专区| 午夜福利三级理论电影| 不卡一区二区三区四区| 国产艳俗歌舞表演hd| 国产欧美一区二区在线观看| 美国美女黄色片| 综合色天天鬼久久鬼色| 99热精品免费| 午夜精品福利视频网站| 无码人妻丰满熟妇区五十路| 欧美日韩亚洲综合一区| 国产av无码专区亚洲av麻豆| 欧美zozozo| 欧美日韩视频精品二区| 色爱av美腿丝袜综合粉嫩av| 黄色网址在线免费| 性欧美xxxx视频在线观看| 欧美福利在线播放| 国产中文字幕日韩| 成人在线tv视频| 欧美一区二区视频17c| 天天射天天综合网| 成品人视频ww入口| 日本大胆欧美人术艺术动态| 91精品999| 99天天综合性| 香蕉成人在线视频| 亚洲成人精品影院| 天天干天天色综合| 日韩一区二区三区电影| 午夜国产在线观看| 久久精品99无色码中文字幕| 黄污视频在线观看| 国产精品女人网站| 91精品久久久久久综合五月天| 欧美日韩亚洲一区二区三区在线观看| 久久性感美女视频| 国产原创中文在线观看| 麻豆成人av在线| 国产又黄又粗又猛又爽的视频| 欧美精彩视频一区二区三区| 青娱乐国产精品| 欧美性欧美巨大黑白大战| 亚洲av无码一区二区三区性色| 亚洲免费视频一区二区| 在线中文字幕-区二区三区四区| 秋霞成人午夜鲁丝一区二区三区| 只有精品亚洲| 欧美一区1区三区3区公司| 亚洲色图88| av无码精品一区二区三区| 国产成人在线色| 中文字幕精品亚洲| 欧美日韩中文字幕| 性生活黄色大片| 最近2019年手机中文字幕| 咪咪网在线视频| www.久久久| 中文无码久久精品| jizz欧美激情18| 91麻豆国产福利在线观看| 青娱乐国产盛宴| 91精品婷婷国产综合久久竹菊| 免费在线黄色电影| 97人人做人人爱| 91麻豆精品激情在线观看最新| 在线免费观看成人网| 日韩和欧美的一区| 国产三级视频网站| 偷拍与自拍一区| 黄色av小说在线观看| 欧美成人剧情片在线观看| 久久天天久久| 一级日韩一区在线观看| 日本女人一区二区三区| 亚洲自拍偷拍一区二区| 午夜电影久久久| 熟妇人妻av无码一区二区三区| 久久国产加勒比精品无码| 亚洲精品一区av| 亚洲一区二区精品在线观看| 奇米精品一区二区三区在线观看| 巨胸大乳www视频免费观看| 五月婷婷久久综合| 色噜噜在线播放| 亚洲18私人小影院| 日本欧美韩国国产| 久久久久久久久久久久久国产精品| 99在线视频精品| 亚洲第一精品在线观看 | 91久久偷偷做嫩草影院| 中文字幕乱码亚洲无线精品一区| 亚洲a级黄色片| 亚洲天堂免费看| 午夜久久久久久久久久| 欧美国产乱视频| 精品国产午夜肉伦伦影院| 六月婷婷在线视频| 99r精品视频| 无码视频在线观看| 中文字幕亚洲一区在线观看| 99热播精品免费| 中文字幕一区二区三区最新 | 污污片在线免费视频| 成人午夜电影在线播放| 亚洲精品孕妇| av中文字幕免费观看| 91高清视频在线| 三区四区在线视频| 91精品天堂| 蜜桃伊人久久| 中文字幕求饶的少妇| 日韩欧美一区在线| 麻豆网站免费在线观看| 亚洲国产精品123| 国产精品综合一区二区| 日本少妇裸体做爰| 亚洲四色影视在线观看| 成人免费91| 欧美激情 国产精品| 欧美韩国日本一区| 精品国产伦一区二区三| 欧美整片在线观看| 外国成人激情视频| 久久人妻少妇嫩草av无码专区 | 国内亚洲精品| 97超碰人人看| 日韩欧中文字幕| 麻豆免费在线视频| 国产精品一区二区三区免费| 久久亚洲视频| 青青草激情视频| 亚洲精品视频网上网址在线观看| 看片一区二区| 女人天堂av手机在线| 综合婷婷亚洲小说| 美女欧美视频在线观看免费 | 天堂俺去俺来也www久久婷婷| 9久久婷婷国产综合精品性色 | 综合电影一区二区三区| 天天综合网在线| 91亚洲精品久久久| 麻豆成人精品| 国产一级久久久| 色噜噜亚洲精品中文字幕| 久久久免费毛片|