仓库未启用接受修订属性更改;请请求管理员创建一个pre-revprop-change钩子。

10

你好,我正在尝试将我的代码库与另一个服务器/机器上的代码库进行镜像同步。

我有两台不同的机器(窗口)位于两个不同的服务器上。在一台机器上,我已经有了一个SVN代码库(源代码库),我想要将此代码库与另一台机器上的另一个代码库(目标代码库)进行同步。因此,我在另一台机器上创建了一个空的代码库(目标代码库)。但是,当我想要使用源代码库初始化目标代码库时,我遇到了错误。 注意:我已经在钩子文件夹中创建了pre-revprop-change.bat文件。 pre-revprop-change.bat文件只有一行代码,即exit 0。

4个回答

17
  1. 打开您的Visual SVN服务器。

  2. 右键单击您要创建pre-revprop-change钩子的存储库。

  3. 单击弹出窗口上的属性

  4. 现在单击Hooks选项卡。

  5. 最后,您将看到pre-revision properties change hook选项,请单击它。

  6. 单击编辑选项。

  7. 一个文本区域将会出现,在这里输入exit 0

  8. 单击OK

就这样。


5
如果您只想允许更新日志消息,则 https://mattrefghi.com/blog/solutions/subversion/subversion-repository-has-not-been-enabled-to-accept-revision-propchanges/ 给出了第7步的正确命令(而不是 exit 0)。我知道这不是问题所问的,但这是我来到此 SO 页面的原因。 - Paul B.
步骤7。我发现没有必要输入 exit 0。只需点击“确定”。 - Hans Vonn

0

当您需要镜像您的Subversion存储库时,请考虑使用VisualSVN Distributed File System (VDFS)。它比基于svnsync的复制更容易部署和维护。此外,它至少比svnsync快十倍。


0
在您的存储库文件夹中进入hooks文件夹。您可能会在那里找到模板(我的模板是Linux shell脚本,但我的存储库在Windows上)。 在Linux上,您可以将模板复制到.sh文件中。 在Windows上,创建一个pre-revprop-change.bat文件。
   ::SET REPOS="%1"
   ::SET REV="%2"
   ::SET USER="%3"
   ::SET PROPNAME="%4"
   ::SET ACTION="%5"
   
   if "%5" EQU "M" (
   if "%4" EQU "svn:log" (
   :: return "success"
   exit 0
   ))
   
   :: NOTE: write to &2, which is STDERR
   echo "Changing revision properties other than svn:log is prohibited" >&2
   
   :: return "error"
   exit 1

在我的情况下,它立即生效,无需重新启动服务。


0

我正在尝试使用SVN同步在Windows计算机上复制SVN仓库,使用调用svn命令行函数的python脚本。

当我在CMD.EXE中运行以下命令时,出现错误

svnsync init file:///c:/path/to/reponame https://remote.server/svn/reponame svnsync:E165006:存储库未启用接受修订版本属性更改;

我在c:/path/to/reponame/hooks/pre-revprop-change中有exit 0。我使用CR和CRLF并获得相同的结果。

我尝试转到上面的评论中的链接,但似乎是一个失效的页面。

如果我在WSL(Windows子系统Linux)中运行此命令,则正常工作(在pre-revprop-change文件中使用'#!/bin/sh \n exit 0 \n')

我假设这是因为Windows和Linux版本的svn命令行实用程序存在差异。

像往常一样,Windows版本被砍掉了。


实际上,你只需要给文件名加上扩展名:pre-revprop-change.bat或.cmd。 - kfsone

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接