我正在使用Windows上的TortoiseHG 1.1.1提供的Mercurial 1.6.4中的Mercurial共享扩展(XP 32位)。
更多信息: https://www.mercurial-scm.org/wiki/ShareExtension
我一直在使用分享扩展,在两个方向都很好用。 主要仓库位于本地硬盘上,共享仓库位于网络共享上(AIX上的Samba)。
现在我想删除一个共享链接(必须在双方都知道,因为它们会相互更新)。我怎么做?我在网上找不到任何东西......“分享”,“取消共享”这些词语并不是很容易上传。
任何帮助表示赞赏,亲切的问候,Tijs
答案 0 :(得分:8)
我认为你误解了这种延伸。 (很少使用!)共享扩展是指当你想要多个工作目录指向同一个底层存储库时 - 而不是repos和工作目录之间更正常的一对一关系。
没有取消共享,因为没有双向链接。
以下是解释:
您使用hg init
或hg clone
创建新的仓库:
repoA
\-- .hg (repoA's repository)
如果您创建了另一个克隆,那么您将拥有另一个工作目录,其中包含另一个存储库。这是99.9%的时间。
repoA (the one you already had)
\-- .hg (repoA's repository)
repoB (the new clone)
\-- .hg (repo B's repository)
\-- hgrc (config file with a [paths] default=../repoA)
但是,如果您使用hg share
,您将获得以下内容:
repoA (the one you already had)
\-- .hg (repoA's repository)
repoB (the new shared repo)
\-- .hg (a symlink-like pointer to ../repoA/.hg)
因此它看起来是双向的,因为它们在封面下具有完全相同的回购。如果他们在不同的机器/卷上,那么repoB
如果repoA不可用则无法使用 - 这与DVC应该为您做的相反。
所以,回答你通过删除repoB来“取消链接”。如果repoB中有未提交的文件,你不想提交到repoA,你可以这样做:
hg clone -U repoA newRepoB # create a clone with no working dir
cp -a repoB/* newRepoB # excludes all files including .hg (and other .* files)
TL; DR:不要使用share
;它几乎永远不是正确的选择。