在SVN中查找新添加的文件行

时间:2011-12-26 10:01:16

标签: svn

我在svn项目下工作,我只是想解析我提交的源文件,并使用钩子脚本自动查找文件中新添加的行,怎么做?

4 个答案:

答案 0 :(得分:1)

svn log + svn blame

尝试在WC

中开始svn log -v -q -l 1

答案 1 :(得分:1)

第一步是使用

提取更改的路径
svnlook changed REPO_PATH

你必须使用-r选项作为post-Hook脚本中已知的修订版(CommittedRev)。

上面将给出一个必须由脚本解析的已更改文件列表。

如果您尝试提取添加/修改的行svn blame,它将为您提供在特定修订版中修改过的行...

svn blame -rCommittedRev:CommittedRev file:///Repository/ | grep "^ CommittedRev "

你无法通过责备提取的是已被删除的行。

答案 2 :(得分:1)

您可以使用svnlook来获取更改的差异,然后使用+符号开头的grep,这表示添加了行。

例如,如果我想检查是否添加了引用System.out的行,我可以使用以下管道:

svnlook diff -t "$TXN" "$REPOS" | grep -E "^\+" | grep -qE "System\.out"

测试返回值 - 0表示找到匹配的行。

答案 3 :(得分:1)

否否否

请勿使用钩子进行此操作!

当您使用钩子脚本时,您的用户将等待挂钩完成。相反,使用Jenkins来处理任务。 Jenkins是一个构建系统,但你可以让它做这样的事情并完全跳过构建步骤。这样,您的用户就不必等待您的钩子脚本完成,并且您可以自动发布您正在进行的差异的结果。

顺便说一下,为什么只有新添加的行而不是所有的变化?您可以解析svn diff的结果以查找所有添加内容,但我会假设您对所有更改感兴趣。