2011-06-01 13 views
5

我们目前的svn结构如下:SVN与git:如何处理我们的不规范,可能错误地支SVN

trunk 
-- project 
-- projectDao 
-- projectResources 
branches 
-- project-1.0 
-- projectDao-1.0 
-- projectResources-1.0 
-- project-2.0 
-- projectDao-2.0 
-- projectResources-2.0 
tags 
-- project-1.0.0 
-- ... 

更糟糕的是项目1.0从项目projectDao-1.0支projectDao(每个单独移动提交)。理想情况下它会是这样的。

这是提交日志:

trunk 
-- project 
-- projectDao 
-- projectResources 
branches 
-- 1.0 
---- project 
---- projectDao 
---- projectResources 
-- 2.0 
---- project 
---- projectDao 
---- projectResources 
tags 
--1.0.0 
----project 
---- ... 

这是很有道理的方式。然后我们应该从干线分支到1.0而不是2个不同的提交。

但是我们现在想要切换到git(永久),并且我不知道该如何开始。

我真的不知道我该怎么做。当我只是用标准布局克隆我的仓库时,我得到了一些东西。

* master 
    remotes/project-1.0 
    remotes/[email protected] 
    remotes/project-2.0 
    remotes/[email protected] 
    remotes/projectDao-1.0 
    remotes/[email protected] 
    remotes/projectDao-2.0 
    remotes/[email protected] 
    remotes/projectResources-1.0 
    remotes/[email protected] 
    remotes/projectResources-2.0 
    remotes/[email protected] 
    remotes/tags/project-1.0.0 
    remotes/tags/projectDao-1.0.0 
    remotes/tags/projectResources-1.0.0 
    remotes/trunk 

这是gitg产生

This is what gitg generates

我不知道我该如何使用衍合得到这个权利,如:

* master 
    remotes/1.0 
    remotes/2.0 
    remotes/tags/1.0.0 
    remotes/trunk 
+0

请输入“git branch -a”并在该问题中发布该命令的完整输出。 – ralphtheninja 2011-06-02 14:01:40

+0

看来你已经多次导入和导入到git中,这是真的吗?例如,主人似乎是自己的一棵子树,“绿色”也是如此。 – ralphtheninja 2011-06-02 16:01:18

回答

5

如果我理解正确,您想要将导入的分支更改为1.0分支中的目录。此外,当你维护你的svn仓库时,你不会提及这是永久迁移还是git-svn结账。

如果这只是一个git-svn checkout而且目标是继续使用原始SVN作为中央存储库,那么我只需执行一次签出而不使用标准布局开关并在SVN的目录中工作。这有点肮脏,但你在推回到SVN时没有问题。

如果您想要转换存储库,请向所有分支添加一个提交,将该分支的内容放入根目录中的一个目录中,以便将分支合并在一起。您不会在GIT历史中使用旧的分支结构来释放SVN历史,但未来将是新风格。

只有在您想要转换所有历史记录的情况下,您才需要创建目录和重新绑定。

+0

我们会永远迁徙。然而,这对我来说是非常新的,所以我不太了解如何做到这一点:_add向所有分支提交,将该分支的内容放入根目录中,以便在分支之后合并分支。并非真正需要改变所有的历史。 – 2011-06-02 15:00:32

+0

为了得到一个1.0和2.0分支(对于3.0和更高版本,你可以将主分支分支到3.0分支):在这些分支上(比如Project-2.0,ProjectDao-2.0和ProjectResources-2.0或者工作副本这3个分支中的)你创建一个目录Project,第二个ProjectDao,第三个ProjectResources与第三个对应的主目录,并将所有文档分别移动到那些,然后提交,然后合并到新的2.0分支中。 – LaPingvino 2011-06-02 15:07:08

+0

谢谢,那是我所需要的 – 2011-06-02 16:50:54

0

你应该能够变基这些分支,你认为适合与混帐。只要你可以从svn得到完整的历史记录到git,从你认为合适的任何提交中创建分支1.0和2.0并且从那里继续建立你想要的任何结构是一件小事。

+0

你能解释多一点,我不明白如何做到这一点。我在第一篇文章中添加了我目前拥有的分支结构。 – 2011-06-02 13:05:43

+0

它看起来有点怪异的命名为“遥控器/项目-1.0”等(它几乎看起来像一个远程分支,这将看起来像“遥控器/起源/主”),但我想这是当你转换时发生了什么从svn到git。 – ralphtheninja 2011-06-02 14:03:13