在发出“ svn update”命令之前,如何查看将从存储库更新的内容?


115

我已将许多文件中的更改从Eclipse提交到SVN存储库。

然后,我转到linux框上的网站目录,我要在其中将这些更改从存储库更新到那里的目录。

我想说“ svn update project100”,它将用我所有添加和更改的文件等更新“ project100”下的目录。

但是,我不想更新未做的更改。所以我以为我可以说“ svn status project100”,但是当我这样做时,我得到的是完全不同的更改列表,列表中没有我的列表,这很奇怪。

因此,为确保仅将我的更改更新到Web目录,我被迫导航到我知道已进行更改的每个目录,并仅明确更新那些文件,例如“ svn update newfile1.php”等。这很乏味。

任何人都可以在这里阐明标准的工作程序,即在执行“ svn update”命令之前如何获得将要进行的所有更改的准确列表?我认为这是“状态”命令。

Answers:


167

尝试:

svn status --show-updates

或(相同但较短):

svn status -u

9
或更短:svn st -u
Kenyakorn Ketsombut 2013年

什么做X “的输出S是什么意思?
IgorGanapolsky's

1
另外,使用:svn status -q -u...仅显示与属于存储库的文件有关的更新更改和本地更改。您不会从非存储库文件中获得问号(?)。

56

根据您想在工作副本和最新的svn服务器存储库之间了解什么,而无需更新本地工作副本,可以执行以下操作:

如果您想知道svn服务器存储库中已更改的内容,请运行以下命令:

$ svn st -u

如果您想知道本地工作副本和svn服务器存储库中是否已修改相同文件,请运行以下命令:

$ svn st -u | grep -E '^M {7}\*'

如果要获取在特定版本和HEAD之间更改的文件列表,请运行命令:

$ svn diff -r revisionNumber:HEAD --summarize

如果要获取特定修订版本之间更改的文件列表,请运行命令:

$ svn diff -r revisionNumber:anotherRevisionNumber --summarize

如果要查看将要更新的内容(不实际更新),请运行命令:

$ svn merge --dry-run -r BASE:HEAD .

如果您想知道与工作副本相比,svn服务器存储库中特定文件的内容已更改,请运行以下命令:

$ svn diff -r BASE:HEAD ./pathToYour/file

如果您想知道与工作副本相比,svn服务器存储库中所有文件的内容已更改,请运行以下命令:

$ svn diff -r BASE:HEAD .

43

您可以通过发出以下命令来查看将要更新的内容(而不实际更新):

svn merge --dry-run -r BASE:HEAD .

更多细节在这里


上面的内容对我svn merge --dry-run --revision BASE:HEAD .
没用

3
正在获取“ svn:E195020:无法合并到混合修订工作副本[16032:16061];请尝试先进行更新”
Hubert

好的答案-太糟糕了,它不能在混合修订的工作副本上使用。.这
将使

2
@HubertGrzeskowiak-我喜欢具有讽刺意味的q:how do I ... without doing an update?a:first, do an update, then ...:) :) :)
Jesse Chisholm

17

这就是我想要的。首先检查了谷歌,但svn help最终帮了我大忙:)

svn diff -r BASE:HEAD .


0

您可以使用'svn diff'来查看工作副本和存储库之间的差异。


9
错误。这些只会列出您与您上次与存储库同步的时​​间之间的差异。在此期间,您将不会看到其他人已提交到存储库的任何差异。OP希望知道这些更改是什么,而无需通过svn update
dland 2010年

@Andrew的意思是建议OP运行'svn diff -r HEAD URL'来查看从检出文件到作为存储库中HEAD或顶级版本检入的文件之间的区别。
Mac

0

理论上,您可以在自己创建的分支中进行所有更改。这样,您就可以合理地确定自己是唯一的承诺者。

恕我直言,功能开发应该这样完成。

然后,您可以从此分支而不是从中继更新此目标计算机。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.