11

リモートファイルへのアクセス権がない場合、リモート サーバー (たとえば、 bitbucket上) が公開されていないことを mercurial に伝えるにはどうすればよいですか?.hg/hgrc

バックグラウンド

最近のバージョンの mercurial にはフェーズpublicの概念があり、どの変更セットが共有されており ( )、どの変更セットが共有されていないか ( )を追跡できdraftます。のようなリポジトリ変更操作は変更セットでrebase許可されますが、変更セットは変更セットに依存する可能性があるため許可されません。draftpublic

変更セットを公開サーバーにプッシュするとpublic、デフォルトでフェーズが変更されますが、サーバーが非公開またはコード レビュー専用の場合 (つまり、人々がプルできないようにする必要があります)、その「非公開」サーバーにプッシュしても、段階。

サーバーが非公開であることをmercurialに伝える文書化された方法、サーバー上のファイルに[phases]セクションを追加することです:.hg/hgrc

[phases]
publish = false

特定のサーバーが非公開であることを示す行をローカル ファイルの 1 つに含める方法があるように思えますが、そのhgrc方法を示唆するドキュメントが見つかりません。おそらく、この動作はフックでカスタマイズできますか?

参考文献

4

1 に答える 1

4

現在、それを行う方法はなく、うまくいけば決して起こらないはずです。

理由は次のとおり
です。ローカル リポジトリがリモート リポジトリの設定を上書きできるようにすると、フェーズ メカニズム全体が役に立たなくなるだけです。フェーズのポイントは、ユーザーが同期フローを「破損」する可能性のあるアクションを実行できないようにすることです。
受信した変更セットがどのように使用されるかを記述するのは、受信者の責任です。送信者がこれらの設定を上書きできるようにして、そのロジックを逆にした場合、2 人の送信者が同じ構成を使用することをどのように保証できるでしょうか? 構成が異なる場合、どちらを保持する必要がありますか? 変更セットは受信側でどのようにマークする必要がありますか?

リモート設定をローカルでオーバーライドするだけで、ローカル リポジトリが認証なしで変更セットをリモートにプッシュできる場合と、ある程度は同じです。

于 2012-05-25T11:28:41.750 に答える