Linux

SVN 資訊將舊版本號顯示為目前版本

  • April 17, 2012

我有一個 SVN 回購。當我最近送出更改時,反映的目前修訂號為 620:

Transmitting file data ...
Committed revision 620.

但是,如果我然後執行,svn info我會得到以下資訊:

Path: .
URL: http://www.site.com.testing/repos/site.com/trunk
Repository Root: http://svn.server/repos/site.com
Repository UUID: a9c3a166-39f6-4cfb-8622-fd24eb11034b
Revision: 584
Node Kind: directory
Schedule: normal
Last Changed Author: bob
Last Changed Rev: 584
Last Changed Date: 2012-03-26 18:32:55 -0400 (Mon, 26 Mar 2012)

所以送出一些東西告訴我目前的 SVN repo 是 620,但svn info告訴我目前的 rev 是 584。也svn log顯示 584 作為目前(最近的)rev。

如果我在 Windows 中通過 TortoiseSVN 查看 SVN 日誌,它會正確顯示修訂版 620 作為目前修訂版。

我是否遺漏了有關如何svn info工作的svn log內容?

svninfo 命令可能會顯示目前工作目錄的修訂版,而當您送出一個或多個更改的文件時,該送出的輸出會顯示這些文件的新修訂版。584 將是文件夾的最後更改/更新版本。

嘗試svn update在文件夾上執行一個並重新執行svn info. 它應該使文件夾的其餘部分達到 620

Subversion 向您顯示的是您已簽出修訂版 584。資訊直接來自.svn/entries文件,而不是來自伺服器。

這源於 Subversion 的基本設計,即盡可能不從儲存庫伺服器請求資訊。如果他們碰巧在遠端工作並且沒有與儲存庫伺服器的網路連接,則允許使用者擁有 Subversion 的大量功能。

  • 如果您svn info對剛剛送出的文件之一執行 a 操作,您將看到該文件的版本為 620。
  • 如果您執行了 a svn info http://www.site.com.testing/repos/site.com/trunk,您將看到最後一個修訂版是修訂版 620,因為它正在與伺服器通信。
  • 如果您執行了 a svn update,然後執行了 a svn info,您將看到您的工作目錄位於修訂版 620。

只是一個簡單的問題:您送出了幾個文件,還是送出了整個工作目錄?如果您在送出中指定了已更改的文件,這將是有意義的。Subversion 不會知道更新.svn/entries工作目錄根目錄中的文件。但是,即使我送出了所有更改,我也看到了這一點。每當我送出所有更改時,我都會進行 svn up。

請記住:這不是錯誤。這是一個特點。

引用自:https://serverfault.com/questions/380286