概述:
我希望能够定期将一个裸的Git仓库推送到Subversion中,以便他人可以检查它,使用一个无人值守的脚本。我不需要相反的方向,即SVN-> Git。
我希望有人能帮助我完成这个任务。我看到的其他线程非常接近我需要的内容,但没有完整、可行的解决方案。将现有的git存储库推送到SVN非常有帮助。
我的问题:
我的雇主维护着一个Subversion服务器,该服务器具有远程备份、冗余,并且可以通过Web界面访问,以便我的同事和经理可以进行日常审查。
我有六个Git项目。(我有多台机器,我进行了很多推测性的分支,我经常提交。此外,Xcode与Git配合使用效果更好。我们的SVN管理员同意Git对于我来说是不可避免的。)我一直通过在桌面机器上保留一个裸仓库(由我的雇主拥有并位于其场所),所有工作副本都跟踪它来实现这一点。
我的雇主真的希望我不要这样做;如果他能提供IT级别的Git服务器,那就好了。他的妥协是我找到一种方法,让一个launchd
(cron
)任务将我的桌面裸的Git仓库与SVN服务器上的一个并行仓库同步。
我的方法(可能不令人满意):
我没有找到任何关于克隆裸Git存储库到Subversion的指南,更不用说无人值守地进行了。我的猜测是,我必须通过工作副本来完成所有操作,对于其同步到SVN(但也许不是自动化)是一个已解决的问题。
我的天真过程是:
- 从裸库中克隆一个永远不会编辑的工作副本到
/dont-touch
目录中。 - 在不编辑的
/dont-touch
目录中,执行git svn init <svn-url> -s
- 执行所需的
git svn fetch
和git svn rebase
操作。 - 每晚,根据
launchd
触发的脚本:
4.1.cd /dont-touch
4.2.git fetch
4.3.git svn dcommit
问题:
我无知
话说得够多的了。
这类问题包括我没有想到的所有事情。
交互性
我们希望能够设置它,让同步脚本每24小时触发一次,并将其遗忘。
SVN认证会被缓存,并且在第一次手动(1-3步)设置后自行处理。Git认证不是问题,因为“dont-touch”工作副本将由与裸仓库相同的用户拥有,并且可以通过“file:///”访问。但是我对将Git同步到SVN的印象是它很脆弱,需要交互式地微调以避免损坏SVN仓库,更不用说使其正常工作了。