SVN钩子从提交的文件生成文件



我有一个SVN存储库

trunk/file1.txt
trunk/file2.txt
trunk/fileR.txt

在服务器上,我有一个由用户www-data拥有的trunk (/var/www/trunk)的工作副本签出。

fileR.txt对除www-data(受authzsvnlook author限制)之外的所有用户都是只读的。fileR.txt应由file1.txtfile2.txt合并生成:cat file1.txt file2.txt > fileR.txt

我想要的是每次在trunk/file1.txttrunk/file2.txt上有一个提交,应该运行一个脚本来更新服务器上的工作副本,连接文件并将新的fileR.txt提交到存储库。

我想到的是一个完成上述所有功能的post-commit钩子,但我不确定SVN是否以及如何在之前的提交完成之前处理一个新的提交。

示例:那么,commit1修改了file1.txt,预提交钩子运行(如果有的话),事务被提交到数据库,然后post-commit钩子运行。post-commit钩子实际上创建了一个commit2,它需要在commit1的post-commit钩子真正完成之前完成。

SVN是否支持?如果没有,你有什么其他的工具/工作流程的建议?

谢谢

假设你创建了一个post-commit hook来做你想做的事情…

    我在file1.txt中提交了一个更改。
  1. Post-commit钩子拾取更改,并创建一个新文件fileR.txt
  2. Post-commit change提交这个导致预提交钩子被触发的更改。
  3. 然后,你又回到了步骤1

还有一个问题是在服务器上创建一个工作副本,在那里你的post commit钩子可以操作。当有人进行提交时,您必须更新甚至签出服务器上的工作副本,连接更改,然后在不触发提交钩子的情况下进行新的提交。记住,人们可能会创建分支,所以你可能需要有多个工作副本。

并且,当你的post-commit钩子完成所有这些时,你的用户必须等待post-commit钩子完成。

另外,如果我做了一个提交,我的工作副本现在已经过期了。我现在必须提交,然后做一个更新,因为服务器做了一个提交。

我希望我已经说服了你,这不是一个真正的好主意。这可能的,但肯定是不可取的。事实上,如果我看到一个构建工程师做这样的事情,我会解雇他们。

我建议你看看詹金斯。Jenkins是一个持续构建服务器。你能做的就是让Jenkins在提交完成时为你创建你的file .txt文件。这个文件可以很容易地从Jenkins服务器下载并公开提供。你也可以把你的fileR.txt创建一个PDF文件。

因此,合并后的文件仍然可用,并且可以被其他进程下载,但它不会导致提交后钩子触发另一轮钩子。并且,fileR.txt只能被访问特定Jenkins作业的所有人读取。

相关内容

  • 没有找到相关文章

最新更新