Mercurial - всі файли, що змінилися в наборі змін?


97

Як можна визначити всі файли, що змінилися в заданому наборі змін?

Я не шукаю різниці в цьому випадку, просто список додавання / видалення / модифікацій.

hg log -vprX робить список відмінностей, але я просто хочу, щоб файли.


Відповіді:


149

Якщо ви хочете перерахувати лише ті файли, які були змінені, вам слід скористатися "командою статусу". Нижче наведено перелік змін у файлах у редакції REV

hg status --change REV

13
+1, але ОП, мабуть, теж хоче -n/ --no-statusпрапор.
Niall C.

7
Для легкого копіювання:hg status --no-status --change REV
zastrowm

+1 Це набагато простіше набрати, ніж hg status --rev REV~1:REVраніше.
Патрік Осіті

3
використання '.' для поточного рев. значення -hg status --change .
zaxy78

16

Просто вийміть pіз свого hg log -vpr, покаже список файлів. -pозначає показати виправлення. Ви також можете використовувати шаблон для форматування результатів на ваш смак.


3
Думаю, вам знадобиться такий шаблон: --template 'files: {files} \ n'
Ton Plomp

1
Я вважаю, що {files} є частиною шаблону -v прапор за замовчуванням
eskhool

2
hg log -r. --template '{приєднатися (файли, "\ n")}', щоб новий рядок розділити файли
Foxichu

1
@Foxichu коментар працював для мене, але був своєрідний хакі. насправді верхня відповідь - hg status --change .працював краще і дав файл префіксу дії (A \ M \ D тощо) та кращого відносного шляху
zaxy78

13

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

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

2
Страшно погано. Файли, модифіковані за діапазоном, hg log -r BEGIN:END --template "{files}\n"як @ geoffrey-zheng та @ton писали два роки тому !!!
Ледачий борсук

Вибач за це. Припускаючи, що їх відповідь була за єдиний набір змін.
Нік ДеВор

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 status

Довільне скоєне перегляду

hg status --change REV_ID

1
найпростіша і точна відповідь!
zaxy78

2

Знайшов це питання через Гуглінг для подібної концепції. Показати всі файли, які змінилися за допомогою ряду наборів змін, це так само просто, як:

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], з файлами кожного набору змін у новому рядку. Обмін {file_mods}{file_adds}з , {files}щоб показати всі файли , змінені, додані або видалені.
  2. sed -e 's/ /\n/g' розділить усі файли для показу на окремі рядки та
  3. sort буде сортувати список для вас, щоб ми могли фільтрувати список за допомогою uniq
  4. uniq буде фільтрувати список для видалення дублікатів - файлів, які змінилися протягом декількох версій.

Цей розчин склеює останню змінену з першим доданим файлом. Крім того, він не належним чином має справу з пробілами у назви файлів. Рішення на --templateоснові без цих недоліків можна побудувати, використовуючи, 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

Тут відображаються всі зміни, пов’язані з квитком. Однак у ньому не перелічені файли. Ви можете скористатися одним із наведених вище відповідей, щоб потім отримати список файлів, пов’язаних із редакціями.

Щоб зробити це простіше, комбінуючи інформацію з попередніх відповідей, ви можете зробити наступне для пошуку комітетів, у тому числі змінених файлів:

hg log -vk TICKET_NUMBER

Це пов’язано з питанням. Плакат запитав, як отримати файли в набір змін. Набори змін часто пов'язані з квитками. Моє рішення показує, як отримати файли, пов'язані з наборами змін, пов'язаними з квитком.
iDimensionz
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.