svn - 添加源路径时,部分 svnsync 在修订时失败

标签 svn svnsync

我正在尝试制作外部 svn 存储库的部分镜像。根据http://svnbook.red-bean.com/en/1.7/svn-book.html#svn.reposadmin.maint.replication.svnsync-partial ,这应该可以从 svn 1.5 开始。

我遵循了http://svnbook.red-bean.com/en/1.7/svn-book.html#svn.reposadmin.maint.replication.svnsync 中描述的所有步骤。 ,除了我没有使用“svnsync”用户。相反,所有命令都以本地用户 'svn' 的身份执行,并且使用 file://协议(protocol)访问本地存储库。

所以,这就是我所做的:

$ svnadmin create /var/svn/mirrors/foreign-mirror

$ cat > /var/svn/mirrors/foreign-mirror/hooks/pre-revprop-change <<EOF
#!/bin/sh
USER="$3"
if [ "$USER" = "svn" ]; then exit 0; fi
echo "Only the svn user may change revision properties" >&2
exit 1
EOF

$ chmod +x /var/svn/mirrors/foreign-mirror/hooks/pre-revprop-change

$ cat > /var/svn/mirrors/foreign-mirror/hooks/start-commit <<EOF
#!/bin/sh
USER="$2"
if [ "$USER" = "svn" ]; then exit 0; fi
echo "Only the svn user may commit new revisions" >&2
exit 1
EOF

$ chmod +x /var/svn/mirrors/foreign-mirror/hooks/start-commit

$ svnsync initialize \
file:///var/svn/mirrors/foreign-mirror \
https://svn.foreign.com/svn/Projects/X/Y \
--source-username #### --source-password ####

$ svnsync synchronize \
file:///var/svn/mirrors/foreign-mirror \
--non-interactive --source-username #### --source-password ####
Committed revision 1.
Copied properties for revision 1.
Committed revision 2.
Copied properties for revision 2.
...
Committed revision 80089.
Copied properties for revision 80089.
Committed revision 80090.
Copied properties for revision 80090.
svnsync: Path 'Projects' not present

查看svn日志:
$ svn log https://svn.foreign.com/svn/Projects/X/Y -v -r80091
------------------------------------------------------------------------
r80091 | John.Doe | 2011-09-27 06:42:21 +0200 (Tue, 27 Sep 2011) | 1 line
Changed paths:
   A /Projects/X/Y

如果我理解正确,重放提交 #80091 会失败,因为它找不到/Projects。这让我很困惑。部分复制的目的不是跳过不存在的路径吗?

我在 ubuntu linux(目标存储库)上运行 svn 1.6.6 并且可以完全控制它。
我无法控制源存储库,用户名和密码只能访问/Projects/X/Y 及以下。无权访问/Projects 或/Projects/X。

有没有办法克服这个问题,也许是在特定的修订版开始复制?任何建议都非常感谢。

最佳答案

我对 svnsync 问题没有任何建议,但你正在尝试做

"I'm trying to make a partial mirror of an external svn repository.". 

你试过svk .即使它是已停产的项目。它是制作颠覆存储库的部分镜像的非常好的工具。我偶尔用它来获取子项目的部分历史。假设您有以下颠覆目录结构。

树干
主要项目
助手工具
重要工具作为子项目
分支机构
标签

svk 只能创建/trunk/HelperTools/ImportantToolAsSubProject 的颠覆历史。如果这个目录只有 100 次提交。创建的 subversion 存储库将只有 100 个提交。

关于svn - 添加源路径时,部分 svnsync 在修订时失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14423230/

相关文章:

windows - SVN说我需要执行清理,但是清理失败

svn - 在 svnsync 中处理大文件

svn - 使用 svnsync & hg convert 将 SVN 同步到 Mercurial——未命中 svn :externals?

visual-studio - SVN 与 TFS 集成

svn:externals :本地目录中有多个外部存储库

eclipse - 如何将 TortoiseSVN 与 Eclipse IDE 集成?

eclipse - Eclipse 中没有 Subversion 图标,也没有团队操作,已尝试过 Subclipse 和 Subversive

svn - 如何将一系列部分 svn 转储组合到一个存储库中?

svn - 同步 SVN 存储库,然后使其独立(复制存储库)

SVN post-commit hook 修改外部