1

hgバージョン管理下にあるファイルがあるとします。私はそのファイルの特定のバージョンを持っており、このファイルがこのバージョンのどのリビジョンにあったかを知りたいです。

これを行うには2つの方法があると思います。

  1. hg updateループで実行し、ファイルを後続のバージョンと比較します (遅いですが、動作するはずです) 。

  2. Mercurial に、コミットの直前にファイルの 2 行目のコメントなどに rev 番号を入力させます。私が読んだことから、precommitフックが役立つかもしれません。次に、何も比較する必要はありません。ファイル自体を確認するだけです (もちろん、誰もこれを変更しないと想定していますが、これは私の場合はかなり安全な仮定です)。

私の使用例は、LaTeX で書かれた共同論文であり、バージョン管理についてまったく知らない 2 人の共著者がいますが、私はそれを使用することを好みます (明白な理由から)。私たちは電子メールで連絡を取り合っており、事実上、人間ベースのロック システムがあります (「次のバージョンが送られてくるまで、このファイルには取り掛かりませんよね?」)。発生する唯一の問題は、バージョン X を著者 B に送信して校正することです。次に、著者 C が修正したバージョン Y を送信し、それをリポジトリにコミットします。次に、著者 Bが修正 Z を (バージョン X に)送信、私が' 迷い始めていますが、B に送信された電子メールの添付ファイルを確認でき、それがどのリビジョンであるかを確認するだけで済みます。

それで、私の質問は次のとおりです。上記の 2 つのアイデアのどちらが優れているのでしょうか。それとも、この混乱に対処するのに役立つ別のアイデアがあるのでしょうか。

4

2 に答える 2

6

hg archive今後の作業に適した方法ですが、少なくとも 3 つの代替作業スタイルと、更新を伴う find-correct-version の 1 つの修正を提案できます。

これからの仕事

  • 共同作成者には別々の名前付きブランチを使用し、マージ結果にはデフォルトを使用し、共同作成者に常に彼のブランチから先頭を送信し、修正を取得した後に彼のブランチを更新し (送信したことが常にわかります)、ブランチをデフォルトにマージできます。

  • 1 つのブランチ、ブックマークでマークされた同僚のリビジョン。後で次のポイントに移動

  • Mercurial キーワードは何らかの形で「最後の手段」と見なされますが、あなたの場合は明白で使用可能な解決策です。ファイルに hash-id を含むキーワードを追加するだけです (フックの代わりにデフォルトの拡張子を使用すると、より簡単で信頼性が高くなります)。

現在の状態

ファイルのソースで変更セットを見つけるには、bisect ( example ) を使用して、test-script、fe、ファイルの CRC でテストすることができます (バージョン管理されていないファイルの CRC が必要で、バージョン管理されたファイルを履歴で確認してください)。

于 2012-09-18T22:49:28.300 に答える
1

レビュー担当者に送信する電子メールを見つけることに満足している場合は、ファイルと一緒にリビジョンハッシュを含めるだけではどうでしょうか。

を使用して添付ファイルを生成することにより、これをほぼゼロの追加作業で取得できます。これにより、1)レビュー用のファイル、および2)リビジョンハッシュhg archiveを含むファイルが作成されます。.hg_archival.txt

よりエレガントな方法がなければ驚かれることでしょうが、たとえあなたの協力者がバージョン管理の使用に行き詰まっているとしても。

于 2012-09-18T20:56:42.257 に答える