如何保持 git 与 svn 同步并同时能够对 git 存储库进行更改

How to keep git in synch with svn and simultaneously be able to make changes to git repo

我已将我的 svn 存储库迁移到本地开发人员计算机上的 git 存储库。所以 master 现在正在跟踪 svn trunk。我希望 svn trunk 成为 git 中的 develop 分支,我通过重命名 git 中的分支实现了这一点。

我通过发出 git svn fetchgit svn rebase 将 svn trunk 中所做的更改同步到 git。这真的很好用。

svn repo 和 git repo 中的文件夹结构如下

    s-online/
    ├── .git
    └── Online            
        ├── config
        │   ├── build
        │   ├── dataload
        │   ├── export
        │   ├── http
        │   ├── search
        │   ├── web
        │   └── webservice
        └── workspace
            ├── data
            ├── logic
            ├── site
            ├── stores
            └── tools

我想将 git 存储库中的文件夹结构修改为如下所示。因此,基本上,将所有内容移动到 Online 文件夹下的工作区文件夹中。

    s-online/
    ├── .git             
    └── data
    ├── logic
    ├── site
    ├── stores
    └── tools
    ├── config
        ├── build
        ├── dataload
        ├── export
        ├── http
        ├── search
        ├── web
        └── webservice

一些开发人员希望从今天开始使用 git 进行新开发,而其他仍在致力于 svn 的开发人员将需要一段时间才能完全过渡到 git。

在那之前,挑战是能够将提交从 svn trunk 同步到我的 git 存储库(修改后的文件夹结构)一段时间。

当我执行 git svn fetch 后跟 git svn rebase 时,rebase 需要一段时间(可以理解,因为我对文件夹结构的更改需要在 svn 提交之上应用)。但是,对于提交给 svn 的所有文件(自 git 中的文件夹重组以来),我在变基期间遇到所有这些文件的冲突。

我不确定为什么首先提交给 svn 的所有文件都存在冲突,因为我所做的只是重新组织 git 中的文件夹结构?

有什么我遗漏的吗?

可能还缺少其他东西,但一般来说,只要您主动提交到 svn,就应该保持结构和文件同步。最好限制 git 端的合并提交,因为它们可能会使 git svn rebase 复杂化,除非您事先压缩这些合并。