我在svn项目下工作,我只是想解析我提交的源文件,并使用hook脚本自动在文件中查找新添加的行,怎么做?在SVN中查找新添加的文件行
回答
SVN日志+ SVN责备
试用开始svn log -v -q -l 1
内WC
的第一步是通过使用
svnlook changed REPO_PATH
提取改变的路径,你必须使用-r选项在post-Hook脚本中已知的修订(CommittedRev)。
以上将给出必须由脚本解析的已更改文件的列表。
如果您尝试提取添加/修改svn的行怪,这将给你已经在特定版本被修改的行...
svn blame -rCommittedRev:CommittedRev file:///Repository/ | grep "^ CommittedRev "
你不能责备提取物线已被删除。
显示svn blame命令中显示错误? – shaggy 2011-12-26 11:32:03
你的意思是什么样的错误? – khmarbaise 2011-12-26 18:30:41
您可以使用svnlook
来获取变化的差异,然后grep用于以+
符号开头的行,表示添加的行。
例如,如果我想查看到任何线路是否加入其中提到System.out
,我可以使用下面的管道:
svnlook diff -t "$TXN" "$REPOS" | grep -E "^\+" | grep -qE "System\.out"
和测试的返回值 - 0意味着它找到匹配线。
谢谢......其有帮助 – shaggy 2011-12-26 11:47:09
否否否
不要使用这种钩呢!
当您使用挂钩脚本时,您的用户将被卡住,等待挂钩完成。而是使用Jenkins来处理该任务。詹金斯是一个构建系统,但你可以让它做这样的事情,并完全跳过构建步骤。这样,用户不必等待钩子脚本完成,并且您可以在其中自动发布您所做的差异结果。
顺便说一句,为什么只有新添加的行,而不是所有的更改?您可以解析svn diff
的结果以查找所有添加项,但我会假设您对所有更改都感兴趣。
如果是一个快速检查(例如,几百毫秒),为什么用户必须等待Jenkins作业异步通知她?一个明智的预先提交钩子可以确保提交不首先发生,如果它是一个有问题的提交。 – Avi 2011-12-27 14:20:11
@Avi - 这个挂钩是假设检查新添加的行。你打算如何将这些行回报给用户?你打算给他们发邮件吗?更新网页?使用詹金斯解决_reporting问题_因为詹金斯有一个地方来显示报告。另外,你有詹金斯变化的全部历史。另外,它不会在解析更改时阻止用户,然后尝试发送电子邮件或更新网页。钩子可以直接和立即地与用户沟通。预提交钩可防止用户做错事。为此,詹金斯更好。 – 2011-12-27 18:31:54
我不确定你是如何阅读所有这些问题的。这个问题并没有说他想要增加的行的*报告,他只是想找到它们;我正假设自动对他们做些什么。不知道他想用他们做什么,我想我会回答这个问题(这是怎么做到的),而不是告诉他他做错了。 – Avi 2011-12-27 22:03:16
- 1. 在SVN中添加新文件
- 2. Linux:查找新添加的文件
- 3. perl在文件中找到文本,然后添加新行
- 4. 如何查找文件并根据内容添加新行?
- 5. 如何在文件中添加新行
- 6. 如何在文件夹中找到新添加的文件?
- 7. 如何在eclipse中自动添加新文件到SVN
- 8. 从批处理文本文件中查找并添加行
- 9. 如何在日志文件中添加新行时检查 - Java
- 10. Xcode添加新文件到svn中的现有项目
- 11. svn合并单个文件。添加新文件
- 12. 查找已添加文件的提交
- 13. 在VBA中查找并添加文本
- 14. 如何使SVN只更新文件,但不添加新的文件
- 15. 找到上一次更改/添加文件到svn的名称
- 16. 添加新文件时未找到DoNotChange
- 17. svn不承诺我添加的文件?
- 18. “在文件中查找”在.svn目录中显示结果
- 19. 添加/查找样式文件/乳胶
- 20. 添加新控件后添加新行
- 21. SVN:重新添加一个意外删除的空文件夹?
- 22. SVN不会下载新添加的文件
- 23. svn commit显示已添加的更新文件
- 24. LibGit2Sharp查找哪些文件被更新/添加/删除后
- 25. 在SVN工作副本中查找包含给定SVN URL的文件
- 26. 如何在新行中添加.txt文件中的内容
- 27. 查找文本文件中的字符串,并添加了一些该行
- 28. 在执行svn commit时在非svn文件夹上自动更新文件
- 29. 在SVN中添加由jenkins生成的文件
- 30. 正确的方法来添加svn:可执行文件
OP提到了“自动”和“钩子脚本”。我在这里看到没有钩子... – Dialecticus 2011-12-26 10:39:52
两个这些命令+一些grepping +一些逻辑,放在post-commit - 成为钩子 – 2011-12-26 10:49:19
这应该从服务器端 – shaggy 2011-12-26 10:59:11