情景:
我在GitHub中托管了一个Git Repo: https://Nerian@github.com/Nerian/JPovray.git
SVN客户可以访问以下内容: http://svn.github.com/Nerian/JPovray.git
我在学校服务器上托管了另一台SVN服务器。我希望这台服务器成为GitHub上repo的镜像。
学校要求在学校使用SVN回购。
测试:
#Create the mirror repo
svnadmin create dest
#Make the hooks always pass
echo "#!/bin/sh" > dest/hooks/pre-revprop-change
echo "#!/bin/sh" > dest/hooks/start-commit
#Make the hooks executable
chmod +x dest/hooks/pre-revprop-change dest/hooks/start-commit
#Initialize the mirror repo to mirror the github repo
svnsync init file://`pwd`/dest http://svn.github.com/Nerian/JPovray.git
它给了我这样的信息:
svnsync:通过存储库界面禁止存储非常规属性'svn:wc:ra_dav:version-url',并且可能表示客户端存在错误
#Start the mirroring process
svnsync sync file://`pwd`/dest
它给了我这样的信息:
svnsync:“http://svn.github.com/Nerian/JPovray.git”的报告:200 OK(http://svn.github.com)
#Checkout the mirror repo.
svn checkout file://`pwd`/dest client
它给了我信息:
检查了修订版0。
目前,Github回购有6个版本。结账说有0。这意味着同步不起作用。客户端仓库是空的,而Github仓库有2个两个文件。
约束:
可以在学校的SVN回购中运行命令,我只需要联系SVN经理。
必须保留GitHub仓库的提交历史记录。我们是一个由3名成员组成的团队,教授需要知道谁做了什么。
编辑:
我联系了GitHub,他们告诉我们不可能镜像GitHub svn回购,因为它们不是真正的颠覆回购。这只是某种桥梁。
所以我开始编写解决方案:
https://github.com/Nerian/github_subversion_converter
这个Ruby应用程序允许将提交从一个SVN转移到另一个SVN。目前,截至2010年10月23日,它完成了自己的工作。但不保留提交作者姓名。我在那工作。应在一周内完成功能。对于当前状态,请检查repo页面。
答案 0 :(得分:0)
使用git-svn的纯Git可能更实用(对于手动镜像):