打算想要架 svn + apache2 + trac + + virtual host, 先從 subversion 和 apache2 開始 🙂
- apt-get install libapache2-svn apache2 subversion
- mkdir -p /home/svn/repository # 可以建到 /home/svn 即可(我習慣多一個檔案庫, 之後 svn 那層 可以放設定檔或其它東西)
- svnadmin create /home/svn/repository/PROJECT_NAME
- chown -R www-data.www-data /home/svn/repository/PROJECT_NAME
- vim /etc/apache2/mods-available/dav_svn.conf # 拿掉下述地方的註解, 只有 SVNParentPath 要修改路徑.(或者直接 cp 下面的即可),沒有此檔可靠 a2enmod dav_svn 產生.
<Location /svn>
DAV svn
SVNParentPath /home/svn/repository
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /etc/apache2/dav_svn.passwd
AuthzSVNAccessFile /etc/apache2/dav_svn.authz
Require valid-user
</Location> - 編輯 vim /etc/apache2/dav_svn.authz, ACCOUNT1 只能讀, ACCOUNT2 可以讀寫, 其它所有都不能進來.(PROJECT_NAME:/, 那個 / 可以是 /trunk => 代表設定誰在 trunk 能做什麼事的意思)
[PROJECT_NAME:/]
* =
ACCOUNT1 = r
ACCOUNT2 = rw - 增加透過 apache 存取(ci/co)的 使用者帳號/密碼 到 /etc/apache2/dav_svn.passwd
- /usr/bin/htpasswd -c /etc/apache2/dav_svn.passwd ACCOUNT1
- /usr/bin/htpasswd /etc/apache2/dav_svn.passwd ACCOUNT2
- 重新啟動 apache: /etc/init.d/apache2 restart
這樣子就可以做 checkout(co)/commit(ci)/update(up)... 等動作囉~ 存取 url 如下:
- svn co http://localhost/svn/PROJECT_NAME
- svn co http://DOMAIN_NAME/svn/PROJECT_NAME
- 同樣於 http://DOMAIN_NAME/svn/PROJECT_NAME/ 應該就會看到 Revision 資訊
參考來源: 在Debian下安裝SVN(subversion)
附註:
快速新增其它 SVN PROJECT 的方法:
- svnadmin create /home/svn/repository/NEW_PROJECT_NAME
- chown -R www-data.www-data /home/svn/repository/NEW_PROJECT_NAME
- vim /etc/apache2/mods-available/dav_svn.conf 裡面 對 <Location /svn> 改成另外的名字, 就可以用變另一種專案, 裡面的帳號/密碼也都可以另外產生.
- vim /etc/apache2/dav_svn.authz 這個檔案檔名會依照 dav_svn.conf 做修改, 裡面加上 NEW_PROJECT_NAME/帳號 等參數, 再重新啟動 apache 即可.
- 就可以 http://DOMAIN_NAME/svn/NEW_PROJECT_NAME 存取.
通常 PROJECT 習慣建立如下目錄(branches, tags, trunk):
- mkdir /tmp/PROJECT_NAME
- mkdir /tmp/PROJECT_NAME/branches # 分支
- mkdir /tmp/PROJECT_NAME/tags
- mkdir /tmp/PROJECT_NAME/trunk # 主幹, 所有檔案都往裡面塞
- svn import /tmp/PROJECT_NAME http://DOMAIN_NAME/svn/PROJECT_NAME/ -m "initial import"
- 或 svn import /tmp/PROJECT_NAME file:///home/svn/repository/PROJECT_NAME
- 之後 checkout: svn co http://DOMAIN_NAME/svn/PROEJCT_NAME/trunk
參考文件: Subversion的權限控制
您好!謝謝您這麼熱心的分享,對我幫助很大
我試了兩三次,終於灌了起來
但我用烏龜 svn checkout 的時候,中文檔名都變亂碼了
請問該怎麼辦…
我找不到哪邊可以設定
我用 ssh 在 server 上 import、checkout,在 pietty 上看到都是正常的碼
我的編碼是用 big5 (當初灌 samba utf-8 一直弄不起來,只好用 big5)
非常謝謝您!
厄, 烏龜的話, 應該是在 Windows 的問題, 我覺得您可以查查看 烏龜的設定, 我猜應該要可以設定才對.
然後另外你可以試一下, 在 Linux 上開一個 UTF-8 的檔名, 和 big5 的檔名 然後 commit 上去, 再用烏龜 checkout 看看, 來確定 Windows 吃的檔名是怎麼樣~
至於 samba 的 utf-8, 您試試看加這兩行, 應該就可以動了~ (samba 3.0)
unix charset = utf-8
dos charset = utf-8
這兩天弄了很久,終於把 samba utf-8 弄起來
我的 big5 samba 轉成 utf-8 以後,samba 一直在網芳看不到(幾個月前試失敗的時候也是一樣的情況)
最後發現是 port 139 沒有 run 起來
但是 /etc/init.d/samba restart都沒出現錯誤。
檢查 ps -aux 才發現有兩個 samba pid 是殭屍,kill -9 以後就成功了
因為我有用 samba,所以 samba 要先搞定才能用 svn,不然其他人就不能工作
最後 svn 終於能正確讀取中文資料夾了(svn 似乎只吃 utf-8,我用 smart svn指定編碼也一樣沒用)
非常謝謝您
感謝分享, 不過 samba 不能用就不能用 svn, 倒是怪怪的, 您用的是 svn:// ??
如果是 http:// 的話, 沒有 samba 是無所謂的~
因為該 Server 是公司內部要用的
上面已經有很多 Big5 的中文檔名的檔案
如果我把系統的編碼改掉(LC_ALL = zh_TW.UTF-8),Samba 應該就會變亂碼,或是無法使用
這樣其他人就不能用 Samba 上的檔案
不過我是沒去測到底會不會亂碼(Samba 跑 Big5,系統跑 UTF-8)
只覺得系統兩個編碼一起用會不好
所以我就先把 Samba 整個成功弄成 UTF-8 之後才去弄 SVN
另外,我一直想把系統訊息改成英文,但一直弄不成功 囧
LC_MESSAGES 一直無法指定成 en_US.UTF-8,怎麼 export 都沒用
只好就使用中文訊息...
系統跑雙語系應該是不會有問題, 因為 Samba 主要是 Mount 設好應該就可以了~
不過, 跑兩種編碼應該還是不太好就是了.. XD
LC_MESSAGES... export LANG=C 試試看呢?
抱歉… 又錯了 剛剛的亂碼發現是尚未轉成 UTF8 的檔名
沒事了(大抱歉 Orz)
請幫我把最後面這兩個蠢留言刪一下
想請問一下dav_svn.passwd這個檔原本就有附嗎?
還是要自己設定
沒有附, 這個檔案是自己隨便取名的. 自己設定即可. 🙂
你好,看了你的文章建立SVN,減少了很多摸索的時間...
以下為上網搜尋整理出的SVN的備份還原方式,不知是否有幫助~
備份:
svnadmin dump /path/to/project/ >/tmp/project.dump
還原:
先刪除
rm /path/to/project
再建立
svnadmin create /path/to/project
svnadmin load /path/to/project < /tmp/project.dump
chown www-data.www-data -R /path/to/project
其他:
唯一識別ID:(Client端應該是認這個,uuid不同應該會不能用)
/PROJECT_NAME/db/uuid