【发布时间】:2012-11-19 04:47:46
【问题描述】:
总结:
我想要完成的是定期将一个 bare 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 存储库克隆到 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 的印象是它很脆弱,需要交互式 nips 和 tucks 以避免损坏 SVN 存储库,更不用说让它工作了。
【问题讨论】:
-
我认为,this answer 将满足您的大部分需求