从 SVN 迁移到 Bitbucket - 我的场景有问题 [尝试了过去 2 周的多种方法 - 但失败]

Migrating from SVN to Bitbucket- Having issues with my scenarios [Tried multiple methods from past 2 weeks-yet Failed]

请耐心看完(因为我真的很想表达我的问题)也许最后一切都会有意义:)

所以从过去两周开始,我一直在尝试每一个 methods/solutions 将 SVN 中现有的项目迁移到 Bitbucket!

Context :尽管我的组织希望我将现有的 SVN 存储库迁移到 Bitbucket,但我对这些系统还是比较陌生的。

要求:移动主干,部分分支和最新的两个标签!

我是怎么开始的:

1) 首先使用 Trunk 文件夹到 Bitbucket :

为此,我通过 UI 在 bitbucket 中创建了一个存储库 -> 然后在本地克隆它 -> 然后将主干文件放在本地目录中 -> git 添加、提交和推送。

在 master 分支中获得了我的主干文件。

2) 然后我从分支开始,(因为我只需要几个分支!):

为此,我在 bitbucket 存储库中创建了一个分支。 然后我在 local->git init->used git remote add remotebranch -> git fetch remotebranch -> git checkout -> copied content of branch from 中创建了一个文件夹svn 到这个本地文件夹 -> 然后再次添加、提交和推送!

根据我的理解,到这一步我已经成功创建了主干和分支。 (不知道我做的对不对)

3) 然后我开始使用标签! (这很痛苦),我无法迁移特定的标签,但不知何故我找到了一种将所有标签迁移到我在 Bitbucket 中的存储库的方法。

使用一个博客:http://www.sailmaker.co.uk/blog/2013/05/05/migrating-from-svn-to-git-preserving-branches-and-tags-3/#push-for-real

我只使用了 git push --tags origin 选项!


似乎组织对我的方法不满意,他们希望一切都以适当的方式进行,并有条件,即要迁移的所有历史记录、主干、选择性分支和选择性标签。


也许我的方法对您来说也完全无效!但我真的不知道这些东西是如何工作的以及如何满足这些要求。

我已经尝试了很多解决方案,但没有一次对我有用! 我什至认为提供给我的 SVN 不使用 stdlayout!即,1 个存储库有文件夹(分支、标签和主干),分支包含(许多分支——我不知道它们是什么以及它们是如何工作的,我只需要有选择地迁移它——> 说 15 个中的 2 个!) ,标签再次包含多个标签(但我只需要特定的标签!),trunk 有时有 2 个或更多子文件夹,它们包含不同的项目文件(我被要求将 2 个子文件夹视为 bitbucket 中的单独存储库并关注 1 master包含一个项目规则)

相信我,我已经完全理解了每一个解决方案!我的情况没有答案!

如果有人能够在这里提供一些解决方案而不是进一步的参考,那将会很有帮助。

感谢您的光临。

由于您需要迁移带有分支和标签的 SVN,因此您应该在迁移期间保留 SVN 存储库的历史记录

将 svn 存储库迁移到 git 存储库的步骤如下:

###Step1: 使用git svn 命令 使用命令通过以下方式获取所有修订:

git svn clone <SVN repo URL> --branches=branches --tags=tags --trunk=trunk

svn repo 的所有分支和标签将存储在.git/refs/remotes/origin.git/refs/remotes/origin/tags 中。您可以通过 git branch -r 查看分支和标签。输出如下:

origin/branch1
origin/branch2
...
origin/branchN
origin/tags/tag1
origin/tags/tag2
...
origin/tags/tagX
origin/tags/tagM

###Step2:获取部分要迁移的分支和标签 您只需要检查分支并创建要迁移到 git 存储库的标签。 如上例:

  • 如果要将 branch1branchN 迁移到 git 存储库,则可以通过以下方式检查两个分支:

      git checkout -b branch1 origin/branch1 
      git checkout -b branchN origin/branchN
    
  • 如果您想将 tagXtagM 迁移到 git 存储库,则可以通过以下命令创建:

      git tag -a tagX origin/tags/tagX -m 'migrate tagX into git repo'
      git tag -a tagM origin/tags/tagM -m 'migrate tagM into git repo'
    

###Step3: 添加远程并推送到远程 git 仓库 然后你可以在本地 git 仓库中添加远程(bitbucket 仓库)并将本地分支和标签推送到 bitbucket 仓库中:

git remote add bitbucket <birbucket repo URL>
git push bitbucket -f --all             #push all the local branches (master, branch1 and branchN) 
git push bitbucket --tags               #push tags you created (tagX and tagM)

现在在 bitbucket 存储库中,它只包含主干和部分分支(masterbranch1branchN)和标签(tagXtagM).