3

バックグラウンド

Mercurial には現在、改ざんされるべきではない歴史を人々が改ざんするのを防ぐ優れたメカニズムであるフェーズがあります。変更セットがリモート リポジトリにプッシュされると、変更セットが作成され、それ以上作成publicできなくなりますrebased。これは通常、リポジトリが公開されていて、変更セットを他の人に変更されたくない場合に適しています。

draftただし、変更セットを自分だけと共有するための独自の一時リポジトリがある場合は、非常に面倒になる可能性があります。Mercurial には、これをオフにするオプションがありますこれをリモートリポジトリ.hg/hgrcのファイルに追加します。

[phases]
publish = False 

draftこれにより、リモート リポジトリにプッシュされたチェンジセットがフェーズからフェーズへ移動するのを防ぎますpublic(ローカルのチェンジセットとリモート リポジトリにプッシュされたばかりのチェンジセットの両方)。ただし、このチェンジセットをプルすると、publicフェーズ内で常にプルダウンされます。

質問

draftフェーズで変更セットをプルダウンしたいと考えています。個人用サーバーに変更セットをプッシュしてから、自宅でプルダウンしたいだけです。プルした後rebase、真のパブリッシング サーバーからプルしたコミットの上に一時的なコミットを行います。

プルされた変更セットの自動移動を回避する方法はpublic素晴らしいでしょう。このリモート リポジトリは、私にとって完全かつ完全なドラフト サーバーです。draft試みが失敗した後に変更セットを手動で元に戻すことを余儀なくされることは、rebase本当に神経質になり始めています。

参考文献

4

2 に答える 2

1

それはバグのようです。Mercurial のどのバージョンを使用していますか? https://bz.mercurial-scm.orgでバグを報告してみましたか?

于 2013-03-20T10:20:14.977 に答える
0

Bugzilla のヘルプでこれを解決しました。ここに私の最後の投稿のスニペットがあります(正しいトラック djc に私を乗せてくれてありがとう)。

ユーザー エラー/悪いテスト ケース (もちろん) に分類できるようです。(私以外に) 責任があるとすれば、それは TortoiseHg である可能性があります。私のテスト ケースは、2 つのリポジトリの 1 つからコミットを削除し、別のリポジトリでそのコミットのフェーズを変更して、再度プッシュ/プルするというものでした。TortoiseHg が時々間違ったフェーズを引き込むようです (おそらくキャッシュの問題)。サーバーを公開と非公開の間で切り替えても、これを再現できます (ただし、以前ほど一貫性はありません)。

ただし、コマンドラインプルを実行すると、毎回機能するようです。コマンドラインを使用して発信/着信を確認し、フェーズの変更などを行いましたが、実際のプルには使用しなかった可能性があります。

みんなの時間を無駄にしてごめんなさい。誰かがそれをより良いカテゴリに変更したいかどうかわからないので、無効として解決しました。他にチェックまたは拡張してほしいことがあれば教えてください。

更新があれば編集します。まだ問題が発生している場合はお知らせください。

于 2013-03-21T21:01:44.810 に答える