2013-01-20 76 views
4

我试图对外部svn存储库进行部分镜像。根据http://svnbook.red-bean.com/en/1.7/svn-book.html#svn.reposadmin.maint.replication.svnsync-partial,这应该是可能的svn 1.5。添加源路径时,部分svnsync在修订时失败

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

所以,这里是我所做的:

$ 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失败,因为它找不到/项目。这让我困惑。部分复制不是跳过不存在的路径吗?

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

有没有办法解决这个问题,也许是在特定的修订版本启动复制?任何建议不胜感激。

回答

2

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

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

你有没有尝试svk。即使它已经停止了项目。这是制作Subversion存储库的部分镜像的非常好的工具。我偶尔会用它来获取子项目的部分历史记录。比方说你有以下的颠覆目录结构。

 
trunk 
    MainProject 
    HelperTools 
    ImportantToolAsSubProject 
branches 
tags 

svk只能创建/ trunk/HelperTools/ImportantToolAsSubProject的颠覆历史。如果这个目录只有100个提交。创建的Subversion版本库只有100次提交。

+0

我一定会试一试。谢谢! – Pat

+0

链接被重定向到“某处”。 – KingCrunch

+0

我认为他们完全停止支持svk。 –

相关问题