1.基本操作
1.0 創建版本庫:
Svnadmin create /data/repos
2.0 修改配置文件
Auth文件
[groups]
admin=shguo
[/]
@admin=rw
*=r
[groups] admin=shguo [/] @admin=rw *=r
Passwd文件
[users]
shguo=shguo
[users] shguo=shguo
Svnserve.conf文件
anon-access = read
auth-access = write
password-db = passwd
authz-db = authz
注意:要去掉前面的空格不然會報,認證配置失敗
3.0啟動:
svnserve –d –r repos
4.0 創建目錄
svn mkdir svn://127.0.0.1/repos/ -m “mkdir” (說明“”中是提交的log注釋)
svn mkdir svn://127.0.0.1/repos/sns/ -m “mkdir”
svn mkdir svn://127.0.0.1/repos/sns/trunk -m “mkdir”
svn mkdir svn://127.0.0.1/repos/sns/branches -m “mkdir”
svn mkdir svn://127.0.0.1/repos/sns/tags -m “mkdir”
或者本地操作
svn mkdir file:///data/repos/ -m “mkdir”
svn mkdir file:///data/repos/sns/ -m “mkdir”
svn mkdir file:///data/repos/sns/trunk -m “mkdir”
svn mkdir file:///data/repos/sns/branches -m “mkdir”
svn mkdir file:///data/repos/sns/tags -m “mkdir”
5.0導入項目:
Svn import sns svn://127.0.0.1/repos/sns/trunk/ –m “init project”
查看:svn list svn://127.0.0.1/repos/sns/trunk/
6.0導出項目開發:
Svn checkout svn://127.0.0.1/repos/sns/trunk/sns
7.0進入目錄就可以進行開發操作了
Cd sns
Svn status
Svn add new.txt
Svn commit –m ‘commit’
Svn log new.txt
其它一些命令:
Svn update
Svn diff –r m:n path
Svn lock some.java or svn unlock some.java
Svn revert
Svn add /delete / copy / move
Svn switch –relocate svn://xxxx/one svn://xxxx/two
Svn list path
2. Svn中分支的使用
2.0 創建分支Svn cp http://svn.shguo.com/repos/sns/trunk/ http://svn.shguo.com/repos/sns/branches/101128_sns_imageUpload_shguo -m “shguo_branch”
也可以通過 TortoiseSVN 中的Branch/tag來創建分支
2.1 取出分支來開發
Svn co http://svn.shguo.com/repos/sns/branches/101128_sns_imageUpload_shguo 101128_sns_imageUpload_shguo
2.2開發完成后向主干提交
檢查需要合並的分支的歷史:
svn log --stop-on-copy -q http://svn.shguo.com/repos/sns/branches/101128_sns_imageUpload_shguo
合並:
svn merge –r 16:HEAD http://svn.shguo.com/repos/sns/branches/101128_sns_imageUpload_shguo
2.3檢查沖突:
svn status
如果有解決沖突,沒有就svn commit命令就可以完成提交
2.4 批量增加svn文件
svn add `svn st |grep ? |awk '{print $2}'`
svn st |grep ? |awk '{print $2}' |xargs svn add
2.5 批量增加svn:ignore屬性
svn propset svn:ignore -F ~/.svnignore -R /app/work/app1
------------------------------------------------------------------------------------------
整個具體流程總結如下 :
1.建立兩套服務器.配置一致.程序發布的目錄等設置也保持一致 如:(QA環境 生產環境)
2.其中一套作為開發測試環境使用.一套作為生產環境使用
3.SVN建立trunk目錄作為主代碼分支,,建立branch目錄作為其他分支;如svn://project/trunk svn://project/branch
4.開發人員使用branch分支進行開發;(問題點:開發自測和QA測試環境)
5.當確認某個測試版本穩定后.將branch分支的內容合並(merge)到主干.
6.運維將測試環境主干代碼update到生產環境;
3.分支使用命令示例:
3.0 創建分支
svn cp http://..../project/trunk http://..../project/branch/mall_bugid3012_order -m “order”
3.1 取出分支開發
3.2 開發完成后提交
3.3 檢查需要合並的分支記錄
svn log –stop-on-copy –q http://..../project/branch/mall_bugid3012_order
3.4 合並svn merge –r 舊版本號:新版本號(head) http://..../project/branch/mall_bugid3012_order
3.5 檢查沖突和提交
svn statussvn commit