说我已将一个仓库克隆到一个名为〜/ trunk的目录中,我想将一个名为my-new-branch的分支共享到该目录〜/ my-new-branch中。我将如何使用hg股票扩展名呢?
这就是我一直在做的事情:
cd〜
hg共享中继my-new-branch
但是当我进入新目录时,我必须拥抱到分支吗?
困惑。
答案 0 :(得分:1)
IMO share
是非常有用的命令,在某些情况下,它比clone
具有很多优势。但不幸的是,我认为它在很多情况下都被忽略了。
What share
does用于在多个本地存储库之间重用Mercurial版本控制信息的“存储”。 (与分支没有直接关系。)
“商店”是一堆文件,代表Mercurial为您保存的所有历史记录。您不会直接与其互动。 99.99%的时间是黑匣子。
share
与更常用的clone
命令的不同之处在于clone
将复制信息存储,从而花费更长的运行时间并可能使用更多的磁盘空间。
使用share
而不是clone
的“副作用”是,您将立即在每个 shared
存储库中看到所有相同的提交。好像推/拉将在所有shared
存储库中自动发生。对于clone
而言,情况并非如此,您必须先显式推/拉。这是非常有用的,但是在工作流程中要注意一点,因为如果您只习惯clone
,可能会在您第一次使用它时感到惊讶。
如果您想同时在项目的多个分支(命名或未命名)中工作,
clone
或share
都可以正常工作。您已经创建了第二个存储库,是的,您需要将其update
更改为要开始使用的任何变更集。
使用share
的具体示例:
hg clone path\to\source\repo working1 # Create local repo working1 cloned from somewhere
cd working1
hg up branchname1
cd ..
hg share working1 working2 # shares the 'store' already used for working1 with working2
cd working2
hg up branchname2 # some other branch or point to start working from
一旦您在working1
中提交某些内容,该提交将在working2
的历史记录中可见。但是由于它们不在同一分支上,因此对working2
并没有真正的即时影响。
working2
将保留path\to\source\repo
作为其默认推/拉位置,就像working1
一样。
我自己的实践是创建大量本地shared
存储库(快速,简单,节省空间)并在各个分支机构中工作。通常,由于种种原因,我什至会在同一个命名分支上拥有其中的一些,但设置在历史上的不同点。我不再真正需要clone
在本地(在同一台PC上)了。
一个警告-我会避免在网络连接上使用共享-就像映射网络驱动器上的回购一样。我认为这可能会遇到一些性能甚至可靠性问题。实际上,在任何情况下,我都不会使用Mercurial回购(如果可以避免的话)处理网络驱动器。本地克隆会更安全。
其次-I would read the docs,您可能会遇到一些奇怪的情况;但我认为这些不可能仅基于我自己的经验。
最后说明:尽管份额被作为对Mercurial的“扩展”来实现,但自从永久以来,它就一直是份额的一部分。因此,它没有新的东西或试验性的东西,不要让“扩展”交易让您失望。