使用Mercurial,是否可以在一个shell中使用默认分支,在另一个shell中使用另一个分支“bugfix”?

时间:2010-11-10 20:23:30

标签: mercurial

因为好像什么时候

hg up default

hg up bugfix

在一个Bash shell中使用,如果使用hg branch来显示它是哪个分支,则另一个shell也会自动更改为该分支。 (所以我想如果是的话 Ruby on Rails服务器运行,突然之间,代码将改为另一个分支)

如果使用两个单独的克隆,可以完成......好像有两个分支......但可以使用hg的分支功能完成吗?

3 个答案:

答案 0 :(得分:5)

您必须使用两个单独的克隆。

想一想。您正在处理两个不同版本的文件。他们的内容不同。您必须更改文件以反映两个分支之一。单个文件如何同时具有两个不同的内容(您的双壳创意)?

一个不同的类比:shell是一个窗口。该文件是房间中的一个对象。即使你有两个窗户看着同一个房间,你也不能让房间里的一个物体同时成为两个不同的东西。要做到这一点,在隔壁做一个相同的房间,修改对象,并将第二个窗口连接到克隆的房间。

答案 1 :(得分:1)

不同的shell似乎在同一个存储库目录中工作。这不起作用,因为目录是更新发生的地方,而不是shell。

所以你真的需要两个存储库目录,即克隆,以便做到这一点。

如果这些目录位于同一个文件系统上,那么Mercurial会通过使用硬链接来优化这种情况,因此不会花费太多时间或空间。

至少如果您使用的是支持硬链接的操作系统。

答案 2 :(得分:1)

如果用“shell”表示两个命令shell打开到同一个目录,那么是的,它们都会改变,因为它们正在使用相同的工作目录。

一个工作目录只能位于存储库历史记录中的一个位置。

要同时在项目中使用两个不同的分支或变更集,请从第一个开始进行第二个克隆,然后您可以单独操作每个分支。