试图通过ssh进行svn导入

时间:2013-08-23 06:47:54

标签: svn version-control ssh

我正在尝试从群集导入目录并创建本地主干。我正在尝试使用svn + ssh来做到这一点。

svn import svn+ssh://user@cluster:/path/to/file file:///path/to/svn/repo/trunk -m "Initial import from cluster"
svn: 'svn+ssh://user@cluster:/path/to/file' does not exist

这个命令有问题吗?为了澄清有关连接的任何初始问题,我可以使用ssh登录到集群而没有任何问题,并且文件的路径是正确的。本地存储库正在运行,并且其中包含其他分支,我在本地提交。

1 个答案:

答案 0 :(得分:0)

首先,你不需要:在svn + ssh:// URL上的user @ cluster之后。

其次,您不能使用import从一个存储库复制到另一个存储库。

我建议使用svnrdump或svnsync执行此任务。

要使用svnsync,您可以执行以下操作:

svnadmin create repo
echo '#!/bin/sh' > repo/hooks/pre-revprop-change
echo 'exit 0' >> repo/hooks/pre-revprop-change
chmod a+x repo/hooks/pre-revprop-change
svnsync init file://`pwd`/repo svn+ssh://user@cluster/path/to/repo
svnsync sync file://`pwd`/repo

或者使用svnrdump:

svnadmin create repo
svnrdump svn+ssh://user@cluster/path/to/repo | svnadmin load repo
如果您希望继续在本地保留存储库的镜像,则svnsync可能是最好的方法,因为您可以在将来运行sync命令以更新存储库以匹配另一方。请注意,对本地仓库进行其他更改将会破坏继续执行此操作的能力。您可以在此处阅读有关svnsync的更多信息: http://svnbook.red-bean.com/en/1.7/svn.reposadmin.maint.html#svn.reposadmin.maint.replication

svnsync方向假定为unix环境。如果你在Windows上,你可能需要用bat文件替换关于pre-revprop-change钩子的位。你可以在这里找到一些细节: What is a pre-revprop-change hook in SVN, and how do I create it?

如果你想只是分叉repo并在本地单独处理它,那么svnrdump可能会更好。你可以在这里阅读更多关于svnrdump的信息: http://svnbook.red-bean.com/en/1.7/svn.reposadmin.maint.html#svn.reposadmin.maint.migrate.svnrdump

理想情况下,我们可以更好地支持跨存储库合并,这可能更符合您实际需要的内容,但我没有一个很好的解决方案。有一种相当可怕的做供应商分支的方法: http://svnbook.red-bean.com/en/1.7/svn.advanced.vendorbr.html