1

私は最近、リポジトリの最初の変更セットを含む特定の変更セットまでのすべての変更の Mercurial 差分を生成する必要があることに遭遇しました。この種の差分の定義が拡張されていることは理解していますが、これは新しいプロジェクトをコード レビュー ツールにアップロードするためのものです。

次の変更セットがあるとします。

p83jdps99shjhwop8 - 2 番目の機能 12:00 PM

hs7783909dnns9097 - 最初の機能 - 午前 11:00

a299sdnnas78s9923 - 元のアプリのセットアップ - 午前 10:00

コミットされたすべての変更の「差分」が必要な場合、これを達成できるように見える唯一の方法は、次の差分コマンドを使用することです...

diff -r 00:p83jdps99shjhwop8

この場合、引数 param (ここでは - 00) の最初の変更セットは、次の正規表現形式を取ります。0[0]+

いくつかのテストに基づいて、これはまさに私たちが必要としているもののようですが、このシナリオに関するドキュメントを追跡するのに苦労しました (適切な Google クエリを考案できないだけかもしれません)。その結果、これが普遍的に機能するのか、それともたまたま私の設定や偶然にテストしたリポジトリに固有のものなのかはわかりません.

私が達成しようとしていることを達成するための提案された方法はありますか? そうでない場合、上記で説明したことはどこかに文書化されていますか?

4

2 に答える 2

2

何が必要なのか少し混乱しています。空のリポジトリとリビジョンの間の差分は、tipにあるすべてのファイルの内容です。tipつまり、 にあるプロジェクトの状態ですtip。差分形式では、+行だけで構成されます。

いずれにせよ、リポジトリの初期状態を参照する方法が必要な場合は、それに関する文書化された表記法がありますnull(「参考文献」を参照hg help revisions)。したがって、初期 (空の) 状態とリポジトリの状態の差分を取得するには、次のtipように言うだけです。

hg diff -r null -r tip

ただしhg diff、リビジョン グラフの 2 点間の差分が得られます。したがって、これは の祖先のみを提供しますtip: の祖先にマージされていないブランチ (名前付きまたは名前なし) がある場合tip、それらは表示されません。

  3--6
 / 
0--1--2--5--7 (tip)
    \   / 
      4

上記の例では、 からnullまでの範囲にリビジョンおよび7が含まれていません。36

于 2013-06-12T18:26:37.900 に答える
2

これは実際に文書化されているようですが、掘り下げる必要があります...

https://www.mercurial-scm.org/wiki/ChangeSetID
https://www.mercurial-scm.org/wiki/Nodeid

したがって、参照している特別なノード ID は「nullid」です。

nullid を識別するのに 2 桁では不十分な場合があるため (他のハッシュが 2 つのゼロで始まるとあいまいになる可能性があるため)、4 つ以上の 0 を指定する方がよい場合があります。

例:エラーhg diff -r 00:<hash of initial add changeset>が発生しました。abort: 00changelog.i@00: ambiguous identifier!

于 2013-06-12T15:07:20.880 に答える