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

时间:2008-10-08 14:04:28

标签: svn

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

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

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

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

因此,为了确保只有我的更改更新到web目录,我被迫导航到我知道我所做的更改的每个目录,并且只显示那些文件,例如“svn update newfile1.php”等等这很乏味。

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

7 个答案:

答案 0 :(得分:164)

尝试:

svn status --show-updates

或(相同但更短):

svn status -u

答案 1 :(得分:53)

取决于您在工作副本和最新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 .

答案 2 :(得分:43)

您可以通过发出以下内容来查看更新内容(未实际更新)

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

更多详情here

答案 3 :(得分:17)

这就是我要找的东西。先检查了Google,但svn help最终为我完成了:)

svn diff -r BASE:HEAD .

答案 4 :(得分:13)

相同但短的更短:):

svn st -u

答案 5 :(得分:0)

您可以使用'svn diff'查看工作副本与存储库之间的区别。

答案 6 :(得分:0)

理论上,您可以在为自己创建的分支中进行所有更改。 然后你会合理地确定你是唯一一个承诺它的人。

恕我直言的功能开发应该这样做。

然后你可以从这个分支而不是从主干更新这个目标机器。