从git-svn转到git

时间:2019-03-06 20:49:27

标签: git svn version-control git-svn

我们将项目的主要存储库保存在SVN中。然后,为了简化工作,我们每个人都将git svn clone的SVN中继连接到git的主节点,并且我们使用git flow进行工作。当我们在功能分支中完成工作时,我们将其合并到master并执行git svn dcommit将更改推送到SVN存储库。

但是现在我们需要放弃SVN存储库并完全切换到git。如果我们要保留尚未合并到主节点中的历史记录和分支,该如何实现?

我是这样认为的:我们使用git svn clone来复制当前SVN存储库的干净副本并将其放置在我们的服务器上-这将是我们的“中央”存储库。现在,我们将该存储库添加为现有存储库的远程存储库。但是我该怎么办呢?我可以用新主人换旧主人吗?然后我可以合并旧的,尚未合并的功能分支到新的母版,而不会发生不必要的冲突吗?

2 个答案:

答案 0 :(得分:2)

让我们从头开始:您应该在git上设置一个“干净”的svn克隆,而没有单独开发人员所做的任何私有工作。这样一来,您就可以共享相同的修订版本,否则人们的历史将不尽相同,……甚至更糟的是,git上的多个修订版本实际上与单个svn修订版本匹配。

然后,每个开发人员都可以将此仓库用作正式的“远程”,可以添加到当前设置中。一旦有了它们,他们就可以随意改变其私人分支的基础,这样就不会丢失任何以前的工作(我并不是说这是一件琐碎的事……每个分支都有不同的起点,所以如果您想正确地完成工作,则必须分别对待每个分支。...甚至可能考虑使用脚本来分析在旧svn修订版与来自新的通用svn克隆的新修订版本),然后,您(每个开发人员)都可以摆脱他们一开始使用的原始(svn)远程仓库,以便现在可以开始与纯git工作流程进行交互,并且忘记svn的互动。

答案 1 :(得分:0)

由于您完全放弃了SVN,因此您可以告诉每个人在某个截止日期将其开放式功能分支提交到SVN分支。然后“冻结” SVN,将其转换为Git(包括功能分支)。之后,每个开发人员都可以克隆新的存储库并轻松继续工作。

由于在截止日期后SVN无关紧要,因此“脏”半就绪的功能分支不再重要。