4

もともと私のサブレポは で絶対 URL を使用して定義されていたため、.hgsub現在問題が発生しています。ユーザーが作業コピーを複製する中間サーバーを使用したいので、「友好的な独裁者」ワークフローは不可能になります。次に、マスター リポジトリにプッシュする前に中間サーバーに変更をプルします (中間サーバーは継続的インテグレーション ホストでもあるため、マスターに直接プルしません)。絶対パスは、複製されたリポジトリがマスターに直接プッシュされるため、これを防ぎます。

問題は、ファイルhgに加えた変更をプッシュしようとすると、サーバーが 404 エラーを吐き出すことです。.hgsub以下は私が行った変更の例です

# original subrepo definition
common = http://hgserver/disp/common
# and after the change
common = common

これは機能しません。次のエラーが吐き出されます

$ hg push
pushing to http://hgserver/disp
pushing subrepo common
abort: HTTP Error 404: Not Found

この方法でサブレポの構成を変更することは可能ですか、それともリポジトリ全体を再作成する必要がありますか?

4

2 に答える 2

3

はい、変更可能である必要があります(そして、相対パスがより良いワークフローを実現するのは正しいです)が、相対URLパスは、あなたがたまたまいる場所ではなくhg root、生活しているレポの相対パスと見なされます押す (これは、セクションの のエントリに.hgsub由来します。.hg/hgrcdeafultpaths

これはかなり普通のサブレポのレイアウトです:

on server http://hgserver/disp/main
    http://hgserver/disp/common # the "common" repo
    http://hgserver/disp/main # the main repo
        http://hgserver/disp/main/.hgsub # contains "common=../common"

その後、クローンの後、すべてが機能し、同じ hgsub がサーバーでも正常に機能します。

相対的なサブレポのセットアップに最適なレイアウトを説明するスタック オーバーフローの質問がたくさんあります。一方から他方への切り替えは試していませんが、サブレポの「次の」スタイルを"../sibling"Iで実行すると思います。上に示したように、正常に動作します。

于 2010-09-20T14:23:09.887 に答える
1

次の場合に問題が存在することに注意してください。

  1. ssh の使用 (トップ リポジトリ)
  2. 上に相対的にリストされたサブレポ(ここで提案されているように-そして一般的に望ましい)-および
  3. 絶対パスで参照されるトップ (ssh) リポジトリ。

http://mercurial.808500.n3.nabble.com/subrepos-with-ssh-urls-with-absolute-paths-td1462834.htmlを参照してください。基本的に、.hgsub ファイルで絶対パスの使用を強制します。これにより、参照されている「友好的な独裁者」/統合サーバーのワークフローが中断されます。

解決策が大いに望まれていますが、今のところ、絶対パスを使用し、セクションでユーザーごとに再マップする必要があります[subpaths]。:-(

注: これは現在修正されています: https://www.mercurial-scm.org/repo/hg-stable/rev/71ea5b2b9517これは Hg バージョン 1.8.3 (およびそれ以降) です。

于 2010-12-08T10:45:16.493 に答える