剛剛在本目錄下執行一個提交,然後執行 "svn log",怎麼看不到最新的提交?

[url]http://www.ossxp.com/HelpCenter/00030_Subversion/00050_FAQ/#HelpCenter.2BAC8-00030_Subversion.2BAC8-00050_FAQ.2BAC8-SVN_00010_MIXED_REVISION.HelpCenter.2BAC8-00030_Subversion.2BAC8-00050_FAQ.2BAC8-SVN_00010_MIXED_REVISION[/url]
“明明是剛在本目錄下執行了一次提交,爲什麼 "svn log",看不到呢?”

如果您是使用分佈式版本控制工具(如 git, hg, bzr),或者使用 CVS 的用戶,會對此現象感到非常奇怪。

原因分析:

*

問題的實質是 SVN 的混雜版本號。
o

(!) 執行 "svn status -v" 命令可以看到當前目錄處於混雜版本狀態。
*

不同的版本控制工具使用不同的方法記錄本地工作目錄下文件的狀態
o

分佈式版本控制工具在工作區的最頂級目錄包含唯一一個控制目錄(如 .git, .hg, .bzr ── 實際爲版本庫本身)
o

Subversion在每一個工作目錄下都包含一個名爲 .svn 的控制目錄,記錄着每一個文件以及當前目錄的版本號
o

相比之下,Subversion雖然採用了全局版本號,但本地記錄目錄和文件的版本散佈在各個 .svn 目錄中
*

當剛剛完成一次提交,僅僅該次提交涉及的文件在 .svn 控制目錄中記錄的版本號是最新的,其它的文件包括目錄本身的版本號還是舊的。
*

“難道提交不應該自動更新所有文件和目錄狀態麼?”
o

但這是不合理的,可能由於他人的修改破壞當前工作區,因此只有主動執行 "svn update" 命令,才進行更新。

解決辦法:

*

在目錄下執行一次 "svn update",之後再執行 "svn log",就在日誌中能夠看到剛剛的提交。或者使用命令 "svn log -rHEAD:1" 也可以看到最新提交實踐出現在 log 中。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章