哪个svn命令将列出分支上所有已修改的文件?


81

在svn中,我创建了一个分支,例如修订版22334。然后在该分支上进行提交。

与中继上的文件相比,如何获取分支上所有已更改文件的列表?我不希望看到在创建分支与“现在”之间的主干上已更改的文件。


我经常回到这个问题,最有帮助的答案是从@AndrewMedico删除的那个,答案是svn log:-D
Daniel W.

Answers:


84

我认为这可以做到:

svn diff -r 22334:HEAD --summarize <url of the branch>

2
谢谢。我什至不知道我的分支来自哪个修订版本,所以我确实svn log <url of the branch> | tail想获得最小的修订版本号。
fikr4n 2012年

1
运行此命令以获得所有更改的摘要之后,如果要查看分支上所做的每个更改,则可以使用svn diff -r 22334(请注意,未指定与HEAD的差异)。这将与本地工作副本进行比较,并允许您在diff应用程序中对其进行更改。
切尔诺2015年

43

如果仅使用-u选项的status命令,还可以找到已更改文件的快速列表。

svn status -u

这将向您显示文件在当前代码库中的修订版本,而不是存储库中的最新修订版本。我只在实际要查看文件本身的差异时才使用diff。

这里有一个很好的svn命令教程,它解释了很多这些常见情况:SVN命令参考


3
svn status只会向您显示本地修改。OP正在寻找如何查看自从主干创建以来已提交到其分支的所有文件更改。
webnesto

25

您可以使用以下命令:

svn status -q

根据svnbook

With --quiet (-q), it prints only summary information about locally modified items.

警告:此命令的输出仅显示您的修改。因此,我建议做一个svn up以获取文件的最新版本,然后使用svn status -q来获取您已修改的文件。


简短但甜蜜的答案。
学生

@maskarih完美无缺的答案!
加拉夫

14

这将仅列出已修改的文件:

svn status -u | grep M

svn状态仅显示本地工作区修改。创建分支后,这没有回答有关分支上所有更改的原始问题。
webnesto

2
M名称中包含的文件
Manolete

7
svn状态-u | grep ^ M
rhel.user,2016年

我使用状态-u | grep“ M”
马克·卡恩,

2

如果在编译过程中添加了-u选项,则将显示包括目标文件的内容。

因此,为了克服这一点,您可以像这样使用。

svn status -u | grep -v '\?' 

2
echo You must invoke st from within branch directory
SvnUrl=`svn info | grep URL | sed 's/URL: //'`
SvnVer=`svn info | grep Revision | sed 's/Revision: //'`
svn diff -r $SvnVer --summarize $SvnUrl

0

svn log -q -v显示路径并隐藏注释。所有路径都是缩进的,因此您可以搜索以空格开头的行。然后管cutsort整理:

svn log --stop-on-copy -q -v | grep '^[[:space:]]'| cut -c6- | sort -u

自分支点以来,这将获取分支上提到的所有路径。请注意,它将列出已删除和已添加的文件以及已修改的文件。我只是用它来获得我应该担心的东西,它需要审查来自新开发人员的稍微混乱的分支。

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.