Ubuntu SVN

mac2022-06-30  102

UbuntuForumWikiLinuxPasteChat 搜索    頁面討論編輯歷史简体繁体

 

導航 首頁最近更改隨機頁面页面分类幫助编辑 编辑指南沙盒現時事件字词处理工具箱 鏈入頁面鏈出更改所有特殊頁面個人工具 登入

SubVersion

 

目錄

[隱藏] SubVersion服務安裝設置 1.1 簡介1.2 假設1.3 本文涉及的範圍1.4 安裝1.5 伺服器配置 1.5.1 創建 SVN 倉庫1.6 訪問方式 1.6.1 直接訪問文件倉庫(file://)1.6.2 通過 WebDAV 協議訪問(http://)1.6.3 通過具有安全套接字(SSL)的 WebDAV 協議訪問(https:// )1.6.4 通過自帶協議訪問(svn://)1.6.5 通過具被SSH隧道保護的自帶協議訪問(svn+ssh://)1.7 參考資料

[編輯]SubVersion服務安裝設置

原文出處:https://wiki.ubuntu.com/SubVersion

原文作者:ubuntu.com

授權許可:創作共用協議

翻譯人員:XueCan

校對人員:無

適用版本:所有版本

文章狀態:翻譯中


本文件闡述了如何在 Ubuntu 上設置 Subversion(通常也被稱為 svn)。我們假設本文的讀者是具有一定經驗的 Linux 用戶和系統管理員。

 

[編輯]簡介

如果您對 Subversion 還比較陌生,本節將給您一個關於 Subversion 的簡要介紹。

Subversion 是一款開放源代碼的版本控制系統。使用 Subversion,您可以重新加載源代碼和文件的歷史版本。Subversion 管理了源代碼在各個時期的版本。一個文件樹被集中放置在文件倉庫中。這個文件倉庫很像是一個傳統的文件伺服器,只不過它能夠記住文件和目錄的每一次變化。

[編輯]假設

首先我們假設您能夠在 Ubuntu 中操作 Linux 的命令、編輯文件、啟動和停止服務。當然,我們還認為您的 Ubuntu 正在運行中,您可以使用

[編輯]本文涉及的範圍

要通過 HTTP 協議訪問 SVN 文件倉庫,您需要安裝並配置好 Web 伺服器。Apache 2 被證實可以很好的與 SVN 一起工作。關於 Apache 2 的安裝超出了本文的範圍(關於Apache2 的安裝可以 另見) ,儘管如此,本文還是會涉及如何配置 Apache 2 使用 SVN。

類似的,要通過 HTTPS 協議訪問 SVN 文件倉庫,您需要在您的 Apache 2 中安裝並配置好數字證書,這也不在本文的討論範圍之中(另見)。

[編輯]安裝

幸運的,Subversion 已經包含在 main 倉庫中。所以,要安裝 Subversion,您只需要簡單的運行:

$ sudo apt-get install subversion $ sudo apt-get install libapache2-svn

如果系統報告了依賴關係的錯誤,請找出相應的軟體包並安裝它們。如果存在其它問題,也請自行解決。如果您依然不能解決這些問題,可以考慮通過 Ubuntu 的網站、Wiki、論壇或郵件列表尋求支援。

[編輯]伺服器配置

您應該已經安裝了上述的軟體包。本節將闡述如何創建 SVN 文件倉庫以及如何設置計劃的訪問權限。

[編輯]創建 SVN 倉庫

許多位置都可以放置 Subversion 文件倉庫,其中兩個最常用的是:/usr/local/svn 以及 /home/svn。為了在下面的描述中簡單明了,我們假設您的 Subversion 文件倉庫放在 /home/svn,並且你的計劃名稱是簡單的“myproject”。

同樣的,也有許多常用的方式設置文件倉庫的訪問權限。然而,這也是安裝過程中最經常出現錯誤的地方,因此我們會對此進行一個詳細說明。通常的情況下,您應該創建一個名為“Subversion”的用戶組,該組是SVN倉庫所在的目錄的擁有者。下面是一個快速的操作說明,有關內容請參考相關文件的詳細說明:

在 Ubuntu 菜單上選擇“系統->系統管理->用戶和組”; 切換到“組”標籤; 點擊“添加組”按鈕; 組名為“subversion”; 將您自己和“www-data”(Apache 用戶)加入組成員中; 點擊“OK”以確認修改,關閉該程式。

或者使用命令完成上述功能(增加組,並且把用戶加到組裡):

sudo addgroup subversion sudo usermod -G subversion -a www-data

再或者直接使用命令編輯組文件"sudo vi /etc/group",增加組和成員(不推薦):

$ sudo vi /etc/group

結果看上去,像這樣。

$ cat /etc/group|grep subversion subversion:x:1001:www-data,exp

您需要註銷然後再登錄以便您能夠成為 subversion 組的一員,然後就可以執行簽入文件(Check in,也稱提交文件)的操作了。

現在執行下面的命令

$ sudo mkdir /home/svn $ cd /home/svn $ sudo mkdir myproject $ sudo chown -R www-data:subversion myproject

下面的命令用於創建 SVN 文件倉庫:

$ sudo svnadmin create /home/svn/myproject

賦予組成員對所有新加入文件倉庫的文件擁有相應的權限:

$ sudo chmod -R g+rws myproject

如果上面這個命令在創建SVN文件倉庫之前運行,你可能在後續Check in的時候遇到如下錯誤:

Can't open '/home/svn/myproject/db/txn-current-lock': Permission denied

查看txn-current-lock文件的權限和用戶以及組信息,應該類似於:

$ ls -l /home/svn/myproject/db/txn-current-lock -rw-rwSr-- 1 root subversion 0 2009-06-18 15:33 txn-current-lock

除了權限以外,用戶及其組如果不對,則仍然會遇到上述問題,可以再次運行命令:

$ sudo chown -R www-data:subversion myproject

[編輯]訪問方式

Subversion 文件倉庫可以通過許多不同的方式進行訪問(Check Out,簽出)——通過本地硬盤,或者通過各種網絡協議。無論如何,文件倉庫的位置總是使用 URL 來表示。下表顯示了不同的 URL 模式對應的訪問方法:

模式訪問方法file:///直接訪問本地硬盤上文件倉庫http://通過 WebDAV 協議訪問支援 Subversion 的 Apache 2 Web 伺服器https://類似 http://,支援 SSL 加密svn://通過自帶協議訪問 svnserve 伺服器svn+ssh://類似 svn://,支援通過 SSH 通道

本節中,我們將看到如何配置 SVN 以使之能夠通過所有的方法得以訪問。當然這裏我們之討論基本的方法。要了解更高級的用途,我們推薦您閱讀《使用 Subversion 進行版本控制》在線電子書。

[編輯]直接訪問文件倉庫(file://)

這是所有訪問方式中最簡單的。它不需要事先運行任何 SVN 服務。這種訪問方式用於訪問本地的 SVN 文件倉庫。語法是:

$ svn co file:///home/svn/myproject 或者 $ svn co file://localhost/home/svn/myproject

注意:如果您並不確定主機的名稱,您必須使用三個斜杠(///),而如果您指定了主機的名稱,則您必須使用兩個斜杠(//).

對文件倉庫的訪問權限基於文件系統的權限。如果該用戶具有讀/寫權限,那麼他/她就可以簽出/提交修改。如果您像前面我們說描述的那樣設置了相應的組,您可以簡單的將一個用戶添加到“subversion”組中以使其具有簽出和提交的權限。

[編輯]通過 WebDAV 協議訪問(http://)

要通過 WebDAV 協議訪問 SVN 文件倉庫,您必須配置您的 Apache 2 Web 伺服器。您必須加入下面的代碼片段到您的 /etc/apache2/mods-available/dav_svn.conf中:

<Location /svn/myproject> DAV svn SVNPath /home/svn/myproject AuthType Basic AuthName "myproject subversion repository" AuthUserFile /etc/subversion/passwd #<LimitExcept GET PROPFIND OPTIONS REPORT> Require valid-user #</LimitExcept> </Location>

如果需要用戶每次登錄時都進行用戶密碼驗證,請將<LimitExcept GET PROPFIND OPTIONS REPORT>與</LimitExcept>兩行註釋掉。

當您添加了上面的內容,您必須重新起動 Apache 2 Web 伺服器,請輸入下面的命令:

sudo /etc/init.d/apache2 restart

接下來,您需要創建 /etc/subversion/passwd 文件,該文件包含了用戶授權的詳細信息。要添加用戶,您可以執行下面的命令:

sudo htpasswd -c /etc/subversion/passwd user_name

htpasswd工具的安裝方法如下:

sudo apt-get install apache2-utils

它會提示您輸入密碼,當您輸入了密碼,該用戶就建立了。“-c”選項表示創建新的/etc/subversion/passwd文件,所以user_name所指的用戶將是文件中唯一的用戶。如果要添加其他用戶,則去掉“-c”選項即可:

sudo htpasswd /etc/subversion/passwd other_user_name

您可以通過下面的命令來訪問文件倉庫:

$ svn co http://hostname/svn/myproject myproject --username user_name

它會提示您輸入密碼。您必須輸入您使用 htpasswd 設置的密碼。當通過驗證,計劃的文件就被簽出了。

警告:密碼是通過純文本傳輸的。如果您擔心密碼泄漏的問題,我們建議您使用 SSL 加密,有關詳情請看下一節。

[編輯]通過具有安全套接字(SSL)的 WebDAV 協議訪問(https:// )

通過具有 SSL 加密的 WebDAV 協議訪問 SVN 文件倉庫(https:// )非常類似上節所述的內容,除了您必須為您的 Apache 2 Web 伺服器設置數字證書之外。

您可以安裝由諸如 Verisign 發放的數字簽名,或者您可以安裝您自己的數字簽名。

我們假設您已經為 Apache 2 Web 伺服器安裝和配置好了相應的數字證書。現在按照上一節所描述的方法訪問 SVN 文件倉庫,別忘了把 http:// 換成https://。如何,幾乎是一模一樣的!

[編輯]通過自帶協議訪問(svn://)

當您創建了 SVN 文件倉庫,您可以修改 /home/svn/myproject/conf/svnserve.conf 來配置其訪問控制。

例如,您可以取消下面的註釋符號來設置授權機制:

# [general] # password-db = passwd

現在,您可以在“passwd”文件中維護用戶清單。編輯同一目錄下“passwd”文件,添加新用戶。語法如下:

username = password #(注意行开始不要有多余空格)

要了解詳情,請參考該文件。

現在,您可以在本地或者遠程通過 svn://訪問 SVN 了,您可以使用“svnserve”來運行 svnserver,語法如下:

$ sudo svnserve -d --foreground -r /home/svn # -d -- daemon mode # --foreground -- run in foreground (useful for debugging) # -r -- root of directory to serve 要了解更多信息,请输入: $ svnserve --help

當您執行了該命令,SVN 就開始監聽默認的端口(3690)。您可以通過下面的命令來訪問文件倉庫:

$ svn co svn://hostname/myproject myproject --username user_name

基於伺服器的配置,它會要求輸入密碼。一旦通過驗證,就會簽出文件倉庫中的代碼。

要同步文件倉庫和本地的副本,您可以執行 update 子命令,語法如下:

$ cd project_dir $ svn update

要了解更多的 SVN 子命令,您可以參考手冊。例如要了解 co (checkout) 命令,請執行:

$ svn co --help 或者这样 $ svn --help commit 或者直接 ☎ svn help co checkout (co): 从版本库签出工作副本。 使用: checkout URL[@REV]... [PATH] 。。。。。

一個實例:

killall svnserve; svnserve -d -r /home/svn/ /home/svn/lj12-source/conf dog * authz:[groups] authz:lj12 = veexp authz:[lj12-source:/] <-注意写法。 authz:veexp = rw authz:@lj12 = rw authz:* = passwd:[users] <-2个用户和密码。 passwd:veexp = icep passwd:test = test svnserve.conf:[general] svnserve.conf:anon-access = none svnserve.conf:auth-access = write svnserve.conf:password-db = passwd svnserve.conf:authz-db = authz <-如果不启用authz,则test也可以取出。 svn co svn://localhost/lj12-source --username veexp 认证领域: <svn://localhost:3690> a712643f-661e-0410-8ad4-f0554cd88977 用户名: veexp “veexp”的密码: A lj12-source/tim.h A lj12-source/en.c ......

認證失敗的密碼緩衝記錄位置,明文密碼。到1.6版本,可能使用keyring管理。如果調試密碼,直接刪除如下文件就可。

~/.subversion/auth/svn.simple/:

eea34a6f7baa67a3639cacd6a428dba4

[編輯]通過具被SSH隧道保護的自帶協議訪問(svn+ssh://)

配置和伺服器進程于上節所述相同。我們假設您已經運行了“svnserve”命令。

我們還假設您運行了 ssh 服務並允許接入。要驗證這一點,請嘗試使用 ssh 登錄計算機。如果您可以登錄,那麼大功告成,如果不能,請在執行下面的步驟前解決它。

svn+ssh:// 協議使用 SSH 加密來訪問 SVN 文件倉庫。如您所知,數據傳輸是加密的。要訪問這樣的文件倉庫,請輸入:

$ svn co svn+ssh://hostname/home/svn/myproject myproject --username user_name

注意:在這種方式下,您必須使用完整的路徑(/home/svn/myproject)來訪問 SVN 文件倉庫

基於伺服器的配置,它會要求輸入密碼。您必須輸入您用於登錄 ssh 的密碼,一旦通過驗證,就會簽出文件倉庫中的代碼。

您還應該參考 SVN book 以了解關於 svn+ssh:// 協議的詳細信息。

[編輯]參考資料

Setting up Apache on UbuntuSVN Home pageSVN BookApache 2 DocumentationMod-SSLApache-SSL
1個分類:  程式開發  本頁面已經被瀏覽132,292次。 此頁由Ubuntu中文的匿名用戶於2014年10月10日 (星期五) 14:04的最後更改。 在ery、qiii2006和0xff、Ubuntu中文用戶Yexiaoxing和其他的工作基礎上。關於Ubuntu中文免責聲明

转载于:https://www.cnblogs.com/Dennis-mi/articles/5025338.html

相关资源:JAVA上百实例源码以及开源项目
最新回复(0)