从git-svn转到git

问题描述 投票:0回答:2

我们将项目的主存储库保存在SVN中。然后,为了让工作更轻松,我们每个人都将git svn clone SVN的主干放到了git的主人身上,我们使用git flow。当我们的工作在功能分支内完成时,我们将其合并到master中并执行git svn dcommit以将更改推送到SVN存储库。

但现在我们需要放弃SVN存储库并完全切换到git。如果我们想要保留尚未合并到主人的历史和分支,我们怎样才能实现呢?

我这么想:我们用git svn clone制作一份当前SVN存储库的干净副本并将其放在我们的服务器上 - 它将成为我们的“中央”存储库。现在,我们将此存储库添加为现有存储库的远程存储库。但是我怎么能这样做呢?我可以用新的主人改变旧主人吗?然后我可以将旧的,尚未合并的功能分支合并到新主服务器而不会产生不必要的冲突吗

git svn version-control git-svn
2个回答
2
投票

让我们从头开始:你应该在git上设置一个“干净的”svn克隆,而不需要单独的开发人员做过的任何私人工作。这样你们都可以共享相同的版本,否则人们将会有不同的历史记录无法聚在一起......甚至更糟糕的是,对git实际匹配单个svn版本的多个修订版本。

然后,每个开发人员都可以使用此repo作为官方“远程”,他们可以添加到他们当前的设置。一旦他们有了这个,他们可以随意改变他们的私人分支,这样就没有人会失去他们以前的任何工作(我不是说这是一件微不足道的事情......每个分支都会有不同的起点,所以如果你想要的话为了正确地完成工作,每个分支都必须单独处理....甚至可以考虑使用一个脚本来处理旧的svn修订版与新的常见svn克隆的新修订版之间的匹配分析)和然后你(每个开发人员)可以摆脱他们在开始时使用的原始(svn)远程仓库,这样你现在就可以开始与纯git工作流进行交互并忘记svn交互。


0
投票

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

由于SVN在切换日期之后无关紧要,因此“脏”,半就绪功能分支无关紧要。

© www.soinside.com 2019 - 2024. All rights reserved.