工作副本怎樣跟蹤版本庫
對于工作副本的每一個檔案,Subversion 在管理目錄 .svn/ 記錄兩項關鍵的資訊:
目前工作副本的基準版本 ( file’s working revision ), 還有就是一個本地副本最後更新的時間戳。
給定這些資訊,通過與版本庫通訊,Subversion 可以告訴我們工作檔案是處與如下四種狀态的那一種:
-
未修改且是目前的
檔案在工作目錄裡沒有修改,在工作版本之後沒有修改送出到版本庫。svn commit 操作不做任何事情,svn update 不做任何事情。
就是說在你update後,沒有人送出過此檔案的更改,同時你也沒有在這個檔案中有任何更改,
這份檔案和版本庫中的檔案是一模一樣的
-
本地已修改且是目前的
工作副本已經修改,從基準版本之後沒有修改送出到版本庫。本地修改沒有送出,是以 commit 會成功的送出,update 不做任何事情。
意味着版本庫裡的這份檔案已經過期,你這份才是最新的,你此時update不會做任何事,
它不會覆寫掉你工作副本的任何改動,因為你目前的工作副本意味着是最新的版本,SVN
不會對它做任何改動
-
本地未修改且過時
這個檔案在工作副本沒有修改,但在版本庫中已經修改了。這個檔案應當更新到最新公共版本。commit 不做任何事情,update 将會更新工作副本到最新的版本。
你這個版本的檔案其實已經過時,而且你也沒有要修改它的意思,當你更新時,新的版本會
覆寫掉你現在的檔案,當你commit,什麼事也不會發生.(其實SVN在你送出時,會先讓你更新,防止
你把版本庫的新版本給覆寫掉)
-
本地已修改且過時
這個檔案在工作副本和版本庫中都被修改了。送出 該檔案将會因為 過時 而失敗。該檔案應該先更新; 更新 指令将會嘗試合并公共更改和本機更改。如果 Subversion 不能順利的自動完成合并,則需要使用者解決沖突。
為啥會失敗,這是因為的基礎版本号低,現在版本庫裡這個檔案的版本高,你update後,就會顯示沖突,好了,開始解決沖突吧