Найти файлы, скопированные в Mercurial - PullRequest
1 голос
/ 30 октября 2019

Я заметил ошибку в файле original.txt. Как я могу найти все файлы copy.txt, которые когда-либо были созданы с помощью hg copy original.txt copy.txt?

Я смотрел на Mercurial revset . Здесь упоминаются только «копии»:

"follow([file[, startrev]])" Псевдоним для "::." (предки первого родителя рабочего каталога). Если указан шаблон file, то следуют истории файлов, соответствующих указанному шаблону в ревизии, заданной startrev, включая копии.

Так что, очевидно, используя что-то вроде hg log -r "follow('copy.txt')", я мог бы найти, чтооно было скопировано из original.txt, но не наоборот (где original.txt было скопировано в ).

Как найти скопированные файлы?

1 Ответ

2 голосов
/ 30 октября 2019

Грязный путь

(может давать FP без исправлений на наборах слияний, когда сигнальная строка объединяется с новым файлом)

Если у вас есть уникальные данные (через все файлы в репо) в original.txt вы можете grep репо для этой строки, например hg grep -ldq "ID"

Более естественный способ

Поскольку переименование файла для ревизии«удалить старый файл, добавить новый», вы можете

  • использовать предикат «removes (pattern)» в revset в форме removes(original.txt)
  • использовать специальный шаблон -T"{file_copies}\n"для журнала

    hg log -r "removes(original.txt)" -T"{file_copies}\n" original.txt

revset можно повторно использовать в качестве параметризованных revsetalias (для любого файла), журнал с revset + шаблоном также может бытьпреобразуется в псевдоним

Добавление

Для вывода с меньшим уровнем шума для "просто копировать" наборы изменений можно использовать модифицированный revset (TBT !, я слишком ленивый)

-r "! Modizes (original.txt)"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...