Daa*_*mer 9 svn git tortoisegit git-subtree atlassian-sourcetree
是的,所以我的任务是找出GIT是否能解决我们即将出现的问题.(轻松创建功能分支,修补程序分支,错误修复分支,同时保持主干干净,只有功能完成的问题(功能,修补程序,错误修复等).因此,一旦需要完成发布,将不会发布半完成/已提交的问题.
以前我们一直在使用SVN,其中包含git-flow /分支模型的修改版本:http://nvie.com/img/git-model@2x.png git-master是我们的svn-trunk.这是有效的,但对SVN来说有点麻烦.特别是因为我们使用了两个共享存储库.
这就是问题所在.以前我们使用这两个共享存储库作为外部,并且所有外部引用都指向lib/a/branches/develop和lib/b/branches/develop.如果需要功能/修补程序/ bugfix分支,这很麻烦,因为它需要创建三个分支,使用新引用修改超级项目,然后提交所述更改.
经过一些小心的修补,我们转而使用库存储库的分支.(所以,superProject/lib/a是一个分支lib/a/branches/develop)和未来的更新(两种方式)将要求从superProject/lib/ain到合并lib/a/branches/develop或反之亦然.
然而,一旦释放即将到来,这仍然无法解决我们半完成提交的问题.(遗憾的是,在我工作的公司,这可能需要一个小时).所以我们想了一点,并同意开始尝试使用Atlassian提供的工具多一点,从而尝试Bitbucket(之前使用Crucible/FishEye)并使用他们特殊的集成工作流程来git,每个问题的分支都可以创建并完成后,可以创建一个拉取请求,以便我们的发布管理器控制下一个版本中的内容和内容./develop/由于所有问题都将使用所述工作流程完成,因此不再是半生不熟的问题.
我面临的问题是如何合并这些共享项目(库a和b).我一直在阅读网页,发现多个网站都在谈论git-submodules,git-subtree-merge-strategy,git-subtree(脚本)和手动合并(与子树合并相同?).但没有人真正回答我的一些新手问题.到目前为止,我一直对git-subtree最感兴趣,但GUI支持似乎很糟糕.TortoiseGit,SourceTree都没有对git-subtree有一些很好的GUI支持,这需要命令行动作,而且对大多数同事来说,他们不喜欢做命令行事情.
还困扰我的是,没有好的,我能找到的,关于从哪个存储库/分支创建git-subtree的信息,以及来自远程git存储库的克隆不会自动包含正确的远程链接的事实对于任何git子树.因此,如果我不想让我的任何开发人员能够从他们的远程源更新git子树,他们将不得不手动执行git remote add -f libraryXXX http://repohere/lib-xxx.git(一次)然后执行git subtree pull --prefix locationGoesHere libraryXXX master (--squash optional)
这一切看起来都比SVN的工作流程更加繁琐,并且来回合并分支.我错过了什么吗?我读的是过时的信息吗?我只是没有看到使用共享存储库的正确方法?
我使用的一些资源:
即使您给出了详细的描述,也很难对您的设置做出很多声明。然而,我可以说你会发现 git 中的分支实际上是轻松的(特别是与 svn 相比)。我建议为您的库依赖项使用子模块。它们并不完美,但很有效。当您创建分支时,该分支将开始使用与其父级相同版本的库,并且您可以编辑文件.gitmodules以使用不同的版本。您必须记住使用该--recursive标志创建一个新的克隆(或在克隆后使用git submodule update),但这比子树要容易得多。