青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆 - 298  文章 - 377  trackbacks - 0
<2008年3月>
2425262728291
2345678
9101112131415
16171819202122
23242526272829
303112345

常用鏈接

留言簿(34)

隨筆分類

隨筆檔案

文章檔案

相冊

收藏夾

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

作者:indian

版本:v1.2

修訂:2008年1月24日11:45:35

出處:blog.kysf.net

版權:作者保留對本文的一切修改、發布等權力。任何人想要轉載本文部分或全部內容時,必須保留包括作者、版本、修訂、出處、版權,共五項信息。對本文的參考引用,則不受限制。

 

關鍵詞:subversion, 安裝配置, 權限, 目錄訪問

 

1 前言
2 基本概念
 2.1 什么是版本控制
 2.2 什么是 Subversion
 2.3 版本庫(repository)
3 安裝配置
 3.1 安裝獨立服務器 SVNServer
 3.2 安裝 ApacheSVN 服務器
4 FAQ
5 參考資料

 

 

1、前 言

 

花了72小時,終于把 Subversion 初步掌握了。從一個連“什么是版本控制”都不知道的門外漢,到配置出精確至每目錄訪問的入門者,中間還卡了一天時間。其中費了許多氣力,摸索實驗了多次,還差點放棄了,但是收獲是巨大的?,F把我的配置和學習過程寫下來,供大家參考,也讓初學者少走彎路。

由于本人不會 Unix/Linux (正在學習中),故僅以 Windows 平臺為例講解,Unix/Linux 平臺請參考相關資料。如其中有謬誤的地方,包括錯別字,請聯系我修訂。

技術在分享中進步!

 

 

2、基本概念

 

2.1、什么是版本控制

簡單點來說,版本控制就是數據倉庫,它可以記錄你對文件的每次更改。這樣,就算你在昏天黑地的改了幾個月后老板說不要了,還是按照過去那樣,你也不會抓狂,簡單的恢復版本操作就搞定一切。

 

2.2、什么是 Subversion

Subversion是一個自由/開源版本控制系統,它管理文件和目錄可以超越時間。一組文件存放在中心版本庫,這個版本庫很像一個普通的文件服務器,只是它可以記錄每一次文件和目錄的修改,這便使你可以取得數據以前的版本,從而可以檢查所作的更改。從這個方面看,許多人把版本控制系統當作一種“時間機器”。

Subversion可以通過網絡訪問它的版本庫,從而使用戶可以在不同的電腦上使用。一定程度上可以說,允許用戶在各自的地方修改同一份數據是促進協作。進展可能非常的迅速,并沒有一個所有的改變都會取得效果的通道,由于所有的工作都有歷史版本,你不必擔心由于失去某個通道而影響質量,如果存在不正確的改變,只要取消改變。

一些版本控制系統也是軟件配置管理(SCM)系統,這種系統經過特定的精巧設計來管理源代碼,有許多關于軟件開發的特性—本身理解編程語言、或者提供構建程序的工具。然而,Subversion不是這樣一個系統,它是一個通用系統,可以管理任何類型的文件集,對你這可能是源代碼,對別人,可能是一個貨物報價單或者是書稿等。

 

2.3、版本庫(repository)

Subversion 的核心就是 rpository ,中文翻譯成“版本庫”。就是位于服務器端,統一管理和儲存數據的地方。

 

 

3、安裝配置

 

3.1 安裝獨立服務器 SVNServer

環境

OS:Windows XP SP2

Web:Apache 2.2.6

SVN:svn-win32-1.4.6

 

一、準備工作

1、獲取 Subversion 服務器程序

到官方網站(http://subversion.tigris.org/)下載最新的服務器安裝程序。目前最新的是1.4.6版本,具體下載地址在:http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=8100&expandFolder=8100&folderID=91 ,注意找 for apache 2.2.x 版本的。

2、獲取 TortoiseSVN 客戶端程序

從官方網站 http://tortoisesvn.net/downloads 獲取最新的 TortoiseSVN 。TortoiseSVN 是一個客戶端程序,用來與 subvers 服務器端通訊。Subversion 自帶一個客戶端程序 svn.exe ,但 TortoiseSVN 更好操作,提高效率。

 

二、安裝服務器端和客戶端

首先安裝 Apache 2.2.6 ,具體安裝方法大家參考相關資料,或者參看我寫的《Windows下安裝Apache 2.2.x》。

其次安裝 Subversion(以下簡稱SVN)的服務器端和客戶端。下載下來的服務器端是個 zip 壓縮包,直接解壓縮即可,比如我解壓到 E:\subversion 。客戶端安裝文件是個 exe 可執行文件,直接運行按提示安裝即可,客戶端安裝完成后提示重啟。

 

三、建立版本庫(Repository)

運行Subversion服務器需要首先要建立一個版本庫(Repository)。版本庫可以看作是服務器上集中存放和管理數據的地方。

開始建立版本庫。首先建立 e:\svn 空文件夾作為所有版本庫的根目錄。然后,進入命令行并切換到subversion的bin目錄。輸入如下命令:

svnadmin create E:\svn\repos1

此命令在 E:\svn 下建立一個版本庫 repos1 。repos1 下面會自動生成一些文件夾和文件。

我們也可以使用 TortoiseSVN 圖形化的完成這一步:

先建立空目錄 E:\svn\repos1 ,注意一定是要空的。然后在 repos1 文件夾上“右鍵->TortoiseSVN->Create Repository here...”,然后可以選擇版本庫模式,這里使用默認的FSFS即可,然后就創建了一系列文件夾和文件,同命令行建立的一樣。

 

四、運行獨立服務器

此時 subversion 服務還沒有開始,只是通過它的命令建立了版本庫。繼續在剛才的命令窗口輸入:

svnserve.exe --daemon

svnserve 將會在端口 3690 等待請求,--daemon(兩個短橫線)選項告訴 svnserve 以守護進程方式運行,這樣在手動終止之前不會退出。注意不要關閉命令行窗口,關閉窗口會把 svnserve 停止。

為了驗證svnserve正常工作,使用TortoiseSVN -> Repo-browser 來查看版本庫。在彈出的 URL 對話框中輸入:

svn://localhost/svn/repos1

點 OK 按鈕后就可以看見 repos1 版本庫的目錄樹結構了,只不過這時 repos1 是個空庫。

你也可以使用--root選項設置根位置來限制服務器的訪問目錄,從而增加安全性和節約輸入svnserve URL的時間:

svnserve.exe --daemon --root drive:\path\to\repository

以前面的測試作為例,svnserve 將會運行為:

svnserve.exe --daemon --root e:\svn

然后TortoiseSVN中的版本庫瀏覽器URL縮減為:

svn://localhost/repos1

 

五、配置用戶和權限

用文本編輯器打開E:\svn\repos1\conf目錄,修改svnserve.conf:

將:

# password-db = passwd

改為:

password-db = passwd

即去掉前面的 # 注釋符,注意前面不能有空格。

然后修改同目錄的passwd文件,增加一個帳號:

將:

[users]
# harry = harryssecret
# sally = sallyssecret

增加帳號:

[users]
#harry = harryssecret
#sally = sallyssecret
test = test

 

六、初始化導入

下面就是將我們的數據(項目)導入到這個版本庫,以后就由版本庫管理我們的數據。我們的任何改動都回被版本庫記錄下來,甚至我們自己丟失、改錯數據時版本庫也能幫我們找回數據。

比如,我在 d:\wwwroot 下有個 guestbook 文件夾,里面存放的是我編寫的留言簿程序。在此文件夾上“右鍵 -> TortoiseSVN -> Import...” ,在彈出對話框的“URL of repository”輸入“svn://localhost/repos1/guestbook”。在“Import message”輸入“導入整個留言簿”作為注釋。
點 OK 后要求輸入帳號。我們在用戶名和密碼處都輸入 test 。完成后 guestbook 中的內容全部導入到了 svn://localhost/svn/repos1/guestbook 。

我們看到在 e:\svn\repos1 沒有任何變化,連個 guestbook 文件夾都沒有建立,唯一的變化就是e:\svn\repos1容量變大了。實際上我們源guestbook中的內容已經導入 repos1 版本庫了,源 guestbook 文件夾可以刪除了。

需要注意的是,這一步操作可以完全在另一臺安裝了 TortoiseSVN 的客戶機上進行。例如運行svnserve的主機的IP是133.96.121.22,則URL部分輸入的內容就是“svn://133.96.121.22” 。

 

七、基本操作流程

1、取出(check out)

取出版本庫到一個工作拷貝:

來到任意空目錄下,比如在f分區建立一個空文件夾 f:\work 。“右鍵 -> SVN Checkout”。在“URL of repository”中輸入“svn://localhost/svn/repos1/guestbook”,這樣我們就得到了一份 guestbook 中內容的工作拷貝。

2、存入(check in)/提交(commit)

在工作拷貝中作出修改并提交:

在 guestbook 工作拷貝中隨便打開一個文件,作出修改,然后“右鍵 -> SVN Commit... ”。這樣我們就把修改提交到了版本庫,版本庫根據情況存儲我們提交的數據。

在修改過的文件上“右鍵 -> TortoiseSVN -> Show Log” ,可以看到對這個文件所有的提交。在不同的 revision 條目上“右鍵 -> Compare with working copy”,我們可以比較工作拷貝的文件和所選 revision 版本的區別。

 

 

3.2 安裝 ApacheSVN 服務器

Subversion的設計包括一個抽象的網絡層,這意味著版本庫可以通過各種服務器進程訪問。理論上講,Subversion可以使用無限數量的網絡協議實現,目前實踐中存在著兩種服務器。

 

  • SVNServer:svnserve 是一個小的(也叫輕型的)、獨立服務器,使用自己定義的協議和客戶端。(作者注:以下稱這種服務器為“svnserver服務器”,上面的安裝配置就是安裝svnserver服務器。)

     
  • ApacheSVN:Apache是最流行的web服務器,通過使用 mod_dav_svn 模塊,Apache可以訪問版本庫,并且可以使客戶端使用HTTP的擴展協議WebDAV/DeltaV進行訪問。(作者注:以下稱這種服務器為“ApacheSVN服務器”)

 

通過 Http 協議訪問版本庫是 Subversion 的亮點之一。ApacheSVN服務器 具備了許多 svnserve服務器 沒有的特性,使用上更加靈活,但是有一點難于配置,靈活通常會帶來復雜性。

由于 Subversion 需要版本化的控制,因此標準的 Http 協議不能滿足需求。要讓 Apache 與 Subversion 協同工作,需要使用 WebDAV(Web-based Distributed Authoring and Versioning:)Web 分布式創作和版本控制)。WebDAV 是 HTTP 1.1 的擴展,關于 WebDAV 的規范和工作原理,可以參考 IETF RFC 2518

 

一、必備條件

為了讓你的版本庫使用HTTP網絡,你必需具備以下幾個條件:

  1. 配置好httpd 2.2.x,并且使用mod_dav啟動。
  2. 為mod_dav安裝mod_dav_svn插件。
  3. 配置你的httpd.conf,使http協議能訪問版本庫。

下面以我的配置過程詳細講解。

環境:

OS:Windows XP SP2

Web:Apache 2.2.6

SVN:svn-win32-1.4.6

 

二、安裝

1、安裝Apache

具體安裝方法見:《Windows下安裝Apache 2.2.x

2、安裝 Subversion

將下載下來的 svn-win32-1.4.6.zip 直接解壓即可,比如我解壓到 e:\subversion 。
從Subversion安裝目錄的 bin 子目錄將 intl3_svn.dll、libdb44.dll、mod_authz_svn.so、mod_dav_svn.so 拷貝到Apache的模塊目錄(Apache 安裝目錄的 modules 文件夾)。

 

三、基本的Apache配置

修改Apache的配置文件 httpd.conf ,使用LoadModule來加載mod_dav_svn模塊。

將:

#LoadModule dav_module modules/mod_dav.so

改成:

LoadModule dav_module modules/mod_dav.so

即去掉前面的“#”號。

添加:

LoadModule dav_svn_module modules/mod_dav_svn.so

一定確定它在 mod_dav 之后。

現在你已經設置了Apache和Subversion,但是Apache不知道如何處理Subversion客戶端,例如TortoiseSVN。為了讓Apache知道哪個目錄是用來作為Subversion版本庫,你需要使用編輯器(例如記事本)編輯Apache的配置文件。

在配置文件最后添加如下幾行:

<Location /repository/>
  DAV svn
  SVNPath e:/svn/repos1
</Location>

這個配置告訴Apache首先需要啟用 dav_module,然后加載 dav_svn_module 。版本庫對外的URL是:http://服務器IP/repository/ ,所有的Subversion版本庫在物理上位于e:/svn/repos1/ 。

配置完畢后重新啟動 Apache,打開瀏覽器,輸入 http://服務器IP/ repository/ 將會看到如下畫面:

這表示 Apache 的 dav_svn 模塊已經可以正常工作了。用戶可以使用任何一種 Subversion 的客戶端通過 Http 協議訪問你的版本庫。

如果想要指定多個版本庫,可以用多個 Location 標簽,也可以使用 SVNParentPath 代替 SVNPath,例如在 e:\svn 下有多個版本庫 repos1,repos2 等等,用如下方式指定:

<Location /repository/>
 DAV svn
 SVNParentPath e:/svn
</Location>

“SVNParentPath e:/svn ” 表示 e:\svn 下的每個子目錄都是一個版本庫??梢酝ㄟ^ http://服務器IP/repository/repos1/,http://服務器IP/repository/repos2/ 來訪問。

現在你的版本庫任何人都可以訪問,并且有完全的寫操作權限。也就是說任何人都可以匿名讀取,修改,提交,以及刪除版本庫中的內容(注:這時不需要配置E:\svn\repos\conf\svnserve.conf 文件,并且也不需要啟動E:\subversion\bin\svnserve.exe。因為提交是通過Apache的dav模塊處理的,而不是由svnservice處理。)。我們用 TortoiseSVN 客戶端驗證即知。

顯然大部分場合這是不符合需求的。那么如何進行權限設置呢,Apache 提供了基本的權限設置:

 

四、認證選項

1、基本 HTTP 認證

最簡單的客戶端認證方式是通過 HTTP 基本認證機制,簡單的使用用戶名和密碼來驗證一個用戶的身份。Apache提供了一個 htpasswd 工具來管理一個用戶文件,這個文件包含用戶名和加密后的密碼,這些就是你希望賦予 Subversion 特別權限的用戶。htpasswd 可以在 Apache 的 bin 安裝目錄下找到。具體使用方法如下:

創建用戶文件:
htpasswd -c E:\usr\Apache2.2\bin\passwd.conf username

添加新用戶(-m 表示以 MD5 加密密碼,可選項):
htpasswd [-m] E:\usr\Apache2.2\bin\passwd.conf Newusername

更改用戶密碼:
htpasswd [-m] E:\usr\Apache2.2\bin\passwd.conf username

刪除用戶(要用大寫的 D ):
htpasswd –D E:\usr\Apache2.2\bin\passwd.conf username

接下來修改 httpd.conf,在 Location 標簽中加入如下內容:

AuthType Basic
AuthName "svn repos"
AuthUserFile E:/usr/Apache2.2/bin/passwd.conf
Require valid-user

說明:

AuthType Basic:啟用基本的驗證,比如用戶名/密碼對。

AuthName "svn repos":當一個認證對話框彈出時,出現在認證對話框中的信息。(最好用英文,TortoiseSVN 不支持中文,安裝語言包除外。)

AuthUserFile E:/usr/Apache2.2/bin/passwd:指定E:\usr\Apache2.2\bin\passwd為用戶文件,用來驗證用戶的用戶名及密碼。

Require valid-user:限定用戶只有輸入正確的用戶名及密碼后才能訪問這個路徑

 

重新啟動 Apache ,打開瀏覽器訪問版本庫。Apache 會提示你輸入用戶名和密碼來認證登陸了,現在只有 passwd 文件中設定的用戶才可以訪問版本庫。也可以配置只有特定用戶可以訪問,替換上述 "Require valid-user" 為 "Require user tony robert" 將只有用戶文件中的 tony 和 robert 可以訪問該版本庫。

有的時候也許不需要這樣嚴格的訪問控制,例如大多數開源項目允許匿名的讀取操作,而只有認證用戶才允許寫操作。為了實現更為細致的權限認證,可以使用 Limit 和 LimitExcept 標簽。例如:

<LimitExcept GET PROPFIND OPTIONS REPORT>
  require valid-user
</LimitExcept>

以上配置將使匿名用戶有讀取權限,而限制只有 passwd 中配置的用戶可以使用寫操作。

如果這還不能滿足你的要求,你希望精確的控制版本庫目錄訪問,可以使用 Apache 的 mod_authz_svn 模塊對每個目錄進行認證操作。

 

 

2、用 mod_authz_svn 進行目錄訪問控制

首先需要讓 Apache 將 mod_authz_svn 模塊加載進來。在 Subversion 的安裝目錄中找到 mod_auth_svn 模塊,將其拷貝到 Apache 安裝目錄的 modules 子目錄下。修改 httpd.conf 文件,添加:

LoadModule authz_svn_module modules/mod_authz_svn.so

現在可以在 Location 標簽中使用 authz 的功能了。一個基本的 authz 配置如下:

<Location /repository/>
  DAV svn
  SVNParentPath e:/svn

  # our access control policy
  AuthzSVNAccessFile E:/usr/Apache2.2/bin/accesspolicy.conf

  # try anonymous access first, resort to real
  # authentication if necessary.
  Satisfy Any
  Require valid-user

  # how to authenticate a user
  AuthType Basic
  AuthName "Subversion repository"
  AuthUserFile E:/usr/Apache2.2/bin/passwd.conf
</Location>

AuthzSVNAccessFile 指向的是 authz 的策略文件,詳細的權限控制可以在這個策略文件中指定。訪問文件 accesspolicy.conf 的語法與svnserve.conf和 Apache 的配置文件非常相似,以(#)開頭的行會被忽略;在它的簡單形式里,每一小節命名一個版本庫和一個里面的路徑;認證用戶名是在每個小節中的選項名;每個選項的值描述了用戶訪問版本庫的級別:r(只讀)或者rw(讀寫),如果用戶沒有提到或者值留空,訪問是不允許的; * 表示所有用戶,用它控制匿名用戶的訪問權限;@符號區分組和用戶。如:

[groups]
committers = paulex, richard
developers = jimmy, michel, spark, sean

[/]
* = r
@committers = rw

[/branches/dev]
@developers = rw

[/tags]
tony = rw
[/private]
* =
@committers= r
 

使用 SVNParentPath 代替 SVNPath 來指定多個版本庫的父目錄時,其中所有的版本庫都將按照這個策略文件配置。例如上例中 tony 將對所有版本庫里的 /tags 目錄具有讀寫權限。如果要對具體每個版本庫配置,用如下的語法:

[groups]
project1_committers = paulex, richard
project2_committers = jimmy, michel, spark, tony, Robert

[repos1:/]
* = r
@ project1_committer = rw

[repos2:/]
* = r
@ project2_committer = rw
 

這樣項目1的 project1_committer 組只能對 repos1 版本庫下的文件具有寫權限而不能修改版本庫 repos2 ,同樣項目2的 project2_commiter 組也不能修改 repos1 版本庫的文件。

 

 

4、FAQ

1、路徑或權限不足時將出現錯誤信息提示:

http://localhost (路徑不對)
Error * PROPFIND request failed on '/' PROPFIND of '/': 200 OK (http://localhost)

http://localhost/svn (權限不足)
Error * PROPFIND request failed on '/svn' PROPFIND of '/svn': 403 Forbidden (http://localhost)

http://localhost/svn/repos (正常顯示)

http://localhost/repos (權限不允許)
Error * PROPFIND request failed on '/repos' PROPFIND of '/repos': 405 Method Not Allowed (http://localhost)

 

 

2、不啟動E:\subversion\bin\svnserve.exe ,但啟動了ApacheSVN ,訪問(tortoiseSVN –> Repo – browser)或提交(SVN Commit)情形如下:

現象:svn://localhost/svn/repos 不能訪問或提交,提示:Error * Can't connect to host 'localhost': 由于目標機器積極拒絕,無法連接。 但 file:///e:/svn/repos 和 http://localhost/svn/repos 可以訪問或提交。

原因:svn:// 是獨立服務器 svnserver 自己的協議。file:/// 是本地訪問,即服務器端和客戶端在一個機器上。

 

 

 

 

參考資料:
Subversion 官方網站:Subversion 的官方網站,提供最權威的介紹和最新的下載。
Subversion 中文手冊:Subversion 簡體中文官方網站翻譯的中文手冊。
TortoiseSVN 中文文檔:Subversion 簡體中文官方網站翻譯的 TortoiseSVN 中文文檔。
我用SVN中文論壇:國內人氣非常旺的 SVN 中文交流論壇。
用Apache和Subversion搭建安全的版本控制環境》:IBM 工程師寫的基于 Linux 的 SVN 教程。
百度百科:由全體網民共同撰寫的百科全書

 

 

~ 全文完~

 

          印第安

      2007年12月23日23:37:41 v1.0 初稿
      2007年12月25日2:24:53 v1.1 更新。更改了幾處路徑,使之更加便于Win下調試。全文重新排版,閱讀條理更清晰。
      2008年1月24日11:45:35 v1.2 修訂。修改幾處書寫錯誤(謝謝山東濟南的網易博友242);修改1個關鍵配置路徑。

posted on 2008-10-28 10:51 聶文龍 閱讀(616) 評論(0)  編輯 收藏 引用 所屬分類: Visual C++ 、軟件應用
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产精品一区久久久| 美女999久久久精品视频| 欧美一区国产在线| 亚洲国产另类久久精品| 国产日韩欧美自拍| 日韩视频精品在线| 男人的天堂亚洲| 久久久欧美一区二区| 欧美一区二区视频网站| 亚洲午夜视频在线观看| 亚洲乱码日产精品bd| 永久免费视频成人| 黄网站免费久久| 国产日产高清欧美一区二区三区| 嫩模写真一区二区三区三州| 久久久噜噜噜久久中文字免| 欧美中文字幕| 久久精品人人爽| 久久久www| 久久gogo国模裸体人体| 国产在线视频不卡二| 在线视频欧美日韩精品| 亚洲国产天堂网精品网站| 噜噜噜在线观看免费视频日韩| 久久婷婷丁香| 另类激情亚洲| 欧美成人免费全部观看天天性色| 欧美不卡视频一区发布| 欧美激情精品久久久久久久变态| 欧美激情导航| 亚洲精选久久| 亚洲国产婷婷香蕉久久久久久99| 亚洲日本aⅴ片在线观看香蕉| 亚洲三级观看| 亚洲自拍偷拍色片视频| 久久免费午夜影院| 美腿丝袜亚洲色图| 99国产精品99久久久久久| 欧美成人在线免费观看| 亚洲精品国产精品乱码不99按摩| 亚洲天堂av电影| 999在线观看精品免费不卡网站| 亚洲婷婷综合色高清在线| 欧美一区二区视频免费观看| 理论片一区二区在线| 欧美日韩免费高清| 好看不卡的中文字幕| 欧美日韩精品免费观看视一区二区 | 在线激情影院一区| 亚洲九九爱视频| 午夜精品久久久久| 榴莲视频成人在线观看| 亚洲视频在线观看视频| 久久婷婷麻豆| 麻豆av一区二区三区| 欧美激情一区二区三区在线视频观看| 亚洲国产裸拍裸体视频在线观看乱了| 在线视频你懂得一区二区三区| 久久精视频免费在线久久完整在线看 | 欧美资源在线观看| 欧美日本国产精品| 一区二区视频欧美| 性亚洲最疯狂xxxx高清| 亚洲日本中文| 亚洲一区二区免费看| 麻豆国产精品va在线观看不卡| 国产精品在线看| 亚洲天堂成人在线观看| 精品动漫3d一区二区三区免费| 亚洲男人第一av网站| 91久久精品一区二区三区| 久久久久一区二区三区| 欧美激情1区2区3区| 在线观看av不卡| 久久久一区二区三区| 亚洲自拍偷拍一区| 国产精品久久久久久模特| 日韩午夜激情av| 亚洲高清视频的网址| 欧美刺激午夜性久久久久久久| 亚洲欧美www| 欧美日韩一区免费| 一区二区成人精品 | 欧美日韩在线视频一区二区| 国产精品久久| 午夜精彩国产免费不卡不顿大片| 亚洲精品偷拍| 欧美夫妇交换俱乐部在线观看| 亚洲国产精品成人| 欧美国产日韩免费| 欧美亚洲三级| 激情综合久久| 欧美成人免费一级人片100| 久久裸体视频| 亚洲大胆在线| 亚洲欧洲日产国码二区| 免费观看一区| 亚洲午夜av在线| 99在线|亚洲一区二区| 欧美理论在线| 亚洲免费在线看| 亚洲一区二区三区色| 国产午夜精品久久久久久久| 久久人人97超碰国产公开结果| 亚洲女同在线| 在线精品一区| 亚洲欧洲日韩综合二区| 欧美另类一区二区三区| 亚洲一本视频| 校园春色国产精品| 亚洲国产精品第一区二区| 激情av一区二区| 亚洲大胆美女视频| 欧美日韩蜜桃| 久久久久久69| 欧美激情久久久久| 日韩一级黄色大片| 亚洲永久字幕| 亚洲国产日韩一级| 亚洲视频精品在线| 激情久久综合| 亚洲精品一区二区三区不| 国产精品自拍小视频| 鲁大师成人一区二区三区| 欧美日韩国产综合视频在线观看中文| 99在线精品免费视频九九视| 亚洲欧美日韩精品一区二区| 亚洲国产精品一区二区www| 欧美在线视频全部完| 欧美怡红院视频| 国产日韩精品一区二区三区在线| 一本一本久久a久久精品综合妖精| 亚洲开发第一视频在线播放| 久久天天躁狠狠躁夜夜av| 久久这里只精品最新地址| 国产欧美日韩精品专区| 亚洲欧美视频在线观看| 中文国产成人精品久久一| 欧美激情亚洲自拍| 亚洲国产裸拍裸体视频在线观看乱了中文| 国产一区二区三区精品欧美日韩一区二区三区 | 亚洲欧美不卡| 欧美一区网站| 国产亚洲网站| 欧美一区二区视频网站| 久久久xxx| 黑人巨大精品欧美黑白配亚洲| 久久久精品网| 亚洲国产一成人久久精品| 亚洲精选中文字幕| 欧美精品九九| 亚洲视频在线一区| 久久精品99国产精品| 精品福利av| 欧美一区二区精品久久911| 国外成人在线视频| 久久精品一区二区| 乱中年女人伦av一区二区| 亚洲国产精品第一区二区三区| 美女任你摸久久| 亚洲国产婷婷综合在线精品| 在线午夜精品自拍| 国产精品久久久久久模特| 亚洲午夜91| 麻豆91精品| 日韩视频一区二区三区在线播放| 欧美日韩精品一区二区三区四区 | 亚洲人体偷拍| 亚洲专区一区| 黑人中文字幕一区二区三区| 久久综合狠狠综合久久综合88| 亚洲欧洲精品一区二区三区| 中文在线资源观看视频网站免费不卡| 欧美色精品天天在线观看视频| 欧美在线观看视频一区二区| 亚洲福利专区| 久久爱www久久做| 亚洲激情av| 国产精品国产a级| 久久午夜视频| 一区二区三区高清在线| 久久久999国产| 一区二区三区波多野结衣在线观看| 国产精品久久久久久久第一福利| 欧美中文字幕在线视频| 99ri日韩精品视频| 欧美国产在线视频| 久久爱91午夜羞羞| 宅男66日本亚洲欧美视频| 狠狠色丁香久久综合频道| 国产精品国产三级国产aⅴ浪潮 | 国产精品二区在线观看| 久久影视精品| 午夜久久资源| 亚洲少妇诱惑| 亚洲老司机av| 亚洲国产精品毛片| 欧美成人四级电影| 久久欧美肥婆一二区| 亚洲欧美经典视频|