6

Annotate を使用すると、その行に対する最新の変更を確認できます。その変更がマージである場合は、リビジョン履歴を調べて、次に変更された時刻を見つけるしかありません。

私も試しましhg grep -l '[contents of line]'たが:

  • a)特定のファイルをターゲットにする方法がわかりません(そのため、適度なサイズのリポジトリでは永遠にかかります)
  • b)最後のリビジョン番号のみを返すようです

次のリンクは漠然と似ています- 関数への参照が変更されたすべてのチェンジセットを見つける方法は?

4

3 に答える 3

9

Tortoiseg を使用する:

  1. 表示 -> マニフェスト
  2. 興味のあるファイルを右クリックし、「ファイル履歴」をクリックします
  3. 「リビジョン番号で注釈を付ける」をクリックします

上部のパネルでは、コミットに関してファイルの履歴をすばやく確認できます。下部のパネルには、上部のパネルで選択したバージョンに基づいて注釈付きのファイルが表示されます。

于 2013-03-14T02:05:42.957 に答える
1

これには少し (2 ステップの) プログラミングが必要だと思います。

次のシェル スクリプトは、私にとっては非常にうまく機能します。リビジョンと一致する行の両方を出力します。リビジョン リストのみが必要な場合は、一致するテキストを削除してリビジョン プレフィックスのみを残すステップを追加し、場合によっては「sort -u」を介してパイプすることができます。

#!/bin/bash
#
# script to grep for a pattern in all revisions of a file
# Usage: scriptname 'pattern' filepath
#
function fatal() {
    echo "$@" 1>&2
    exit 1
}

function usage() {
    echo "$@" 1>&2
    fatal Usage: $0 pattern file
}

case "$1" in
    '') usage 'missing pattern to search for' ;;
    *)  Pat="$1" ;;
esac

if [ "$2" != '' ]; then
    File="$2"
else
    usage 'must pass file as 2nd argument'
fi

# -- generate list of revisions (change-sets) involving $File
for rev in `hg log --template '{rev}\n' $File`; do
    # -- grep the wanted pattern in that particular revision
    hg grep "$Pat" -r $rev $File
done

ノート:

  • 完全に確実ではない (例: パターン内の引用符)
  • 名前変更/削除されたファイルもサポートするためにファイルの存在をチェックしません
于 2013-03-13T22:42:19.753 に答える