在svn中,我有一个创建的分支,比如修订版22334.然后在分支上发布了。
如何获取分支上已更改的所有文件的列表与中继上的文件相比?我不希望在创建分支和“现在”之间看到在主干上更改的文件。
答案 0 :(得分:77)
我会这样做:
svn diff -r 22334:HEAD --summarize <url of the branch>
答案 1 :(得分:40)
如果使用带有-u选项的status命令
,您还可以获得所有已更改文件的快速列表svn status -u
这将显示当前代码库中文件的修订版与存储库中的最新修订版。当我真的想看到文件本身的差异时,我只使用差异。
这里有一个关于svn命令的好教程解释了很多这些常见的场景:SVN Command Reference
答案 2 :(得分:13)
这将仅列出修改过的文件:
svn status -u | grep M
答案 3 :(得分:11)
您可以使用以下命令:
svn status -q
根据svnbook:
With --quiet (-q), it prints only summary information about locally modified items.
警告:此命令的输出仅显示您的修改。因此,我建议您使用svn up
获取该文件的最新版本,然后使用svn status -q
获取您修改过的文件。
答案 4 :(得分:2)
-u选项将显示包括目标文件(如果在编译期间添加它们)。
所以,为了克服这个问题,你可以这样使用。
svn status -u | grep -v '\?'
答案 5 :(得分: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
答案 6 :(得分:0)
svn log -q -v
显示路径并隐藏注释。所有路径都是缩进的,因此您可以搜索以空格开头的行。然后通过管道传输到cut
和sort
进行整理:
svn log --stop-on-copy -q -v | grep '^[[:space:]]'| cut -c6- | sort -u
这将获取自分支点以来分支上提到的所有路径。请注意,它将列出已删除和已添加以及已修改的文件。我只是用它来获取我应该担心的东西,它需要审查来自新开发人员的稍微混乱的分支。
答案 7 :(得分:0)
我将这个过程分为两步。首先,我找到了分支起源的版本。从分行的结账处:
svn log --stop-on-copy |tail -4
--stop-on-copy
告诉 SVN 只对分支后的条目进行操作。 tail
为您获取最后一个日志条目,即包含分支信息的条目。以“r”开头的数字是您分支的修订版。然后,使用 svn diff
查找自该版本以来的更改:
svn diff -r <revision at which you branched>:head --summarize
--summarize 选项仅显示文件列表,没有实际的差异内容,类似于 'svn status' 输出。如果您想查看实际差异,只需删除 --summarize
选项。