从 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 中的存储库的方法。
我只使用了 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 存储库的标签。
如上例:
如果要将 branch1
和 branchN
迁移到 git 存储库,则可以通过以下方式检查两个分支:
git checkout -b branch1 origin/branch1
git checkout -b branchN origin/branchN
如果您想将 tagX
和 tagM
迁移到 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 存储库中,它只包含主干和部分分支(master
、branch1
和 branchN
)和标签(tagX
和 tagM
).
请耐心看完(因为我真的很想表达我的问题)也许最后一切都会有意义:)
所以从过去两周开始,我一直在尝试每一个 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 中的存储库的方法。
我只使用了 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 存储库的标签。 如上例:
如果要将
branch1
和branchN
迁移到 git 存储库,则可以通过以下方式检查两个分支:git checkout -b branch1 origin/branch1 git checkout -b branchN origin/branchN
如果您想将
tagX
和tagM
迁移到 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 存储库中,它只包含主干和部分分支(master
、branch1
和 branchN
)和标签(tagX
和 tagM
).