3

我的公司正在使用 Kiln,因此开发人员可以在 Git 和 Mercurial 之间使用他们喜欢的工具。我是 Git 用户,从未使用过 Mercurial。

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

另一方面,如果我在 Git 中创建一个分支并将其推送到远程,它不会在 Kiln 上创建一个分支,而是在所有分支中都可以看到某种称为“头部”的“子分支”。非常混乱。但是显然没有办法通过 Kiln 接口创建这些与 Git 完美配合的“子分支”。我也不知道他们是否在 Mercurial 上运行良好。

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

我确信这与 Kiln 的亲水星“哲学”有关。我对 Mercurial 做了一些研究,发现分支系统与 Git 完全不同。克隆存储库以创建分支是正常的,而在 Git 中这是无意义的。Mercurial 也有不能删除的“命名分支”,Kiln 开发人员不鼓励使用它们。我的“子分支”实际上可以是“命名分支”吗?问题是我可以使用git push origin :sub-branch.

答案一定很明显,因为分支是 Mercurial 和 Git 的一个重要特性,Kiln 必须以简单而优雅的方式使用这两种工具进行分支工作。但我无法弄清楚 Kiln 的逻辑。我担心 Kiln 可能对 Mercurial 过于友好,并且 Git 支持可能更像是一种 hack。

4

2 回答 2

1

在 Kiln UI 上,当您创建一个分支时,它是一个“克隆分支”,而不是一个 Mercurial 命名的分支。

如果您在 Mercurial 中使用命名分支,它们将自动转换为 Git 分支。但是,当您提交到 Git 分支时,它不会转换回 Mercurial 中相同的命名分支。Kiln 团队必须找出 Git 分支的 Git 到 Mercurial 翻译的最佳模拟,他们认为 Mercurial 的“书签”效果最好。因此,当您推送到 Git 分支时,它将更新或创建相应的 Mercurial 书签(https://www.mercurial-scm.org/Bookmarkshttp://mercurial.aragost.com/kick-start/en/bookmarks/ ) 具有相同的 Git 分支名称,并且该书签将位于 Mercurial 中的“默认”分支上。我会与使用 Mercurial 的团队成员核实,看看使用书签作为 Git 分支的模拟是否适合他们。

另一种选择是尝试看看您的团队是否喜欢 Kiln UI 的“克隆分支”来维护单独的开发线,而不是使用命名分支方法。

于 2013-09-03T18:17:42.067 回答
1

Kiln 的团队在下一篇文章中讨论了如何合并存储库。这应该为您提供合并 Kiln 分支/存储库所需的信息。本质上,您是在进行拉取,然后从一个存储库推送到另一个存储库。

Kiln Branch\Repository 合并

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

Joel Spolsky 谈 Mercurial Choice

早在 2011 年,人们可能会同意 Fog Creek 做出的 Mercurial 决定,但在 git 的世界中事情显然已经取得了进展,而且 git 的采用显然足以说服 Fog Creek 创建允许使用 hg 或 git 的 Kiln Harmony。

窑和谐

于 2013-10-29T19:12:09.103 回答