尽管安装了钩子,svnsync 仍丢失了修订属性

尽管安装了钩子,svnsync 仍丢失了修订属性

我遇到了一个相当奇怪的问题。我们通过 cronjob(因为它需要从防火墙内部到外部,因此无法使用 post-commit-hook)和 svnsync 设置了 SVN-Mirror。我们按照要求安装了 pre-revprop-hook。

一切看上去都很好,但事实并非如此。

例如手动执行脚本时。

# svnsync --non-interactive sync file://<path-to-mirror> --source-username <usr> --source-password <pwd>
Committed revision 19817.
Copied properties for revision 19817.

没有错误,没有投诉。但如果检查修订属性,它会显示:

# svnlook info <path-to-mirror>


0
# svn info -r HEAD file://<path-to-mirror> 2>&1
Path: <root-of-mirror>
URL: file://<path-to-mirror>
Repository Root: file://<path-to-mirror>
Repository UUID: <uid>
Revision: 19817
Node Kind: directory
Last Changed Rev: 19817

因此作者和时间戳信息不知何故丢失了。但我们的内部流程需要这些信息。由于没有产生任何错误或警告,我完全不知道从哪里开始查找。一切都是本地的(远程主服务器除外),因此没有服务器日志可查看。

我还尝试通过 svnsync copy-revprops 手动重新复制(http://chestofbooks.com/computers/revision-control/subversion-svn/svnsync-Copy-revprops-Ref-svnsync-C-Copy-revprops.html)。 它说

Copied properties for revision 19885.

但当我询问他们时,结果还是一样。

有什么想法可以解决该问题,或者更好的方法 - 如何解决它?任何想法都值得赞赏。

答案1

经过一番尝试,我们找到了答案……这是一个权限问题。用于创建备份的用户通过以下方式在存储库级别拥有读取权限:

[/]
mirror = r

但在一些(如果不是大多数)子目录中,它被覆盖了

[svn-rep:/some/path/to/project]
* = 

奇怪的是,工具 svnsync 并没有抱怨这一点,就像密码不正确时那样。修订版本也被复制了,只有属性出现了问题……

我们通过添加一个来解决问题

mirror = r

在每个文件夹上...

相关内容