Как определить все файлы, которые были изменены в данном наборе изменений?
В данном случае я ищу не разницу, а просто список добавления / удаления / модификации.
hg log -vprX
делает список различий, но мне просто нужны файлы.
Как определить все файлы, которые были изменены в данном наборе изменений?
В данном случае я ищу не разницу, а просто список добавления / удаления / модификации.
hg log -vprX
делает список различий, но мне просто нужны файлы.
Ответы:
Если вы хотите перечислить только файлы, которые были изменены, вам следует использовать «команду статуса». Ниже перечислены изменения в файлах в ревизии REV.
hg status --change 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 status --rev 1 --rev 10 -m
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
опция, которая его подавляет.
Нашел этот вопрос через Google для аналогичной концепции. Чтобы показать все файлы, которые были изменены с помощью набора изменений, достаточно:
hg log -r [start rev]:[end rev] --template "{file_mods}{file_adds}\n" | sed -e 's/ /\n/g' | sort -d | uniq
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 коммитах (включая те, которые я еще не отправил в репо).
Если вы похожи на большинство магазинов, вы используете систему продажи билетов для отслеживания изменений. Если вы знаете номер билета и хотите найти все коммиты, связанные с этим билетом (при условии, что вы включили номер билета в сообщение фиксации), вы можете использовать:
hg log -k TICKET_NUMBER
Это отображает все изменения, связанные с заявкой. Однако он не перечисляет файлы. Вы можете использовать один из приведенных выше ответов, чтобы затем получить список файлов, связанных с версиями.
Чтобы упростить задачу, объединив информацию из предыдущих ответов, вы можете сделать следующее для поиска коммитов, включая измененные файлы:
hg log -vk TICKET_NUMBER