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

Git系列(六):如何搭建你自己的Git服務(wù)器

系統(tǒng) Linux 開源
現(xiàn)在我們將要學(xué)習(xí)如何搭建 git 服務(wù)器,如何編寫自定義的 Git 鉤子來在特定的事件觸發(fā)相應(yīng)的動作(例如通知),或者是發(fā)布你的代碼到一個站點(diǎn)。我們主要討論的還是以一個使用者的身份與 Git 進(jìn)行交互。這篇文章中我將討論 Git 的管理,并且設(shè)計一個靈活的 Git 框架。

[[172092]]

現(xiàn)在我們將要學(xué)習(xí)如何搭建 git 服務(wù)器,如何編寫自定義的 Git 鉤子來在特定的事件觸發(fā)相應(yīng)的動作(例如通知),或者是發(fā)布你的代碼到一個站點(diǎn)。

直到現(xiàn)在,我們主要討論的還是以一個使用者的身份與 Git 進(jìn)行交互。這篇文章中我將討論 Git 的管理,并且設(shè)計一個靈活的 Git 框架。你可能會覺得這聽起來是 “高階 Git 技術(shù)” 或者 “只有狂熱粉才能閱讀”的一句委婉的說法,但是事實(shí)是這里面的每個任務(wù)都不需要很深的知識或者其他特殊的訓(xùn)練,就能基本理解 Git 的工作原理,有可能需要一丁點(diǎn)關(guān)于 Linux 的知識。

共享 Git 服務(wù)器

創(chuàng)建你自己的共享 Git 服務(wù)器意外地簡單,而且在很多情況下,遇到的這點(diǎn)麻煩是完全值得的。不僅僅是因?yàn)樗WC你有權(quán)限查看自己的代碼,它還可以通過擴(kuò)展為 Git 的使用敞開了一扇大門,例如個人 Git 鉤子、***制的數(shù)據(jù)存儲、和持續(xù)集成與分發(fā)(CI & CD)。

如果你知道如何使用 Git 和 SSH,那么你已經(jīng)知道怎么創(chuàng)建一個 Git 服務(wù)器了。Git 的設(shè)計方式,就是讓你在創(chuàng)建或者 clone 一個倉庫的時候,就完成了一半服務(wù)器的搭建。然后允許用 SSH 訪問倉庫,而且任何有權(quán)限訪問的人都可以使用你的倉庫作為 clone 的新倉庫的基礎(chǔ)。

但是,這是一個小的點(diǎn)對點(diǎn)環(huán)境(ad-hoc)。按照一些方案你可以創(chuàng)建一些帶有同樣的功能的設(shè)計優(yōu)良的 Git 服務(wù)器,同時有更好的拓展性。

首要之事:確認(rèn)你的用戶們,現(xiàn)在的用戶以及之后的用戶都要考慮。如果你是唯一的用戶那么沒有任何改動的必要。但是如果你試圖邀請其他的代碼貢獻(xiàn)者使用,那么你應(yīng)該允許一個專門的分享系統(tǒng)用戶給你的開發(fā)者們。

假定你有一個可用的服務(wù)器(如果沒有,這不成問題,Git 會幫忙解決,CentOS 的 樹莓派 3 是個不錯的開始),然后***步就是只允許使用 SSH 密鑰認(rèn)證的 SSH 登錄。這比使用密碼登錄安全得多,因?yàn)檫@可以免于暴力破解,也可以通過直接刪除用戶密鑰而禁用用戶。

一旦你啟用了 SSH 密鑰認(rèn)證,創(chuàng)建 gituser 用戶。這是給你的所有授權(quán)的用戶們的公共用戶: 

  1. $ su -c 'adduser gituser' 

然后切換到剛創(chuàng)建的 gituser 用戶,創(chuàng)建一個 ~/.ssh 的框架,并設(shè)置好合適的權(quán)限。這很重要,如果權(quán)限設(shè)置得太開放會使自己所保護(hù)的 SSH 沒有意義。

  1. $ su - gituser 
  2. $ mkdir .ssh && chmod 700 .ssh 
  3. $ touch .ssh/authorized_keys 
  4. $ chmod 600 .ssh/authorized_keys 

authorized_keys 文件里包含所有你的開發(fā)者們的 SSH 公鑰,你開放權(quán)限允許他們可以在你的 Git 項(xiàng)目上工作。他們必須創(chuàng)建他們自己的 SSH 密鑰對然后把他們的公鑰給你。復(fù)制公鑰到 gituser 用戶下的 authorized_keys 文件中。例如,為一個叫 Bob 的開發(fā)者,執(zhí)行以下命令:

  1. $ cat ~/path/to/id_rsa.bob.pub >> /home/gituser/.ssh/authorized_keys 

只要開發(fā)者 Bob 有私鑰并且把相對應(yīng)的公鑰給你,Bob 就可以用 gituser 用戶訪問服務(wù)器。

但是,你并不是想讓你的開發(fā)者們能使用服務(wù)器,即使只是以 gituser 的身份訪問。你只是想給他們訪問 Git 倉庫的權(quán)限。因?yàn)檫@個特殊的原因,Git 提供了一個限制的 shell,準(zhǔn)確的說是 git-shell。以 root 身份執(zhí)行以下命令,把 git-shell 添加到你的系統(tǒng)中,然后設(shè)置成 gituser 用戶的默認(rèn) shell。

  1. # grep git-shell /etc/shells || su -c "echo `which git-shell` >> /etc/shells" 
  2. # su -c 'usermod -s git-shell gituser' 

現(xiàn)在 gituser 用戶只能使用 SSH 來 push 或者 pull Git 倉庫,并且無法使用任何一個可以登錄的 shell。你應(yīng)該把你自己添加到和 gituser 一樣的組中,在我們的樣例服務(wù)器中這個組的名字也是 gituser。

舉個例子:

  1. # usermod -a -G gituser seth 

僅剩下的一步就是創(chuàng)建一個 Git 倉庫。因?yàn)闆]有人能在服務(wù)器上直接與 Git 交互(也就是說,你之后不能 SSH 到服務(wù)器然后直接操作這個倉庫),所以創(chuàng)建一個空的倉庫 。如果你想使用這個放在服務(wù)器上的倉庫來完成工作,你可以從它的所在處 clone 下來,然后在你的 home 目錄下進(jìn)行工作。

嚴(yán)格地講,你不是必須創(chuàng)建這個空的倉庫;它和一個正常的倉庫一樣工作。但是,一個空的倉庫沒有工作分支(working tree) (也就是說,使用 checkout 并沒有任何分支顯示)。這很重要,因?yàn)椴辉试S遠(yuǎn)程使用者們 push 到一個有效的分支上(如果你正在 dev 分支工作然后突然有人把一些變更 push 到你的工作分支,你會有怎么樣的感受?)。因?yàn)橐粋€空的倉庫可以沒有有效的分支,所以這不會成為一個問題。

你可以把這個倉庫放到任何你想放的地方,只要你想要放開權(quán)限給用戶和用戶組,讓他們可以在倉庫下工作。千萬不要保存目錄到比如說一個用戶的 home 目錄下,因?yàn)槟抢镉袊?yán)格的權(quán)限限制。保存到一個常規(guī)的共享地址,例如 /opt 或者 /usr/local/share。

以 root 身份創(chuàng)建一個空的倉庫:

  1. # git init --bare /opt/jupiter.git 
  2. # chown -R gituser:gituser /opt/jupiter.git 
  3. # chmod -R 770 /opt/jupiter.git 

現(xiàn)在任何一個用戶,只要他被認(rèn)證為 gituser 或者在 gituser 組中,就可以從 jupiter.git 庫中讀取或者寫入。在本地機(jī)器嘗試以下操作:

  1. $ git clone gituser@example.com:/opt/jupiter.git jupiter.clone 
  2. Cloning into 'jupiter.clone'... 
  3. Warning: you appear to have cloned an empty repository. 

謹(jǐn)記:開發(fā)者們一定要把他們的 SSH 公鑰加入到 gituser 用戶下的 authorized_keys 文件里,或者說,如果他們有服務(wù)器上的用戶(如果你給了他們用戶),那么他們的用戶必須屬于 gituser 用戶組。

Git 鉤子

運(yùn)行你自己的 Git 服務(wù)器最贊的一件事之一就是可以使用 Git 鉤子。Git 托管服務(wù)有時提供一個鉤子類的接口,但是他們并不會給你真正的 Git 鉤子來讓你訪問文件系統(tǒng)。Git 鉤子是一個腳本,它將在一個 Git 過程的某些點(diǎn)運(yùn)行;鉤子可以運(yùn)行在當(dāng)一個倉庫即將接收一個 commit 時、或者接受一個 commit 之后,或者即將接收一次 push 時,或者一次 push 之后等等。

這是一個簡單的系統(tǒng):任何放在 .git/hooks 目錄下的腳本、使用標(biāo)準(zhǔn)的命名體系,就可按設(shè)計好的時間運(yùn)行。一個腳本是否應(yīng)該被運(yùn)行取決于它的名字; pre-push 腳本在 push 之前運(yùn)行,post-receive 腳本在接受 commit 之后運(yùn)行等等。這或多或少的可以從名字上看出來。

腳本可以用任何語言寫;如果在你的系統(tǒng)上有可以執(zhí)行的腳本語言,例如輸出 ‘hello world’ ,那么你就可以這個語言來寫 Git 鉤子腳本。Git 默認(rèn)帶了一些例子,但是并不有啟用。

想要動手試一個?這很簡單。如果你沒有現(xiàn)成的 Git 倉庫,首先創(chuàng)建一個 Git 倉庫:

  1. $ mkdir jupiter 
  2. $ cd jupiter 
  3. $ git init . 

然后寫一個 “hello world” 的 Git 鉤子。因?yàn)槲覟榱酥С掷吓f系統(tǒng)而使用 tsch,所以我仍然用它作為我的腳本語言,你可以自由的使用自己喜歡的語言(Bash,Python,Ruby,Perl,Rust,Swift,Go):

  1. $ echo "#\!/bin/tcsh" > .git/hooks/post-commit 
  2. $ echo "echo 'POST-COMMIT SCRIPT TRIGGERED'" >> ~/jupiter/.git/hooks/post-commit 
  3. $ chmod +x ~/jupiter/.git/hooks/post-commit 

現(xiàn)在測試它的輸出:

  1. $ echo "hello world" > foo.txt 
  2. $ git add foo.txt 
  3. $ git commit -m 'first commit' 
  4. ! POST-COMMIT SCRIPT TRIGGERED 
  5. [master (root-commit) c8678e0] first commit 
  6. 1 file changed, 1 insertion(+) 
  7. create mode 100644 foo.txt 

現(xiàn)在你已經(jīng)實(shí)現(xiàn)了:你的***個有功能的 Git 鉤子。

有名的 push-to-web 鉤子

Git 鉤子***的用法就是自動 push 更改的代碼到一個正在使用中的產(chǎn)品級 Web 服務(wù)器目錄下。這是擺脫 FTP 的很好的方式,對于正在使用的產(chǎn)品保留完整的版本控制,整合并自動化內(nèi)容的發(fā)布。

如果操作正確,網(wǎng)站發(fā)布工作會像以前一樣很好的完成,而且在某種程度上,很精準(zhǔn)。Git 真的好棒。我不知道誰最初想到這個主意,但是我是從 Emacs 和 Git 方面的專家,IBM 的 Bill von Hagen 那里***次聽到它的。他的文章包含關(guān)于這個過程的權(quán)威介紹:Git 改變了分布式網(wǎng)頁開發(fā)的游戲規(guī)則

Git 變量

每一個 Git 鉤子都有一系列不同的變量對應(yīng)觸發(fā)鉤子的不同 Git 行為。你需不需要這些變量,主要取決于你寫的程序。如果你只是需要一個當(dāng)某人 push 代碼時候的通用郵件通知,那么你就不需要什么特殊的東西,甚至也不需要編寫額外的腳本,因?yàn)橐呀?jīng)有現(xiàn)成的適合你的樣例腳本。如果你想在郵件里查看 commit 信息和 commit 的作者,那么你的腳本就會變得相對麻煩些。

Git 鉤子并不是被用戶直接執(zhí)行,所以要弄清楚如何收集可能會混淆的重要信息。事實(shí)上,Git 鉤子腳本類似于其他的腳本,像 BASH、Python、C++ 等等一樣從標(biāo)準(zhǔn)輸入讀取參數(shù)。不同的是,我們不會給它提供這個輸入,所以,你在使用的時候,需要知道可能的輸入?yún)?shù)。

在寫 Git 鉤子之前,看一下 Git 在你的項(xiàng)目目錄下 .git/hooks 目錄中提供的一些例子。舉個例子,在這個 pre-push.sample 文件里,注釋部分說明了如下內(nèi)容:

  1. # $1 -- 即將 push 的遠(yuǎn)程倉庫的名字 
  2. # $2 -- 即將 push 的遠(yuǎn)程倉庫的 URL 
  3. # 如果 push 的時候,并沒有一個命名的遠(yuǎn)程倉庫,那么這兩個參數(shù)將會一樣。 
  4. # 提交的信息將以下列形式按行發(fā)送給標(biāo)準(zhǔn)輸入 
  5. # <local ref> <local sha1> <remote ref> <remote sha1> 

并不是所有的例子都是這么清晰,而且關(guān)于鉤子獲取變量的文檔依舊缺乏(除非你去讀 Git 的源碼)。但是,如果你有疑問,你可以從線上其他用戶的嘗試中學(xué)習(xí),或者你只是寫一些基本的腳本,比如 echo $1, $2, $3 等等。

分支檢測示例

我發(fā)現(xiàn),對于生產(chǎn)環(huán)境來說有一個共同的需求,就是需要一個只有在特定分支被修改之后,才會觸發(fā)事件的鉤子。以下就是如何跟蹤分支的示例。

首先,Git 鉤子本身是不受版本控制的。 Git 并不會跟蹤它自己的鉤子,因?yàn)閷τ阢^子來說,它是 Git 的一部分,而不是你倉庫的一部分。所以,Git 鉤子可以監(jiān)控你的 Git 服務(wù)器上的一個空倉庫的 commit 記錄和 push 記錄,而不是你本地倉庫的一部分。

我們來寫一個 post-receive(也就是說,在 commit 被接受之后觸發(fā))鉤子。***步就是需要確定分支名:

  1. #!/bin/tcsh 
  2. foreach arg ( $< ) 
  3.   set argv = ( $arg ) 
  4.   set refname = $1 
  5. end 

這個 for 循環(huán)用來讀入***個參數(shù) $1 ,然后循環(huán)用第二個參數(shù) $2 去覆蓋它,然后用第三個參數(shù) $3 再這樣。在 Bash 中有一個更好的方法,使用 read 命令,并且把值放入數(shù)組里。但是,這里是 tcsh,并且變量的順序可以預(yù)測的,所以,這個方法也是可行的。

當(dāng)我們有了 commit 記錄的 refname,我們就能使用 Git 去找到這個分支的供人看的名字:

  1. set branch = `git rev-parse --symbolic --abbrev-ref $refname` 
  2. echo $branch #DEBUG 

然后把這個分支名和我們想要觸發(fā)的事件的分支名關(guān)鍵字進(jìn)行比較:

  1. if ( "$branch" == "master" ) then 
  2.   echo "Branch detected: master" 
  3.   git \ 
  4.     --work-tree=/path/to/where/you/want/to/copy/stuff/to \ 
  5.     checkout -f $branch || echo "master fail" 
  6. else if ( "$branch" == "dev" ) then 
  7.   echo "Branch detected: dev" 
  8.   Git \ 
  9.     --work-tree=/path/to/where/you/want/to/copy/stuff/to \ 
  10.     checkout -f $branch || echo "dev fail" 
  11.   else 
  12.     echo "Your push was successful." 
  13.     echo "Private branch detected. No action triggered." 
  14. endif 

給這個腳本分配可執(zhí)行權(quán)限:

  1. $ chmod +x ~/jupiter/.git/hooks/post-receive 

現(xiàn)在,當(dāng)一個用戶提交到服務(wù)器的 master 分支,那些代碼就會被復(fù)制到一個生產(chǎn)環(huán)境的目錄,提交到 dev 分支則會被復(fù)制到另外的地方,其他分支將不會觸發(fā)這些操作。

同時,創(chuàng)造一個 pre-commit 腳本也很簡單。比如,判斷一個用戶是否在他們不該 push 的分支上 push 代碼,或者對 commit 信息進(jìn)行解析等等。

Git 鉤子也可以變得復(fù)雜,而且它們因?yàn)?Git 的工作流的抽象層次不同而變得難以理解,但是它們確實(shí)是一個強(qiáng)大的系統(tǒng),讓你能夠在你的 Git 基礎(chǔ)設(shè)施上針對所有的行為進(jìn)行對應(yīng)的操作。如果你是一個 Git 重度用戶,或者一個全職 Git 管理員,那么 Git 鉤子是值得學(xué)習(xí)的,只有當(dāng)你熟悉這個過程,你才能真正掌握它。

在我們這個系列下一篇也是***一篇文章中,我們將會學(xué)習(xí)如何使用 Git 來管理非文本的二進(jìn)制數(shù)據(jù),比如音頻和圖片。

責(zé)任編輯:龐桂玉 來源: Linux中國
相關(guān)推薦

2014-03-06 09:23:19

Git服務(wù)器Github

2021-02-05 05:29:51

服務(wù)器GitGogs

2022-10-10 12:15:38

CentOSgit服務(wù)器

2023-04-01 18:19:38

團(tuán)隊MIT開源

2020-01-18 18:41:13

GitGit服務(wù)器開源

2011-04-11 11:05:07

FreeBSD 8.1

2015-07-08 09:57:59

Git服務(wù)器分步詳解

2021-03-09 00:05:40

服務(wù)器GiteaGogs

2013-04-02 10:13:35

Git服務(wù)器系統(tǒng)GitHub

2022-08-24 08:33:27

Git系統(tǒng)Linux

2020-08-14 08:00:39

Git數(shù)據(jù)層控制層

2016-08-05 12:58:44

GitLinux開源

2019-12-03 10:45:35

NodeMySQLGit

2016-08-03 15:32:50

GitLinux開源

2016-08-02 11:06:34

開源Linux版本控制

2018-02-28 17:05:19

UbuntuGo語言Git

2011-08-11 09:28:48

2021-03-30 08:43:29

黑客PHP團(tuán)隊Git

2018-03-26 10:20:13

2012-02-27 13:56:19

Java服務(wù)器
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

久久久久久久999| 女人让男人操自己视频在线观看| 全球中文成人在线| 国产九色精品成人porny | 操bbb操bbb| 国产国语性生话播放| caopen在线视频| 99精品视频在线观看免费播放| 亚洲成a人片在线不卡一二三区| 国产日韩av高清| xxx在线播放| 欧美人与动牲性行为| 狠狠色伊人亚洲综合成人| 亚洲一区二区久久久| 青青草视频在线免费播放| 99热这里只有精品1| 欧美肥老太太性生活| 日韩欧美国产一区二区| 国产精品久久久久久久久久直播| www欧美com| 福利一区二区免费视频| 国产亚洲短视频| 18久久久久久| 亚洲 欧美 日韩在线| 9191在线| 免费看日韩精品| 国产亚洲欧美日韩美女| 亚洲精品综合久久中文字幕| 亚洲国产精品久久久久| 亚洲伊人婷婷| 久久久久精彩视频| 国产成人精品免费视| 色爱区综合激月婷婷| 明星裸体视频一区二区| 亚洲欧美偷拍视频| 国产精品一区二区av日韩在线| 欧美一卡二卡在线| bt天堂新版中文在线地址| 亚洲大尺度视频| 亚洲黄色三级| 亚洲女人天堂av| 91成人在线观看喷潮蘑菇| 美女免费久久| 国产剧情一区二区| 国产精品入口免费视频一| 成人午夜免费影院| 激情综合五月| 亚洲午夜精品17c| 欧美高清视频一区| 亚洲视频在线观看免费视频| 五月开心六月丁香综合色啪| 亚洲网站在线播放| 爱爱的免费视频| 国产成人精品一区二区三区视频| 色综合色综合色综合色综合色综合| 日本一区二区三区视频在线观看| 国产精品欧美激情在线| 国产综合视频| 亚洲午夜未删减在线观看 | 国产91在线观看| 91wwwcom在线观看| 日韩三级一区二区三区| 精品精品99| 日韩亚洲欧美中文三级| 久久久999视频| 日本福利专区在线观看| 国产91露脸合集magnet| 91免费版网站在线观看| 五月天婷婷久久| 99久久99久久精品国产片桃花| 亚洲一区第一页| 国产精品www爽爽爽| 五月亚洲婷婷| 在线一区二区三区四区| 97中文字幕在线| 欧美xxxx视频| 亚洲va在线va天堂| 免费裸体美女网站| 午夜伦理在线视频| 中文字幕精品三区| 久草一区二区| 99产精品成人啪免费网站| 久久久精品网| 久久久久久97| 中文字幕第15页| 欧美片第1页综合| 中文字幕精品国产| 亚洲成av人片在线观看无| 日本国产精品| 日韩午夜三级在线| 国产一卡二卡三卡四卡| 国产精品久久久久久久久久辛辛| 色综合久久中文字幕综合网| 亚洲黄色av网址| 在线观看爽视频| 亚洲在线视频一区| 异国色恋浪漫潭| 成人午夜影视| 久久久久久电影| 国产一区二区无遮挡| 国产又粗又黄又爽的视频| 久久久夜夜夜| 91成人免费观看网站| wwwwww在线观看| 国产精品一区二区三区乱码| 麻豆91蜜桃| 免费的黄网站在线观看| 欧美日韩国产麻豆| 日本一本中文字幕| a视频在线免费看| 欧美日韩激情美女| 欧美日韩久久婷婷| 怡红院成人在线| 黑人狂躁日本妞一区二区三区 | 人人爽香蕉精品| 欧美亚洲另类在线| 日韩精品一区二区在线播放| 一区二区亚洲| 国内精品久久久久久中文字幕 | 亚洲图片自拍偷拍| 欧美黄色性生活| 外国成人在线视频| 精品视频偷偷看在线观看| 日批在线观看视频| 在线观看国产精品入口| 蜜臀久久99精品久久久久久宅男| 国产3级在线观看| 91av精品| 欧美极品少妇与黑人| 在线播放一级片| 久久综合久久鬼色| 日韩av电影在线观看| 国产天堂在线| 国产精品无遮挡| 亚欧无线一线二线三线区别| 午夜久久中文| 欧美精品一区二区三区在线播放| 亚洲av成人片色在线观看高潮| 天天插综合网| 国产在线精品播放| www.久久热.com| 色偷偷久久一区二区三区| 中文字幕 日本| 亚洲精品裸体| 国产视频99| segui88久久综合9999| 欧美午夜片在线免费观看| 黄色国产在线视频| 午夜久久久久| 欧美在线视频播放| 一本到在线视频| 国产欧美一区二区在线观看| 国产又粗又硬又长| 91成人精品观看| 亚洲国产日韩精品在线| 国产第一页在线播放| 丝袜诱惑亚洲看片| 欧美性色黄大片人与善| 欧美黑人粗大| 日韩欧美国产高清| 国产精品毛片一区二区| 午夜一区不卡| 成人国内精品久久久久一区| 男人天堂手机在线观看| 久久久久久久网| 日韩中文字幕二区| 成人一区二区| 7777kkkk成人观看| 偷拍自拍在线| 一区二区三区中文免费| 国产熟女高潮视频| 视频一区中文字幕精品| 欧美美女18p| 懂色av蜜臀av粉嫩av喷吹| 国产拍揄自揄精品视频麻豆| 亚洲欧美日韩一级| 亚洲综合色网| 国产一区二区视频在线免费观看| 欧美天堂视频| 久久天天躁日日躁| 国产成人自拍偷拍| 不卡的av在线播放| 九九久久九九久久| 国产精品亚洲成在人线| 亚洲美女在线观看| 一级黄色免费片| 亚洲一区二区三区视频在线 | 欧美精品影院| 91国产中文字幕| 91精品专区| 欧美成人福利视频| 天堂网av2018| 国产成人午夜高潮毛片| 一本色道久久综合亚洲二区三区| 国产色99精品9i| 欧美亚洲一区在线| 免费大片在线观看www| 亚洲第一天堂无码专区| 中国老头性行为xxxx| 久久久影院官网| 天天干天天操天天做| 欧美日韩性在线观看| 97操在线视频| 欧美色网在线| 国内精品久久久久久久久| 一本一道波多野毛片中文在线| 日韩欧美在线影院| 伊人久久久久久久久久久久| 一区二区三区在线看| 国产一区二区三区四区在线| 丰满少妇久久久久久久| 99sesese| 玖玖视频精品| 久草视频这里只有精品| 久久久综合色| 欧美精品一区二区三区四区五区| 欧美国产中文高清| 成人激情黄色网| 综合在线影院| 午夜伦理精品一区| 天天综合在线视频| 欧美日韩免费看| 国产1区2区3区4区| 成人小视频免费观看| 国产一区二区视频播放| 久久久久久久久久久久久久久久久久 | 久久无码精品丰满人妻| 国内精品伊人久久久久影院对白| 国产二区视频在线播放| 欧美视频官网| 精品国产无码在线| 91麻豆精品国产91久久久平台| 精品免费国产| 亚洲综合在线电影| 97精品在线视频| 国产盗摄一区二区| 亚洲精品国产综合区久久久久久久| 亚洲在线精品视频| 欧美在线观看视频在线| 91久久久久久久久久久久久久| 精品在线免费视频| 男人天堂av片| 欧美精品18| 久久久久久久久久久久久国产| 色乱码一区二区三区网站| 亚洲综合自拍一区| 韩日毛片在线观看| 欧美激情一区二区久久久| 中文av资源在线| 日韩精品电影网| 曰批又黄又爽免费视频| 日本电影亚洲天堂一区| 好吊色在线视频| 综合亚洲深深色噜噜狠狠网站| 日本女人性视频| 噜噜噜91成人网| 97超碰青青草| 久久国产毛片| 国产福利一区视频| 国产一区二区三区四区老人| 日韩视频在线免费播放| 欧美日韩国产亚洲一区| 精品一二三四五区| 在线视频亚洲| 中文字幕一区二区三区四区五区六区 | 欧美中文在线字幕| 日韩av中字| 国产精品日日摸夜夜添夜夜av| 色综合视频一区二区三区44| 成人激情视频在线| 97青娱国产盛宴精品视频| 国产精品久久久久久久9999| 九色91在线| 午夜免费久久久久| 激情开心成人网| 国产精品亚洲美女av网站| 妞干网免费在线视频| 啪一啪鲁一鲁2019在线视频| 欧美日韩视频免费观看| 成人伊人精品色xxxx视频| 成人av综合网| 欧美资源一区| 91精品国产调教在线观看| 久久男人资源站| 久久精品女人天堂| 国产永久免费网站| 日本欧美一区二区| 樱花草www在线| 91色porny在线视频| 爱情岛论坛亚洲自拍| 99精品热视频| 久草视频福利在线| 国产欧美日韩激情| 久久久精品99| 欧美怡红院视频| 亚洲黄色小说网| 国产一区二区三区在线观看网站 | 欧美日韩在线国产| 精品国产户外野外| 久久免费黄色网址| 色偷偷久久人人79超碰人人澡| 国产精品怡红院| 日韩精品免费看| 成人video亚洲精品| 欧美一级免费看| 日韩精品免费视频一区二区三区 | 天堂а在线中文在线无限看推荐| 日韩在线视频免费观看| 波多野结衣一区二区| 欧美日韩国产成人在线观看| 日韩视频网站在线观看| av资源一区二区| **爰片久久毛片| 91成人免费观看| 中文字幕精品影院| 欧美三级网色| 亚洲激情二区| 午夜激情影院在线观看| 久久久777精品电影网影网| 国产福利视频网站| 国产精品久久午夜夜伦鲁鲁| 91在线无精精品白丝| 中文一区在线播放| 日韩精品视频免费播放| 欧美一级免费观看| 在线观看a视频| 国产999精品久久久影片官网| 欧美电影网址| 好吊妞www.84com只有这里才有精品 | 亚洲第五色综合网| 国产黄大片在线观看画质优化| 国产成一区二区| 色综合视频一区二区三区44| 日本欧美精品久久久| 国产精品久久久免费| 亚洲无吗一区二区三区| 麻豆成人免费电影| 波多野结衣电影免费观看| 国产精品美女久久久久久| 日本一本在线观看| 亚洲免费成人av电影| 涩涩视频网站在线观看| 国产一区福利视频| 日韩视频在线一区二区三区| av免费观看不卡| 亚洲成人一区二区在线观看| 天天爽夜夜爽人人爽| 亚洲国产精品嫩草影院久久| 欧美hdxxx| 国产精品亚洲一区| 99精品视频免费| jizz日本免费| 欧美性xxxxx极品娇小| 日本电影一区二区在线观看| 日韩中文在线中文网在线观看| 欧美精选视频一区二区| 亚洲高清不卡一区| 欧美日韩国产免费观看| 久久久久99人妻一区二区三区| 一区二区三区四区在线免费观看| www.天堂av.com| 一个色综合导航| 四虎视频在线精品免费网址| 天天综合中文字幕| 国产风韵犹存在线视精品| 国产一级中文字幕| 亚洲精品一区中文| 国产一区一一区高清不卡| 国产经典一区二区三区| 日韩久久精品| 在线免费看v片| 亚洲大片在线观看| 色视频在线观看免费| 国产激情综合五月久久| 国产精品成人一区二区不卡| 亚洲av无码成人精品区| 欧美日韩国产限制| 成年人在线观看| 99re在线视频观看| 香蕉国产精品偷在线观看不卡| 国产又粗又黄又猛| 日韩欧美一卡二卡| 成人美女黄网站| 国产综合第一页| 日韩极品在线观看| 国产av一区二区三区传媒| 日韩毛片视频在线看| 黄色一级a毛片| 久久99精品国产99久久6尤物| 风间由美一区二区av101| 4444在线观看| 91视频在线观看免费| 亚洲熟妇无码久久精品| 欧美极品美女视频网站在线观看免费| 色棕色天天综合网| 欧美牲交a欧美牲交aⅴ免费下载| 国产精品久久久久久妇女6080| 国产成人麻豆免费观看| 久久99精品久久久久久琪琪| 免费成人av|