什么svn命令会列出分支上修改的所有文件?

时间:2008-10-02 00:28:45

标签: svn

在svn中,我有一个创建的分支,比如修订版22334.然后在分支上发布了。

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

8 个答案:

答案 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显示路径并隐藏注释。所有路径都是缩进的,因此您可以搜索以空格开头的行。然后通过管道传输到cutsort进行整理:

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 选项。