Як можна визначити всі файли, що змінилися в заданому наборі змін?
Я не шукаю різниці в цьому випадку, просто список додавання / видалення / модифікацій.
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
варіант, який придушує його.
Знайшов це питання через Гуглінг для подібної концепції. Показати всі файли, які змінилися за допомогою ряду наборів змін, це так само просто, як:
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
основі без цих недоліків можна побудувати, використовуючи, join()
як запропонував @Foxichu.
Я знаю, що це питання - це давнє запитання, і я дивуюсь, що ніхто не запропонував модифіковану форму коду OP. Я тільки що запустив список модифікованих / доданих / видалених файлів (не позначених як це) hg log -v
. Або те, що мені насправді потрібно було, hg log -v -l5
щоб побачити файли, які були змінені / додані / видалені за останні 5 комітів (включаючи ті, які я ще не натискав на репо).
Якщо ви схожі на більшість магазинів, ви використовуєте систему квитків для відстеження змін. Якщо ви знаєте номер квитка і хочете знайти всі зобов’язання, пов’язані з цим квитком (якщо ви включите номер квитка в повідомлення про фіксацію), ви можете скористатися:
hg log -k TICKET_NUMBER
Тут відображаються всі зміни, пов’язані з квитком. Однак у ньому не перелічені файли. Ви можете скористатися одним із наведених вище відповідей, щоб потім отримати список файлів, пов’язаних із редакціями.
Щоб зробити це простіше, комбінуючи інформацію з попередніх відповідей, ви можете зробити наступне для пошуку комітетів, у тому числі змінених файлів:
hg log -vk TICKET_NUMBER