git - 从 SVN 转移到 GIT,将工作流更改从 SVN merge 到 GIT 与共享存储库

标签 git svn atlassian-sourcetree tortoisegit git-subtree

是的,所以我的任务是查明 GIT 是否可以解决我们即将遇到的问题。 (轻松创建功能分支、修补程序分支、错误修复分支,同时保持主干干净,只包含已完成的功能问题(功能、修补程序、错误修复等)。因此一旦需要完成发布,就不会发布半完成/提交的问题.

之前我们一直在使用 SVN,此处提供了 git-flow/分支模型的修改版本:http://nvie.com/img/git-model@2x.png其中 git-master 是我们的 svn-trunk。这很有效,但是对于 SVN 来说有点麻烦。特别是因为我们使用两个共享存储库。

问题来了。以前我们将这两个共享存储库用作外部,所有外部引用都指向 lib/a/branches/developlib/b/branches/develop。如果需要功能/修补程序/错误修复分支,这会很麻烦,因为它需要创建三个分支,使用新引用修改 super 项目,然后提交所述更改。

经过仔细修改后,我们转而使用库存储库的分支。 (因此,superProject/lib/alib/a/branches/develop 的一个分支)并且 future 的更新(双向)将需要来自 的 merge superProject/lib/alib/a/branches/develop 或相反。

然而,这仍然没有解决我们在临近发布时提交半完成的问题。 (可悲的是,在我工作的公司,一个小时内可能需要这个)。所以我们多想了一点,并同意开始尝试更多地使用 Atlassian 提供的工具,从而尝试使用 Bitbucket(以前使用 Crucible/FishEye)并使用他们针对 git 的特殊集成工作流,其中每个问题都可以有一个分支创建并完成后,可以创建 pull 请求,以便我们的发布经理控制下一个版本中的内容和内容。 /develop/ 中不再有半生不熟的问题,因为所有问题都将使用所述工作流程完成。

我面临的问题是如何 merge 这些共享项目(库a和b)。我一直在网上阅读,发现多个站点都在谈论 git-submodules、git-subtree-merging-strategy、git-subtree(脚本)和手动 merge (与子树 merge 相同吗?)。但是没有人真正回答我的一些 git-newbie 问题。到目前为止,我最感兴趣的是 git-subtree,但 GUI 支持似乎很糟糕。 TortoiseGit 和 SourceTree 都没有对 git-subtree 的一些良好的 GUI 支持,这将需要命令行操作,而且大多数同事都知道,他们不喜欢做命令行的事情。

同样困扰我的是,没有什么好处,我能找到,关于从哪个存储库/分支创建 git-subtree 的信息,以及从远程 git 存储库克隆的事实不是 自动包含任何 git-subtree 的正确远程链接。因此,如果我不希望我的任何开发人员能够从他们的远程源更新 git-subtree,他们将不得不手动执行 git remote add -f libraryXXX http://repohere/lib-xxx。 git(一次)然后执行 git subtree pull --prefix locationGoesHere libraryXXX master(--squash 可选)

这一切看起来比 SVN 来回 merge 分支的工作流程要麻烦得多。我错过了什么吗?我在阅读过时的信息吗?我只是没有看到使用共享存储库的正确方法吗?

我使用的一些资源:

最佳答案

即使您提供了详细的描述,也很难对您的设置做出很多声明。但是,我可以说您会发现在 git 中创建分支实际上是无痛的(尤其是与 svn 相比时)。我建议为您的库依赖项使用子模块。它们并不完美,但它们有效。当您创建一个分支时,该分支将开始使用与其父级相同版本的库,您可以编辑 .gitmodules 文件以使用不同的库。您必须记住使用 --recursive 标志创建一个新克隆(或在克隆后使用 git submodule update),但这比子树容易得多.

关于git - 从 SVN 转移到 GIT,将工作流更改从 SVN merge 到 GIT 与共享存储库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33676720/

相关文章:

git - Ivy 与 Git 存储库

git - 如何通过 SSH 在 CI 构建成功上部署我的 webapp?

git - 将 .gitattributes 文件中的 merge 规则应用于 git rebase 调用

github - 无法在 sourcetree 和 github 之间获取 SSH key

git - 如何删除sourcetree上的远程分支?

python - 从 github 安装的 pip 只安装 __init__.py 文件

linux - SVN 命令清除分支间更改的文件列表

git - BitBucket 彩色差异电子邮件服务

svn - 乌龟SVN : unable to revert

git - 如何更改 SourceTree 中的原点