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