如何禁止subversion提交到svn:external to revisions?

mar*_*nus 5 svn permissions svn-externals

我们将svn:externals用于库的特定修订版,例如

xyzlib -r12345 https://asdf.asdf.local/xyzlib/trunk/
Run Code Online (Sandbox Code Playgroud)

当您在工作副本中对这样的已检出外部进行修改时,即使外部链接指向特定修订而不是HEAD,也可以提交.

svn update提交后运行时,更改将在工作副本中消失,因为subversion会将所有内容还原为修订版12345.因此,您自己从未真正看到更改,但它们仍然在HEAD中,这很糟糕.

是否可以仅在外部未指向HEAD修订版时禁止提交?

Eri*_*man 3

对于这些类型的验证,我还建议使用预提交挂钩,但我建议使用像 SVNKit - http://svnkit.com/这样的库,而不是编写一个很容易变得无法理解的脚本(如果您了解 Java)。

我自己使用这个库编写了一些预提交挂钩,并且使用起来非常容易。您编写了一个小型的可运行 Java 程序,Subversion 从预提交挂钩中调用该程序。然后很容易提取属性或 URL 的一部分来进行验证,如果它不适用您的“规则”,则拒绝提交。

看一下 SVNLookClient 和 SVNChangeEntry 类 - 它们具有适用于最常见情况的方法(例如,提取有关正在进行的提交的信息。)