SVN Windows版本下載:https://www.open.collab.net/downloads/subversion/rc/
CollabNetSubversion-server-1.6.0-2.win32.exe
本地已安裝Apache服務器的話,不用選擇第二項。
SVN默認端口號是3609,指定資源路徑F:\svn_repository 作為初始的資源庫。這里不推薦設置為WIndows 服務,原因是WIndows 服務使用起來不好用,推薦通過手工的方式啟動和控制SVN服務器,這樣具有更大的靈活性。
最后選擇SVN軟件的安裝路徑,這里設置為D:\Program Files (x86)\CollabNet Subversion Server。
點擊Finish完成安裝。
配置Subversion 服務器
進入cmd命令窗口,執行
svnadmin create F:\svn_repository
其中svnadmin 為svn管理的命令,create表示創建資源庫,F:\svn_repository表示的是資源庫所在的文件夾路徑。
創建資源庫后,在F:\svn_repository 下會自動生成一些SVN所使用的文件目錄結構。
其中conf用於資源庫的相關配置信息,可以通過修改這里的文件對SVN資源庫配置相應的信息。其他的文件,盡量不要去修改。
注:可以通過 svnadmin help 命令來茶語相關的說明。
設置訪問用戶
只創建了資源庫是不夠的,還需要設置訪問資源庫的用戶以及為其授權,這樣才能保證SVN資源庫的安全。SVN的安全又涉及兩個方面,即用戶的認證和用戶的授權。
1 用戶認證
用戶的認證是創建用戶並為其設置密碼。F:\svn_repository\conf\password 文件增加兩行。
### This file is an example password file for svnserve.
### Its format is similar to that of svnserve.conf. As shown in the
### example below it contains one section labelled [users].
### The name and password for each user follow, one account per line.[users]
# harry = harryssecret
# sally = sallyssecret
harry = 123
joe = 456
增加了兩個用戶,並設置了各自的密碼。
2 用戶授權
每個用戶所能使用的權限是不同的,比如 admin 是管理員,擁有最高的權限,可以讀寫文件,但user 只是個瀏覽用戶,只能讀文件,但不能修改文件。這就涉及到授權的問題。
SVN的授權信息默認保存在資源文件根目錄的conf/authz 文件中。打開文件,
### This file is an example authorization file for svnserve.
### Its format is identical to that of mod_authz_svn authorization
### files.
### As shown below each section defines authorizations for the path and
### (optional) repository specified by the section name.
### The authorizations follow. An authorization line can refer to:
### - a single user,
### - a group of users defined in a special [groups] section,
### - an alias defined in a special [aliases] section,
### - all authenticated users, using the '$authenticated' token,
### - only anonymous users, using the '$anonymous' token,
### - anyone, using the '*' wildcard.
###
### A match can be inverted by prefixing the rule with '~'. Rules can
### grant read ('r') access, read-write ('rw') access, or no access
### ('').[aliases]
# joe = /C=XZ/ST=Dessert/L=Snake City/O=Snake Oil, Ltd./OU=Research Institute/CN=Joe Average[groups]
# harry_and_sally = harry,sally
# harry_sally_and_joe = harry,sally,&joe# [/foo/bar]
# harry = rw
# &joe = r
# * =# [repository:/baz/fuz]
# @harry_and_sally = rw
# * = r
這里的意思是說,SVN不僅可以配置用戶組,也可以針對不同的資源庫路徑配置訪問權限等。
3 配置認證和授權文件
進設置了這些認證信息,並沒有完成安全的配置,還需要修改的SVN的配置信息conf\svnserve.conf文件。
去掉# password-db = passwd這一行的"#"號,則表示,SVN啟動服務后,將使用passwd這個文件作為認證信息。
啟動Subversion服務
啟動Subversion需要使用命令 svnserve,例如啟動F:\svn_repository 的資源庫的Subversion服務,則需要在命令行界面輸入以下命令。
svnserve -d -r F:\svn_repository
其中,svnserve為SVN服務管理的命令,-d表示的是該服務是由守護線程方式啟動的,而-r F:\svn_repository 表示的是要啟動服務的資源庫所在的根目錄。
這樣,SVN資源庫的服務就啟動了,只要不關閉這個命令行窗口,SVN的服務就一直存在。
安裝Subversion客戶端TortoiseSVN
TortoiseSVN-1.9.1.26747-x64.zip
瀏覽資源庫
安裝完之后,右鍵,在TortoiseSVN快捷菜單中選擇 TortoiseSVN | Repo-browser 菜單項,將彈出輸入資源庫的地址對話框。
這里 “svn://” 為訪問SVN服務器的協議,localhost 為服務器的地址。如果服務器在局域網中,也可以設置為局域網的IP地址或者域名。
另外,如果配置了Apache服務器,還可以通過“http://”來訪問。
點擊OK按鈕,出現以下對話框,這里顯示的是SVN資源庫中的所有文件。
左側是資源庫中的所有文件,右側是文佳佳和文件的詳細信息。
在資源庫中增加文件夾
在左側的瀏覽窗口中右擊,子啊彈出的快捷菜單中選擇Create folder選項,在彈出的對話框中輸入SVN服務器上新建的文件夾名trunk。
單擊OK按鈕,彈出一個輸入提交日志的對話框,
使用harry 123管理創建,這樣可以重復創建多個文件夾。
導入文件到資源庫(import)
下面有這樣一個場景,用戶harry在Eclipse中創建了一個名為FirstJava的Java項目,現在,他將與用戶joe組成一個團隊(Team),共同開發這個Java應用,那么該如何做呢?
整個過程要分為兩個步驟:
(1)用戶harry將java項目的代碼導入(Import)到資源庫中,與其他用戶共享。
(2)用戶joe將資源庫中的Java項目代碼遷出(chexkout)到自己的電腦中。
這樣,用戶harry和用戶joe就可以一塊開發這個Java項目了,首先看一下用戶harry如何將代碼導入到資源庫。
(1)harry在自己的電腦上,打開FirstJava項目所在的文件目錄,然后在FirstJava文件夾上右擊,在彈出的快捷菜單中選擇TortoiseSVN | Import命令。
(2)在踏出的對話框中輸入資源庫所要導入的文件目錄svn://localhost/trunk/FirstJava
導入完成窗口
導入資源后的資源庫目錄結構
注:SVN服務器版本庫有兩種格式,一種為FSFS,一種為BDB把文件上傳到SVN版本庫后,上傳的文件不再以文件原來的格式存儲,而是被svn以它自定義的格式壓縮成版本庫數據,存放在版本庫中。如果是FSFS格式,這些數據存放在版本庫的db目錄中,里面的revs和revprops分別存放着每次提交的差異數據和日志等信息 。
從資源庫中遷出(checkout)
被導入的資源庫中的文件便成為了共享的文件,其他的用戶就可以通過客戶端獲得這些共享文件了。下面joe將進行資源獲取操作。
svn://localhost/trunk/FirstJava
F:\test\FirstJava
沒有圖標顯示,
解決圖標顏色問題:
接着。對這9個文件重命名即可:
下面就可以看到顏色了:
圖標顯示問題與TortoiseSVN相關,可參考 TortoiseSVN客戶端圖標覆蓋問題 。http://blog.csdn.net/zzfenglin/article/details/51979569
下面將在centos中進行SVN服務器環境的搭建。(參考:https://help.aliyun.com/document_detail/52864.html)
完整依賴安裝:https://zhidao.baidu.com/question/556347129706975492.html
完整安裝:http://www.linuxidc.com/Linux/2012-12/75992.htm
yum install subversion
Total 2.3 MB/s | 2.3 MB 00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : apr-1.4.8-3.el7.x86_64 1/6
Installing : apr-util-1.5.2-6.el7.x86_64 2/6
Installing : pakchois-0.4-10.el7.x86_64 3/6
Installing : neon-0.30.0-3.el7.x86_64 4/6
Installing : subversion-libs-1.7.14-10.el7.x86_64 5/6
Installing : subversion-1.7.14-10.el7.x86_64 6/6
Verifying : neon-0.30.0-3.el7.x86_64 1/6
Verifying : apr-1.4.8-3.el7.x86_64 2/6
Verifying : subversion-1.7.14-10.el7.x86_64 3/6
Verifying : apr-util-1.5.2-6.el7.x86_64 4/6
Verifying : pakchois-0.4-10.el7.x86_64 5/6
Verifying : subversion-libs-1.7.14-10.el7.x86_64 6/6Installed:
subversion.x86_64 0:1.7.14-10.el7Dependency Installed:
apr.x86_64 0:1.4.8-3.el7 apr-util.x86_64 0:1.5.2-6.el7 neon.x86_64 0:0.30.0-3.el7 pakchois.x86_64 0:0.4-10.el7 subversion-libs.x86_64 0:1.7.14-10.el7Complete!
配置目錄:/etc/httpd/conf/httpd.conf
svnserve --version
mkdir /var/svn
cd /var/svn
svnadmin create /var/svn/svnrepos
cd svnrepos會看到自動生成的版本庫文件:
conf db format hooks locks README.txt
阿帕奇服務器的安裝
手動安裝(繁瑣)
http://jingyan.baidu.com/article/7e4409533d7f0f2fc0e2ef91.html
wget http://mirror.bit.edu.cn/apache//httpd/httpd-2.2.34.tar.gz
(自動安裝)
http://jingyan.baidu.com/article/c14654138f12920bfcfc4c01.html
(1)登錄到阿里雲服務器上,在控制終端輸入以下命令:
yum install httpd httpd-devel
(2)然后開始下載安裝,下載過程會提示以下信息,只需要輸入y即可繼續安裝。
(3)當出現complete!字樣時即表示安裝完成,如下圖所示。
(4)然后我們設置成開機自啟動,命令如下:
chkconfig --levels 235 httpd on
(5)配置完畢,啟動 Apache:
systemctl start httpd
(6)此時已經可以訪問你的服務器,l輸入ip地址,不出意外的話,能夠看到 “Testing 123.." 的測試頁面。
(7)如果其他機器訪問這台服務無法顯示這個頁面,而直接在這台服務器上可以訪問的話,可能是 CentOS 自帶的防火牆禁止了。只需要進入防火牆,將 “WWW” 對應的 “80” 端口打開即可。
注意事項:
默認根目錄是 /var/www/html
配置文件 /etc/httpd/conf/httpd.conf
其他配置存儲在 /etc/httpd/conf.d/ 目錄
注:使用 --prefix 可指定安裝目錄。
默認html目錄為空,根據/etc/httpd/conf.d/welcome.conf中的配置,跳轉到Alias /.noindex.html /usr/share/httpd/noindex/index.html 頁面。
阿帕奇+SVN =》 http 方式訪問 SVN 服務器(參考:https://www.ibm.com/developerworks/cn/java/j-lo-apache-subversion/ )
第一步:實現http://ip/repo_name 訪問SVN
這里thhp訪問是代表通過apche訪問,因此不會進行svn驗證
<Location /svnrepos>
DAV svn
SVNPath /var/svn/svnrepos
</Location>
點進去看看
第二步:添加用戶登錄驗證基本功能
/etc/httpd/modules
systemctl restart httpd.service
service httpd restart
systemctl start httpd
killall httpd
killall svnserve
svnserve -d -r /var/svn/svnrepos
chcon -R -h -t httpd_sys_content_t /var/svn/
chown -R apache:apache /var/svn/repo1
解決 could not begin a transaction
svnserve -d -r /mnt/westos --listen-port 3691
解決 svnserve: E000098: Can't bind server socket: Address already in use
導入文件到svnrepos
svn import -m "New import" myproj http://svn.red-bean.com/repos/trunk/misc/myproj
<Location /svnrepos>
DAV svn
SVNPath /var/svn/svnrepos
AuthType Basic
AuthName "svn repos"
AuthUserFile /var/svn/svnrepos/conf/passwd
Require valid-user
</Location>
密碼是對,就是無法登錄。
制作密碼驗證文件:http://lansgg.blog.51cto.com/5675165/1602593
也就是說,apache的驗證需要加密。
第三步:用 mod_authz_svn 進行目錄訪問控制
上一步僅僅只是擁有了用戶的基本驗證功能,比較單一,這里采用用戶驗證策略,比較綜合靈活。AuthzSVNAccessFile 指向的是 authz 的策略文件,詳細的權限控制可以在這個策略文件中指定。
httpd.conf的location中需要添加一行:
AuthzSVNAccessFile /etc/svn/accesspolicy
第四步:添加https訪問功能
這里就不適用Apache來處理SSL問題了,直接使用Nginx代理就好。
參考:http://www.linuxidc.com/Linux/2014-02/96985.htm
http://www.cnblogs.com/fuqiang88/p/4727257.html
可視化:可以安裝 Trac or Viewvc[http://www.viewvc.org/]