3

WindowsでMercurial2.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

サブリポジトリパスの「絶対性または相対性」は、マップされている値ではなく、.hgsubの右側のパスによって決定されるためですか?たとえば、MYREPOS / libは相対的であるため、マップされたパスは相対的であるかどうかに関係なく、相対的として扱われますか?

4

1 に答える 1

3

サブリポジトリロジックが1.9と2.0の間で変更されました。手順は次のとおりです。

  1. のパス.hgsubが相対パスである場合は、メインリポジトリパスと結合します
  2. この最終パスに再マッピングルールを適用します

この変更の前は、次のようにします。

  1. からのパスに再マッピングルールを適用します.hgsub
  2. 再マップされたパスが相対パスである場合は、メインリポジトリパスと結合します

MYREPOS/libつまり、最初のステップで相対的なパスと見なされるのは正しいことです。したがって、サブリポジトリのフルパスは

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

そして、再マッピングパターンは引き続きトリガーされます。http://...これは、プッシュURLの途中に表示される理由を説明しています。ただし、以前の動作に戻るフォールバックがあります。あなたのパターンが

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

その場合、新しいステップ2では何にも一致しません—MYREPOSパスの先頭でのみ再マップされます。これに気づき、古いアルゴリズムを使用します!

于 2012-01-27T13:01:40.430 に答える