gpt4 book ai didi

包含绝对路径的 Mercurial [subpaths] 在推送时附加到主 repo 的默认路径

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

在 Windows 上运行 Mercurial 2.0.2:

在我的 .hgrc 中:

[subpaths]
MYREPOS/(.*) = https://server/repos/\1

在我的 .hgsub 中:

subrepo/lib = MYREPOS/lib

当我进行推送时,子仓库的推送路径是它到主仓库的路径的串联,而不是绝对路径 - 输出是:

pushing to https://server/repos/main 
pushing subrepo subrepo\lib to https://server/repos/main/http%3A//server/repos/lib

我本以为:

pushing to https://server/repos/main
pushing subrepo subrepo\lib to https://server/repos/lib

是否因为子 repo 路径的“绝对性或相对性”是由 .hgsub 中的右手路径决定的,而不是它映射到的值?例如,MYREPOS/lib 是相对的,因此映射的路径将被视为相对的,是否是相对的?

最佳答案

子存储库逻辑已更改 between 1.9 and 2.0 .现在的程序是:

  1. 如果.hgsub 中的路径是相对的,则将其与主存储库路径 merge
  2. 将重新映射规则应用于此最终路径

在此更改之前,我们会:

  1. 将重映射规则应用于 .hgsub 的路径>
  2. 如果重新映射的路径是相对的,则将其与主存储库路径 merge

所以您是对的,MYREPOS/lib 在第一步中被视为相对路径。因此,子存储库的完整路径是

https://server/repos/main/MYREPOS/lib

并且您的重映射模式仍然会触发。这解释了为什么您会在推送 URL 的中间看到 http://...。但是,有一个回退 将恢复到旧行为。如果你的模式是

^MYREPOS/(.*) = https://server/repos/\1

然后它不会匹配新步骤 2 中的任何内容 — 它只会在路径的开头重新映射 MYREPOS。我们注意到这一点并使用旧算法!

关于包含绝对路径的 Mercurial [subpaths] 在推送时附加到主 repo 的默认路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9033368/

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