如何使用Git来管理Kiln的分支?

3

我的公司使用Kiln,这样开发人员可以使用他们喜欢的Git和Mercurial工具。我是一个Git用户,从未使用过Mercurial。

在使用Kiln时,有一些关于分支的不理解。当我使用Kiln界面创建一个新的分支时,它实际上创建了一个新的仓库,而不是一个分支。即使Kiln将其显示为“分支”,而不是“仓库”。当我在Git中克隆该仓库时,git branch -a没有显示我刚刚创建的远程分支。我需要单独克隆每个伪分支。

另一方面,如果我在Git中创建一个分支并将其推送到远程,它不会在Kiln上创建一个分支,而是创建了一种名为“head”的“子分支”,在所有分支中都可见。非常令人困惑。但显然没有办法通过Kiln界面创建这些与Git完美配合的“子分支”。我也不知道它们在Mercurial上是否运行良好。

$ git branch -a
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/feature2
  remotes/origin/master

我认为这与Kiln的赞成Mercurial“哲学”有关。我对Mercurial进行了一些研究,发现分支系统与Git完全不同。在Mercurial中,克隆存储库以创建分支是很正常的,而在Git中则没有这个概念。Mercurial也有“命名分支”,这些分支不能被删除,而且Kiln开发人员不鼓励使用它们。我的“子分支”实际上可以作为“命名分支”吗?问题是我可以使用git push origin :sub-branch 删除这些“子分支”。
答案显然,因为在Mercurial和Git中,分支是重要特性,Kiln必须用这两个工具中简单而优雅的方式来处理分支工作。但我无法理解Kiln的逻辑。我担心Kiln可能过于友好于Mercurial,并且Git支持可能更像是一个hack。

1
我们曾尝试过使用“Kiln Branches”,但最终放弃了。在我看来,它并没有使HG中的分支更容易,反而使分支变得更加困难。因此,我们仍然坚持使用HG分支。 - Agile Jedi
2个回答

1

Kiln团队在下面的帖子中解决了如何合并存储库的问题。这将为您提供所需信息,以合并您的Kiln分支/存储库。基本上,您正在从一个存储库中拉取然后推送到另一个存储库。

Kiln分支/存储库合并

虽然git似乎没有hg通常听到的分支问题; Joel Spolsky表示,选择hg而不是git的决定出自Linus Torvalds的一项声明/政策,即不要在git中做任何有利于Windows用户的事情。 Joel在2011年关于FogBugz和Kiln的演示中解决了这个问题。您可以在以下视频的40:40处听到该评论。

Joel Spolsky关于Mercurial选择的讲话

回到2011年,Fog Creek公司做出的Mercurial决策可能是可以理解的,但是在git的世界中,事情显然已经有了很大的进展,并且git的采用显然足够强大,以便说服Fog Creek创建Kiln Harmony,它允许使用hg或git。

Kiln Harmony


1
在Kiln UI中,当你创建一个分支时,它是一个“克隆分支”,而不是Mercurial命名的分支。
如果你在Mercurial中使用命名分支,它们将自动转换为Git分支。然而,当你提交到Git分支时,它不会转换回同一个Mercurial命名分支。Kiln团队必须找到Git到Mercurial翻译Git分支的最佳类比,并决定Mercurial的“书签”效果最好。因此,当你推送到Git分支时,它将更新或创建一个相应的Mercurial书签(https://www.mercurial-scm.org/Bookmarkshttp://mercurial.aragost.com/kick-start/en/bookmarks/)与相同的Git分支名称,并且该书签将在Mercurial的“默认”分支上。我建议你向使用Mercurial的团队成员咨询,看看使用书签作为Git分支的类比是否适用于他们。
另一个选择是尝试并查看您的团队是否喜欢Kiln UI的“克隆分支”来维护不同的开发线路,而不是使用命名分支方法。

1
那么,你确定无法使Git和Mercurial共同工作吗?为什么声称Kiln可以让开发人员使用这两个工具,但我们无法保持自己的工具工作流程,必须遵守另一个工具的工作流程呢?难道真的没有办法让Git将“克隆分支”视为分支吗?Mercurial是否能够将Git的分支视为“克隆分支”? - lesenk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接