gpt4 book ai didi

mercurial - 使用 Mercurial 递归标记所有子存储库

转载 作者:行者123 更新时间:2023-12-04 15:47:50 26 4
gpt4 key购买 nike

是否可以标记主父存储库并将标记添加到所有子存储库?

如果没有这个,如果我将一个项目作为子存储库删除并自行访问它,它将丢失所有标签信息,因为这仅属于父存储库。

最佳答案

这可能是可能的,但有点棘手。你必须基本上写你自己的tag实用程序(可能作为 Mercurial 扩展)来帮助收集所需的额外信息并额外调用 hg tag .然而,我在编写扩展时对 API 了解不多,所以我提供的任何想法都将基于调用 hg直接用命令。

默认情况下,当您在主存储库上提交时,首先提交子存储库。然后它为每个子仓库获取新的变更集 ID 并将它们放入 .hgsubstate文件格式如下:

77ba00000fe8e9ca033d97dc07b85a50dd106837 nested

递归标记需要获取 .hgsubstate 的内容文件,因为它在您在主存储库中标记的变更集中。你可能会想到 hg revert ,但这将是一个坏主意,因为它很容易弄乱您的工作目录( hg 无论如何都不喜欢在 .hgsubstate 上这样做)。你最好的选择是做 hg export对于该修订版并解析 + 的结果差异 .hgsubstate 上的线路文件。

然后你会从每一个中获取 changset id 和 subrepo 名称,以便调用 hg -R <subrepopath> tag -r <id> <tag> .当然,最后标记主要 repo 。

这仍然存在潜在的问题,您必须保持警惕或弄清楚如何应对这些问题。例如:如果您已经提交了主存储库而不是 1 个或多个子存储库,会发生什么?现在您在主存储库中拥有多个变更集,其中 .hgsubstate在子仓库上列出相同的变更集 ID。因此,如果您在主存储库上标记两者,则子存储库上的变更集将有 2 个标记。

我正在使用 TortoisHg 2.0.5 和 Mercurial 1.8.4。单独标记子存储库不会产生对主存储库进行提交的任何需要,它应该可以正常工作。

关于mercurial - 使用 Mercurial 递归标记所有子存储库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6491668/

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