我想要完成的是定期将裸 Git存储库推送到Subversion,以便其他人可以使用无人参与的脚本检查它。我不需要相反的方向,SVN - > GIT中。
我希望有人能帮我完成这件事。我见过的其他线程非常接近我所需要的,但没有一个拥有完整,合理的解决方案。 Pushing an existing git repository to SVN非常有用。
我的雇主维护着一个Subversion服务器,该服务器具有异地备份,冗余,并且可以通过Web界面访问,因此我的同事和经理可以进行随意的审查。
我在Git下有六个项目。 (我有多台机器,我做了大量的推测性分支,而且我经常提交。另外,Xcode在Git上效果更好。我们的SVN管理员同意Git对我来说几乎不可谈判。)我一直这样做是通过保持一个我的桌面计算机上的裸仓(由我的雇主和其所在地拥有),所有工作副本都跟踪。
我的雇主真的更喜欢我不这样做;如果他能提供IT级Git服务器,他会的。他的妥协是我找到了一种方法来获得launchd
(cron
)任务,以将我桌面的裸Git仓库同步到SVN服务器上的并行仓库。
我还没有找到任何指南来克隆裸Git repos到Subversion,更不用说无人看管了。我的猜测是我必须通过工作副本完成所有工作,SVN同步(但可能不是自动化)是一个已解决的问题。
我天真的过程是:
/dont-touch
的工作副本。/dont-touch
目录中,git svn init <svn-url> -s
git svn fetch
和git svn rebase
舞蹈。launchd
发出的剧本:cd /dont-touch
git fetch
git svn dcommit
够了。
这个类别包括我没有想过的所有事情。
我们希望我们可以设置它,让同步脚本每24小时触发一次,然后忘掉它。
我认为,在手动(1-3)设置期间,SVN身份验证将在第一次通过后进行缓存并自行处理。 Git身份验证不会成为问题,因为dont-touch
工作副本将由与裸存储库相同的用户拥有,并且可以由file:///
访问。
但是我对Git与SVN同步的印象是它很脆弱,需要交互式压缩和折叠来避免损坏SVN仓库,更不用说让它工作了。
答案 0 :(得分:1)
您可以将SubGit视为git-svn替代品。从2.0开始,它允许将本地Git与远程Subversion存储库相链接。你跑了一次:
$ subgit configure --svn-url <URL_of_SVN_project_root> repos.git
# edit repos.git/subgit/config, repos.git/subgit/authors.txt, and repos.git/subgit/passwd
$ subgit install repos.git
# now just work with repos.git as with usual git repository, but prefer "git pull --rebase" rather that "git pull" and "git merge --no-ff" rather than "git merge"
其中URL_of_SVN_project_root是包含trunk / branches / tags目录的URL。
然后克隆存储库'repos.git'并从/向/推/拉(可选择设置工作副本git config this way)。 'repos.git'中的特殊Git挂钩会将其与SVN同步。请注意,目前SubGit 2.0处于初级阶段,但我认为你描述的git-svn设置更可靠。