Subversion典型的工作周期是這樣的:
更新你的工作拷貝
svn update
做出修改
svn add
svn delete
svn copy
svn move
檢驗修改
svn status
svn diff
可能會取消一些修改
svn revert
解決沖突(合并别人的修改)
svn update
svn resolved
送出你的修改
svn commit
http://www.uml.org.cn/pzgl/2009032010.asp
http://www.yuanma.org/data/2009/0401/article_3598.htm
http://www.subversion.org.cn/svnbook/1.4/index.html
總結:在Commit前要Update一次,這樣合并了别人的最新修改Commit才能成功!
(Commit時會檢查本地版本号和版本庫中的最新版本号,隻有相同才能成功!!)
大多數情況下合并失敗很少,如果最新版本的檔案跟你修改交疊了這樣就産生了沖突,
對于每一個沖突的檔案,Subversion放置三個額外的未版本化檔案到你的工作拷貝:
l filename.mine
你更新前的檔案,沒有沖突标志,隻是你最新更改的内容。(如果Subversion認為這個檔案不可以合并,.mine檔案不會建立,因為它和工作檔案相同。)
l filename.rOLDREV
這是你的做更新操作以前的BASE版本檔案,就是你在上次更新之後未作更改的版本。
l filename.rNEWREV
這是你的Subversion用戶端從伺服器剛剛收到的版本,這個檔案對應版本庫的HEAD版本。這裡OLDREV是你的.svn目錄中的修訂版本号,NEWREV是版本庫中HEAD的版本号。
但對于二進制格式,例如藝術品或聲音,在這種情況下,十分有必要讓使用者輪流修改檔案,因為它們的合并通常失敗。盡管Subversion一直主要是一個拷貝-修改-合并系統,但是它也意識到了需要鎖定一些檔案,并且提供這種鎖定機制(不是離線的)。
一旦你解決了沖突,你需要通過指令svn resolved讓Subversion知道!
Revert是離線操作,用.svn目錄的“原始”拷貝,把檔案恢複到未修改的狀态!