Это на самом деле вполне выполнимо с hg grep
.Пример говорит сам за себя:
$ hg grep 'def revrange' --all
mercurial/cmdutil.py:14319:-:def revrange(repo, revs):
mercurial/scmutil.py:14319:+:def revrange(repo, revs):
mercurial/cmdutil.py:3707:-:def revrange(ui, repo, revs):
mercurial/cmdutil.py:3707:+:def revrange(repo, revs):
mercurial/cmdutil.py:3090:+:def revrange(ui, repo, revs):
mercurial/commands.py:3090:-:def revrange(ui, repo, revs):
mercurial/commands.py:2331:-:def revrange(ui, repo, revs, revlog=None):
mercurial/commands.py:2331:+:def revrange(ui, repo, revs):
mercurial/commands.py:705:-:def revrange(ui, repo, revs = [], revlog = None):
mercurial/commands.py:705:+:def revrange(ui, repo, revs, revlog=None):
mercurial/commands.py:697:-:def revrange(ui, repo, revs = [], revlog = None):
mercurial/commands.py:697:+:def revrange(ui, repo, revs, revlog=None):
mercurial/commands.py:580:+:def revrange(ui, repo, revs = [], revlog = None):
Я попросил hg
найти def revrange
(определение функции).В сочетании с флагом --all
, равным grep
, печатается каждая ревизия, содержащая изменение в статусе совпадения.
Таким образом, мы можем легко увидеть развитие этой функции:
- это было впервые введено в ревизии 580, в
commands.py
- 697 убрано значение по умолчанию для аргумента revs
- 705 кажется объединением
- 2331 убрано аргумент revlog
- 3090 переместил функцию в
cmdutil.py
- 3707, удалил аргумент пользовательского интерфейса
- и, наконец, 14319 переместил функцию в
scmutil.py
Конечно, это не идеально, так как если функция была переименована, цепочка прекратится после переименования.Но в зависимости от вашего конкретного случая использования этого может быть достаточно.
Чтобы быть более сложным, вы можете написать относительно простой скрипт, который может даже следовать переименованиям.