我在svn项目下工作,我只是想解析我提交的源文件,并使用钩子脚本自动查找文件中新添加的行,怎么做?
答案 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
的结果以查找所有添加内容,但我会假设您对所有更改感兴趣。