====== Subversion 版本控制系統 ====== 集中式的系統 * http://subversion.tigris.org/ * [[http://svnbook.red-bean.com/|SVNBook]] * [[http://tortoisesvn.tigris.org/|TortoiseSVN]] is a Subversion client, implemented as a windows shell extension. * [[http://viewvc.tigris.org/|ViewVC — Web-based Version Control Repository Browsing]] * http://www.svn8.com/ 中文SVN技術資料(簡體) ===== Subversion Server + Apache + DAV ===== #安裝 Subversion yum subversion #安裝 Apache yum install http #安裝 mod_dav_svn yum install mod_dav_svn **建立Repository** cd /opt mkdir svn mkdir svn/repos svnadmin create /opt/svn/repos/someproject **設定Apache** chown -R apache.apache /opt/svn #建立帳號與密碼 htpasswd -cm /opt/svn/passwd admin htpasswd -m /opt/svn/passwd user1 #編輯 /etc/httpd/conf.d/subversion.conf DAV svn # any "/svn/foo" URL will map to a repository /opt/svn/repos/foo SVNParentPath /opt/svn/repos # how to authenticate a user AuthType Basic AuthName "Subversion Repository" AuthUserFile /opt/svn/svn-auth-file # only authenticated users may access the repository Require valid-user # our access control policy AuthzSVNAccessFile /opt/svn/svn-access-file **svn-access-file** [groups] admins = admin dev1 = user1 [/] * = r [repo:/] @dev1 = rw ===== 建立新專案 ===== **專案目錄規劃架構** * trunk : Main line of development. 主幹,隨時都會因為開發而改變。 * branches : 分支,有三種意義(搞定了、收爛攤子、想搞怪看看)。 - Release branche - Bug fix branche - Experimental branche * tags : Release - Release tags - Bug fix PRE and POST tags **操作流程** 要先連線到 svn server 上開版本庫,同時做好目錄規劃 svnadmin create /opt/svn/repos/myproject svn mkdir file:///opt/svn/repos/myproject/trunk -m "Add trunk" svn mkdir file:///opt/svn/repos/myproject/tags -m "Add tags" svn mkdir file:///opt/svn/repos/myproject/branchs -m "Add branches" 然後設定好存取權限 接著到工作環境取出專案 svn checkout http://svn.bestlong.idv.tw/svn/myproject 應該會詢問帳號密碼,認證完成後就可以開始進行程式開發了。 ===== 基本常用操作 ===== ==== 將專案 Checkout 到本地目錄 ==== svn checkout svn://svnserver/repo/project checkout 可用簡寫 co ==== 增加文件 ==== === 增加 test.php 文件 === svn add test.php === 增加當前目錄下的所有 php 文件 === svn add *.php ==== 將異動 Commit 到版本庫 ==== svn commit test.php -m "add test.php" ===== 其他操作 ===== * mkdir * delete * import * update * branch * tag * switch * merge