Subversion:如何在提交时删除属性

时间:2009-10-08 10:06:59

标签: svn properties pre-commit-hook

我的情况是这样的:我在家里设置了Subversion服务器,我们也在我工作的公司使用Subversion。

在工作中,我们使用锁定/编辑/解锁模型(主要是因为我们正在从Visual SourceSafe转换,目前更容易)。目前,这是通过在所有添加的文件上设置'needs-lock'属性来实现的(使用每台客户端计算机上SVN客户端配置文件的auto-props部分)。

但是,我不想将这个模型用于我的家庭SVN服务器(我更喜欢编辑/合并/提交工作方式),所以目前在我从工作PC到我的家庭服务器提交任何东西后,我有从我添加的任何文件中手动删除needs-lock属性。

有没有办法设置SVN客户端只将此属性应用于提交给特定服务器的文件?或者我是以错误的方式去做的:我应该在工作服务器上使用钩子来添加这个属性而不是客户端吗?

非常感谢任何帮助或建议。

编辑:显然,你不能在服务器上这样做(或者至少强烈建议你不这样做。)

2 个答案:

答案 0 :(得分:10)

我还写了一个小的Windows批处理文件,以递归方式从已经设置的任何文件夹中删除needs-lock属性。将这些行放入文本文件中:

svn propdel svn:needs-lock -R -q "%1"
svn commit "%1" -m "Removed needs-lock"

将其另存为remove-needs-lock.bat,并将其位置添加到PATH环境变量中。然后你可以运行:

remove-needs-lock c:\workingcopyfoldername

并且presto,所有文件不再需要锁定进行编辑。

答案 1 :(得分:3)

在SVN客户端的config文件中配置了subversion autoprops功能。还有一个单独的servers配置文件,支持特定于服务器的设置,但不幸的是,您无法覆盖那里的autoprop。

我建议你制作两个版本的配置: config.home config.work 。然后编写一个shell脚本(例如.bat文件),通过 config 复制其中一个脚本。这应该允许您在两种配置之间快速轻松地切换。