gpt4 book ai didi

Mercurial 共享扩展 : how to unshare?

转载 作者:行者123 更新时间:2023-12-02 23:59:22 25 4
gpt4 key购买 nike

我在 Windows(XP 32 位)上使用 TortoiseHG 1.1.1 附带的 Mercurial 1.6.4 中的 Mercurial 共享扩展。

更多信息请访问: https://www.mercurial-scm.org/wiki/ShareExtension

我一直在使用共享扩展,在两个方向上都效果很好。主存储库位于本地硬盘上,共享存储库位于网络共享上(AIX 上的 Samba)。

现在我想删除一个共享链接(双方都必须知道该链接,因为它们会互相更新)。我怎么做?我在网上找不到任何东西...“分享”、“取消分享”这些词不太适合谷歌搜索。

感谢任何帮助,亲切的问候,Tijs

最佳答案

我认为您误解了该扩展。 (很少使用!)共享扩展适用于当您希望多个工作目录指向同一个底层存储库时,而不是存储库和工作目录之间更正常的一对一关系。

由于没有双向链接,因此无法取消共享。

这里有一个解释:

您使用hg inithg 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)

所以它看起来是双向的,只是因为它们在幕后有完全相同的存储库。如果它们位于不同的机器/卷上,那么如果 repoA 不可用,repoB 就无法使用 - 这与 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:不要使用共享;这几乎从来都不是正确的选择。

关于Mercurial 共享扩展 : how to unshare?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3493630/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com