我有一个要求。我希望在SVN中提交文件时实现自动化。就像提交该特定文件时一样,它将触发脚本,该脚本将使用该文件的版本号重命名该提交的文件。
例如,如果我在SVN中的特定位置提交文件test.js(version:201)
,则提交后它将自动重命名为test_versionnumber.js(test_201.js)
。请帮忙解决一下。
答案 0 :(得分:0)
使用Subversion(或任何其他VCS)修改飞行中事务是一个非常糟糕的主意。这样做,您将改变提交者尝试提交到存储库的意图和内容。您还可以立即使提交者的工作副本过时。
更不用说失败案例了。如果您的修改错误会怎样?做出错误的假设?打破构建?崩溃在剧本中间?
Subversion 已经在每个修订版中都有一个文件内容记录,并且不需要在Subversion中将这些信息保存在您的文件名中。
如果您打算这样做(出于什么原因,我无法想象),请将其作为构建/测试/部署过程的一部分,但不要提交对存储库的更改。如果您的开发过程依赖于以这种方式命名的文件,那么这些过程可能会被破坏 - 因此您需要修复 ,而不是使用Subversion中的文件名。
或者,在您的提交后挂钩脚本中,签出工作副本并重命名所有文件。然后再重新发送。但是,那么您将使用户无效。每次提交都要复制工作副本,并在文件名上进行军备竞赛。
答案 1 :(得分:0)
使用subversion只有服务器挂钩。这意味着解决ACID它可以接受或拒绝svn请求。
当test.js
使用pre-commit-hook在其文件名中没有versionnumber时,你可以做的就是拒绝服务器端的提交。是的,这使其对提交者负责,但正如alroc所说:否则它会使用户无效。