The goal of the Subversion project is to build a version control system that is a compelling replacement for CVS in the open source community. The software is released under an Apache/BSD-style open source license. SVN是一個版本控制軟體,類似CVS,但是SVN的的有點是開源的,而且SVN的版本控制能力給CVS還要強多。 SVN可以用於專案管理,還可以用於版本同步,功能可是十分強呢:) 下載:http://subversion.tigris.org 當前日期穩定版SVN1.32 http://subversion.tigris.org/downloads/subversion-1.3.2.tar.gz 安裝: 解壓:#: tar zxvf subversion-1.3.2.tar.gz 依次輸入./configure , make , make install 進行編譯安裝完成。 開啟SVN服務:svnserve -d 檢測服務是否開啟:netstat -ntlp如果看到3690的連接埠正常開放了,證明SVN啟動了。 正式使用: 首先我們得建立一個SVN的項目,一般人都認為建立項目就只需要一個檔案,在我第一次使用SVN之前都有這樣的看法,SVN建立項目需要建立檔案夾 建立項目命令:svnadmin create project_name project_name 為你的project名字,可以任意取。 建立完畢後,project_name是一個檔案夾,進入檔案夾,可以看到一個conf的檔案夾。進入檔案夾可以看到2個檔案(如果沒有passwd檔案,可以用vi建立),編輯 svnserve.conf 把anon-access = read ,auth_access = write 還有password-db = passwd 的注釋去掉,還有[general]的注釋也要去掉。 vi passwd檔案,如果是新檔案,則輸入: [user] your_name = your_password 這裡設定的your_name是你的使用者名稱,your_password是你的密碼,這個是訪問SVN必要的通行證。 好了,現在終於把準備功夫做完了,下面可以正是使用了。 首先找到你的項目原始碼檔案夾,使用下面命令: cd your project in your project dircetory use:svn co /home/project_name --username = your_name --password=your_password 好了,現在你可以在客戶機上使用以下命令獲得你想要的項目原始碼檔案 svn co svn://home/project_name --username=your_name --password = your_password 把增加的svn檔案添加入svn庫: svn add /home/your_project/*.* --username=your_name --password = your_password 提交檔案: svn commit /home/your_project/*.* --username=your_name --password=your_password 更新檔案:svn update /home/your_project/*.* --username=your_name --password=your_password 當然你可以編輯一個指令檔來一次完成所有的操作: vi svnupdate.sh #!/bin/sh svn add /home/your_project/*.* --username=your_name --password = your_password svn commit /home/your_project/*.* --username=your_name --password=your_password svn update /home/your_project/*.* --username=your_name --password=your_password chmod +x svnupdate.sh Finish 關鍵詞: SVN apache linux subversion 1、安裝APR-1.2.7和APR-util-1.2.7 :[url]http://apr.apache.org/[/url] tar zxvf apr-1.2.7.tar.gz ./configure make make install tar zxvf apr-util-1.2.7.tar.gz ./configure --with-apr=/usr/local/apr/ make make install 2、編譯安裝APACHE。 tar zxvf httpd-2.2.3.tar.gz cd httpd-2.2.3 ./configure --prefix=/opt/apache --enable-dav --enable-so --enable-maintainer-mode --with-apr=/usr/local/apr/bin/apr-1-config --with-apr-util=/usr/local/apr/bin/apu-1-config make make install 3、安裝subversion-1.4.0 tar zxvf subversion-1.4.0.tar.gz ./configure --with-apxs=/opt/apache/bin/apxs --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr make make install 4、查看subversion兩個動態庫有沒有安裝成功 vi /opt/apache/conf/httpd.conf 看到下面兩個模組說明安裝成功 LoadModule dav_svn_module modules/mod_dav_svn.so LoadModule authz_svn_module modules/mod_authz_svn.so 5、配置SVN vi /opt/apache/conf/httpd.conf 以下大概是我的配置: <Location /svn> DAV svn SVNParentPath /data/svn/repos AuthType Basic AuthName "Subversion repository" AuthUserFile /data/svn/passwd AuthzSVNAccessFile /data/svn/auth Require valid-user </Location> 6、建立SVN儲存倉庫 #mkdir -p /data/svn/repos #svnadmin create /data/svn/repos/tony.tang 備份以前的SVN庫 #svnadmin dump /data/svn/repos/tony.tang/ > /root/tony.tang 把備份出來的資料恢複到本地 #svnadmin load /data/svn/repos/tony.tang/ < /home/tony.tang 7、建立本地存取控制檔案 /opt/apache/bin/htpasswd -c /data/svn/passwd clay.li 會提示你輸入密碼,預設是MD5加密 8、建立本地項目控制檔案 touch /data/svn/auth 我的檔案內容為: [groups] [hms.rd.ikang.com:/] #wxy = rw chen.shanshan = rw nuo = rw jonathan.sun = rw [php.ikang.com:/] #wxy = rw peter = rw [tony.tang:/] tony.tang = rw jonathan.sun = rw clay.li =rw 9、安裝用戶端,訪問伺服器 因為我的apache配置連接埠為88所以訪問伺服器的時候必須加上連接埠號碼。 [url]http://192.168.7.10:88/svn/tony.tang[/url] 注意:SVN是APACHE配置的時候加上去的。 10、到此安裝基本結束 修改一下/data/svn/repos屬性,否則會導致檔案上傳失敗。 cd /data/svn/ chmod -R apache.apache repos 主要參考文章: [url]http://www.01cn.net/cgi-bin/topic_show.cgi?id=3073&bpg=1&age=0[/url] 要在新伺服器上裝版本控制系統了。本來打算和以前一樣用 CVS 來進行原始程式碼控制,碰巧看到 duduwolf 對 SVN 大力推薦,加上這篇文章對於各種版本控制系統功能的完整比較,一直為 CVS 的各種缺陷感到鬱悶的我自然毫不猶豫投奔了 SVN 的懷抱。 安裝過程算不上一帆風順,但我不打算在這裡寫出一篇完整的安裝手冊來,只簡單記錄幾點體會。服務模式SVN 可以通過內建的 svnserve 提供服務,也可以和 Apache 配合通過標準的 http/https 來提供服務。用 svnserve 的好處是配置相對簡單,但不足是 svnserve 所能提供的許可權管理最小粒度只能到版本庫(和 CVS 一樣)。這對於開源軟體的開發使用可能問題不大,但對於用作公司內部原始碼控制來說就太簡單了。所以我選擇用 Apache + SSL + SVN 。當 初使用 CVS 最讓我覺得美中不足的就是它的目錄許可權控制。因為針對每個使用者只能控制其訪問整個版本庫的讀寫權限,以至於我不得不建立了N個獨立的版本庫。即便這樣,每 個版本庫下面還是有許多項目是希望能分別控制許可權的。當時採用的方法是禁用了CVS的瀏覽目錄功能,並對每個項目目錄名增加隨機編號。只有知道確切的目錄 名稱才可以訪問到該項目。現在既然改用 SVN ,如果還是無法對版本庫裡面的每一個子目錄進行精確的許可權控制的話,還不如用 CVS 。通過配置AuthzSVNAccessFile檔案來控制每一個項目目錄的存取權限雖然算不上特別方便,但總比 CVS 那樣完全沒辦法好。資料存放區SVN 同樣可以使用兩種資料存放區方式: Berkeley DB 和 FSFS 。在我看來, Berkeley DB 的優勢在於其成熟性,但需要更多的日常管理和維護,並且是平台依賴的。所以我選擇更簡便的 FSFS 。APR libraries安 裝 SVN 的時候最好指定 --with-apr= 和 --with-apr-util= 參數到 Apache 安裝的根目錄(ServerRoot)下,而不是使用預設的 SVN 安裝包中內建的 apr 。否則如果你安裝的 Apache 版本不同有可能導致 APR 庫不匹配,出現類似 Can't set position pointer in file '/svn/test/db/revs/1': Invalid argument 的錯誤。Updated 2006-04-20 16:30 -- 比如說如果你安裝的是apache 2.2.0版本,就需要在編譯安裝svn的時候指定--with-apxs和--with-apr參數到你的apache2.2.0安裝目錄下: ./configure --prefix=${subversionInstallFolder} / --with-apxs=${apacheInstallFolder}/bin/apxs / --with-apr=${apacheInstallFolder} / --with-apr-util=${apacheInstallFolder} / --with-ssl / --with-zlib / --enable-maintainer-mode make clean && make && make install簽署認證既然是公司內部的源碼控制系統,通過 SSL 來加密保護登入資訊還是很有必要的。認證的製作所 填寫的資訊其他都關係不大,只要注意產生根憑證和伺服器請求籤證檔案時的兩次 Common Name 不能一樣(理論上Common Name 應該是使用者將會用來訪問的完整網域名稱字串),否則會導致認證產生的時候出現 error 18 at 0 depth lookup:self signed certificate 錯誤。Updated 2006-06-29 12:52 -- 似乎還是有不少朋友在安裝svn的時候碰到各種各樣的問題,所以我把自己用來進行 svn server 恢複的完整指令碼提供給大家下載( svn_recover.rar 13,473 位元組),僅供大家參考。需要說明的幾點:
- 請不要直接運行 reinstall.sh 指令碼。因為這個指令碼是針對我自己的 svn 伺服器的情況來寫的,目的是在重裝伺服器的時候可以完全實現自動化。所以如果你不去瞭解指令碼的實際工作就放伺服器上執行,由此造成的任何後果我可不負責
- 我的 svn server 不需要提供其他的服務,所以我的安裝指令碼是完全以 svn 服務為中心的,如果你的伺服器還需要提供 php / mysql 等服務的話,這個指令碼可能並不適合你。
- 為 了 recover 的方便,我把 svn 所需要的一些關鍵檔案放在了 resource 目錄下面,安裝指令碼自動從 resource 目錄下讀取相關的檔案拷貝到對應的目標目錄下。你如果想用這個指令碼,需要在 resource 目錄下提供你自己伺服器環境下的真實檔案。本壓縮包中的資源檔僅作樣本。
|