我的公司使用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。