Если вы хотите перечислить только файлы, которые были изменены, вам следует использовать «команду статуса». Ниже перечислены изменения в файлах в ревизии REV.
+1, но OP, вероятно, тоже хочет флаг -n/ --no-status.
Найл С.
7
Для удобства копирования:hg status --no-status --change REV
zastrowm 09
+1 Это намного проще печатать, чем то, hg status --rev REV~1:REVчто я делал раньше.
Patrick Oscity
3
используйте '.' для текущего REV. значение -hg status --change .
zaxy78
16
Просто удалите pиз своего hg log -vprсписка файлов. -pозначает показать патч. Вы также можете использовать шаблон для форматирования вывода на свой вкус.
Думаю, вам понадобится следующий шаблон: --template 'files: {files} \ n'
Ton Plomp
1
Я считаю, что {файлы} являются частью шаблона флага -v по умолчанию
eskhool 01
2
hg log -r. --template '{join (files, "\ n")}' для разделения файлов новой
строкой
1
Комментарий @Foxichu работал у меня, но был вроде как хакерским. на самом деле верхний ответ - hg status --change .работал лучше и давал префикс действия файла (A \ M \ D и т. д.) и лучший относительный путь
zaxy78
13
Я знаю, что вопрос касается одного набора изменений, но если вы хотите, чтобы все файлы были изменены для ряда наборов изменений, вы можете сделать
Ужасно плохо. Файлы, измененные в диапазоне, - это hg log -r BEGIN:END --template "{files}\n"как написали @ geoffrey-zheng и @ton два года назад !!!
Ленивый Барсук,
Извини за это. Предполагается, что их ответ был для единственного набора изменений.
Nick DeVore
1
На мой взгляд, это не так уж и страшно. hg status --rev BEGIN --rev ENDэто: 1. намного легче запомнить, чем hg log -r BEGIN:END --template "{files}\n"; 2. он печатает файлы отдельными строками без использования sed(@Eric Lawler) или join()(@Foxichu); 3. без -mфлажка отображаются не только измененные, но также добавленные и удаленные файлы (здесь также применяется красивая стандартная окраска); 4. есть флаги -aи, -rпозволяющие различную фильтрацию; 5. Если префикс статуса не нужен, есть -nопция, которая его подавляет.
Michał Wróbel
9
Текущая утвержденная редакция
hg status --change .
.это сокращение для текущей версии, как @HEADв Git
hg log -r [start rev]:[end rev] --template "{file_mods}{file_adds}\n"покажет вам список каждого файла, измененного или добавленного в каждый набор изменений, от [start rev] до [end rev], с файлами каждого набора изменений в новой строке. Поменяйте местами {file_mods}{file_adds}на, {files}чтобы показать все файлы, измененные, добавленные или удаленные.
sed -e 's/ /\n/g' разделит все файлы для отображения на отдельных строках и
sort отсортирует список для вас, чтобы мы могли фильтровать список с помощью uniq
uniq отфильтрует список для удаления дубликатов - файлов, которые были изменены более чем в одной редакции.
Это решение склеивает последнее измененное с первым добавленным файлом. Кроме того, он неправильно обрабатывает пробелы в именах файлов. Решение на --templateоснове A без этих недостатков может быть построено с использованием join()рекомендаций @Foxichu.
Michał Wróbel
1
Я знаю, что это старый вопрос, и я удивлен, что никто не предложил модифицированную кодовую форму OP. Я получил список измененных / добавленных / удаленных файлов (не помеченных, что есть что), просто запустив hg log -v. Или то, что мне действительно нужно, hg log -v -l5чтобы увидеть файлы, которые были изменены / добавлены / удалены в последних 5 коммитах (включая те, которые я еще не отправил в репо).
«никто просто не предложил модифицированную кодовую форму OP» - @Geoffrey Zheng сделал именно это примерно через 1 час после публикации вопроса
Michał Wróbel
-2
Если вы похожи на большинство магазинов, вы используете систему продажи билетов для отслеживания изменений. Если вы знаете номер билета и хотите найти все коммиты, связанные с этим билетом (при условии, что вы включили номер билета в сообщение фиксации), вы можете использовать:
hg log -k TICKET_NUMBER
Это отображает все изменения, связанные с заявкой. Однако он не перечисляет файлы. Вы можете использовать один из приведенных выше ответов, чтобы затем получить список файлов, связанных с версиями.
Чтобы упростить задачу, объединив информацию из предыдущих ответов, вы можете сделать следующее для поиска коммитов, включая измененные файлы:
Это связано с вопросом. Плакат спросил, как получить файлы в наборе изменений. Наборы изменений часто связаны с билетами. Мое решение показывает, как получить файлы, связанные с наборами изменений, связанными с билетом.
Ответы:
Если вы хотите перечислить только файлы, которые были изменены, вам следует использовать «команду статуса». Ниже перечислены изменения в файлах в ревизии REV.
источник
-n
/--no-status
.hg status --no-status --change REV
hg status --rev REV~1:REV
что я делал раньше.hg status --change .
Просто удалите
p
из своегоhg log -vpr
списка файлов.-p
означает показать патч. Вы также можете использовать шаблон для форматирования вывода на свой вкус.источник
hg status --change .
работал лучше и давал префикс действия файла (A \ M \ D и т. д.) и лучший относительный путьЯ знаю, что вопрос касается одного набора изменений, но если вы хотите, чтобы все файлы были изменены для ряда наборов изменений, вы можете сделать
источник
hg log -r BEGIN:END --template "{files}\n"
как написали @ geoffrey-zheng и @ton два года назад !!!hg status --rev BEGIN --rev END
это: 1. намного легче запомнить, чемhg log -r BEGIN:END --template "{files}\n"
; 2. он печатает файлы отдельными строками без использованияsed
(@Eric Lawler) илиjoin()
(@Foxichu); 3. без-m
флажка отображаются не только измененные, но также добавленные и удаленные файлы (здесь также применяется красивая стандартная окраска); 4. есть флаги-a
и,-r
позволяющие различную фильтрацию; 5. Если префикс статуса не нужен, есть-n
опция, которая его подавляет.Текущая утвержденная редакция
.
это сокращение для текущей версии, как@HEAD
в GitТекущая незафиксированная редакция
Произвольная внесенная ревизия
источник
Нашел этот вопрос через Google для аналогичной концепции. Чтобы показать все файлы, которые были изменены с помощью набора изменений, достаточно:
hg log -r [start rev]:[end rev] --template "{file_mods}{file_adds}\n"
покажет вам список каждого файла, измененного или добавленного в каждый набор изменений, от [start rev] до [end rev], с файлами каждого набора изменений в новой строке. Поменяйте местами{file_mods}{file_adds}
на,{files}
чтобы показать все файлы, измененные, добавленные или удаленные.sed -e 's/ /\n/g'
разделит все файлы для отображения на отдельных строках иsort
отсортирует список для вас, чтобы мы могли фильтровать список с помощью uniquniq
отфильтрует список для удаления дубликатов - файлов, которые были изменены более чем в одной редакции.источник
--template
основе A без этих недостатков может быть построено с использованиемjoin()
рекомендаций @Foxichu.Я знаю, что это старый вопрос, и я удивлен, что никто не предложил модифицированную кодовую форму OP. Я получил список измененных / добавленных / удаленных файлов (не помеченных, что есть что), просто запустив
hg log -v
. Или то, что мне действительно нужно,hg log -v -l5
чтобы увидеть файлы, которые были изменены / добавлены / удалены в последних 5 коммитах (включая те, которые я еще не отправил в репо).источник
Если вы похожи на большинство магазинов, вы используете систему продажи билетов для отслеживания изменений. Если вы знаете номер билета и хотите найти все коммиты, связанные с этим билетом (при условии, что вы включили номер билета в сообщение фиксации), вы можете использовать:
Это отображает все изменения, связанные с заявкой. Однако он не перечисляет файлы. Вы можете использовать один из приведенных выше ответов, чтобы затем получить список файлов, связанных с версиями.
Чтобы упростить задачу, объединив информацию из предыдущих ответов, вы можете сделать следующее для поиска коммитов, включая измененные файлы:
источник