diff как - Mercurial-все файлы, которые были изменены в наборе изменений?




пользоваться настройка (7)

Если вы хотите перечислить только те файлы, которые были изменены, вы должны использовать команду «status». Ниже перечислены изменения файлов в редакции REV

hg status --change REV

Как вы можете определить все файлы, которые были изменены в данном наборе изменений?

Я не ищу diff в этом случае, просто список add / remove / changes.

hg log -vprX делает список различий, но я просто хочу файлы.


Я знаю, что вопрос касается одного набора изменений, но если вы хотите, чтобы все файлы были изменены для ряда наборов изменений, вы можете сделать

hg status --rev 1 --rev 10 -m

Текущие исправленные изменения

hg status --change .

. является сокращением текущего оборота, так же, как @HEAD в Git

Текущая незарегистрированная версия

hg status

Произвольный пересмотр

hg status --change REV_ID

Если вы похожи на большинство магазинов, вы используете систему билетов для отслеживания изменений. Если вы знаете номер билета и хотите найти все коммиты, связанные с этим билетом (при условии, что вы включаете номер билета в сообщении фиксации), вы можете использовать:

hg log -k TICKET_NUMBER

Это отображает все изменения, связанные с билетом. Однако он не перечисляет файлы. Вы можете использовать один из приведенных выше ответов, чтобы получить список файлов, связанных с изменениями.

Чтобы упростить работу, объединив информацию из предыдущих ответов, вы можете выполнить следующие действия для поиска коммитов, включая измененные файлы:

hg log -vk TICKET_NUMBER

Я знаю, что этот вопрос - старый вопрос, и я удивлен, что никто не предлагал модифицированную форму кода OP. Я получил список файлов с измененными / добавленными / удаленными файлами (не помеченными как это), просто запустив hg log -v . Или что мне действительно нужно hg log -v -l5 чтобы увидеть файлы, которые были изменены / добавлены / удалены в последние 5 коммитов (включая те, которые я еще не нажал на репо).


Нашел этот вопрос через Googling для аналогичной концепции. Чтобы показать все файлы, которые были изменены с помощью ряда наборов изменений, это просто:

hg log -r [start rev]:[end rev] --template "{file_mods}{file_adds}\n" | sed -e 's/ /\n/g' | sort -d | uniq
  1. hg log -r [start rev]:[end rev] --template "{file_mods}{file_adds}\n" покажет вам список каждого файла, измененный или добавленный в каждом наборе изменений, начиная с [start rev] до [end rev ], с каждым файлом набора изменений в новой строке. Swap {file_mods}{file_adds} с {files} чтобы показать все файлы, измененные, добавленные или удаленные.
  2. sed -e 's/ /\n/g' разделит все файлы на отдельные строки и
  3. sort will, er, сортировать список для вас, чтобы мы могли отфильтровать список с помощью uniq
  4. uniq будет фильтровать список для удаления дубликатов файлов, которые были изменены в нескольких версиях.

Вы можете видеть оборванные коммиты с git log -g .

-g, --walk-reflogs
 Instead of walking the commit ancestry chain, walk reflog entries from
 the most recent one to older ones. 

Таким образом, вы можете сделать это, чтобы найти определенную строку в сообщении фиксации, которое свисает:

git log -g --grep=search_for_this

Кроме того, если вы хотите искать изменения для определенной строки, вы можете использовать опцию поиска кирки, «-S»:

git log -g -Ssearch_for_this
# this also works but may be slower, it only shows text-added results
git grep search_for_this $(git log -g --pretty=format:%h)

Git 1.7.4 добавит параметр -G , позволяя вам передать -G <regexp>, чтобы найти, когда была перемещена строка, содержащая <regexp>, что -S не может сделать. -S будет сообщать вам только об изменении общего количества строк, содержащих строку (например, добавление / удаление строки).

Наконец, вы можете использовать gitk для визуализации оборванных коммитов:

gitk --all $(git log -g --pretty=format:%h)

И затем используйте его функции поиска, чтобы искать неуместные файлы. Все эти работы, предполагающие, что отсутствующий коммит не «истек», и были собраны мусор, что может произойти, если оно свисает в течение 30 дней, и вы завершаете блокировки или запускаете команду, которая их истекает.







mercurial diff changeset