7

場合によっては、許可されるhg pull -u前にMercurial ユーザーが実行されていることを強制する必要があります。つまり、着信キューが空であることを意味します。さらに、その人がブランチのヘッド バージョンを使用していることも必要です。hg commithg pull

どうすればそのような制限を設定できますか?

(これが DVCS 設計コアの一部に反することは十分承知しています)

4

3 に答える 3

3

開発者にインストールを依頼できます

[hooks]
pre-commit = hg pull -u

.hg/hgrc構成ファイル内(このワークフローはリポジトリ固有であるため、おそらくリポジトリごとのファイルにインストールする必要があります)。

これにより、Mercurialは少しSubversionのようになります。開発者は、未解決のチェンジセットを1つだけ持つことになります。ただし、誰かがサーバーにプッシュするとすぐhg pull -uに、新しいブランチチップに更新できないことに注意してください。これは、ブランチ(トポロジブランチ)を越えて更新するためです。したがって、その時点で適切なマージが必要になります(またはリベース。を参照hg pull --rebase)。

于 2012-04-16T15:42:40.277 に答える
1

Adam が言うように、おそらく本当に必要なのは、複数のヘッド (ブランチごと) を防ぐことです。これは、Netbeans の「forbid_2head」フックを使用して行うことです (ここからリンクされています https://www.mercurial-scm.org/wiki/TipsAndTricks#Prevent_a_push_that_would_create_multiple_heads )

その結果、フックは、ブランチに複数のヘッドを作成するプッシュを防止します (つまり、匿名/デフォルト ブランチに 1 つと、名前付きブランチにそれぞれ 1 つ)。プルし、2 つのヘッドをローカルで取得してから、マージまたはリベースして削除する必要があるため、これはコミット前にプルを効果的に強制します。

注、フックはサーバー/マスターリポジトリにあります

于 2012-09-07T08:35:02.757 に答える
1

通常、Mercurial では、-f フラグ (強制) を使用しないと、開いているヘッドをサーバーにプッシュすることはできません。自動的にプルするフックを作成できますが、サーバーが何を持っているかを認識していないため、サーバー側で強制することはできません。このシナリオに関する Mercurial の Web サイトに記事があり ます。

于 2012-04-16T15:16:04.063 に答える