Як перелічити кожен файл для кожної редакції в Git (наприклад, hg маніфест Mercurial - всі)?


10

Mercurial має команду перелічити всі файли, які має сховище для кожної версії:

hg manifest --all

Чи є рівнозначна команда в Git?


Щось на зразок git log --stat?
jmreicha

4
git ls-files?
НН

Просто цікаво, з якої причини вам це потрібно?
Стівен Дженнінгс

@StephenJennings: це приємніший спосіб дізнатися, який тип файлів знаходиться під контролем версій, ніж розумово робити " ls -Rмінус .gitignore". Корисність загалом: можна більш-менш знати, що відбувається, але самоаналіз сховища дає впевненість у тому, що він знає. Спеціально для початківців користувачів така впевненість значно впливає на те, наскільки приємною є програма. Git не робить заспокоєння своїх користувачів пріоритетом, саме тому стільки людей, зрозуміло, ненавидять його, поки вони не дізнаються його.
Esteis

Відповіді:


3

Я абсолютно жахливий в сценаріях оболонок, тому це, безумовно, є неоптимальним, але подібний варіант може зробити це за вас, якщо припустити, що ви використовуєте bash. Сподіваємось, хтось інший може зайти і почистити його чи замінити чимось кращим. Я тестував це лише на своєму Mac, тому будьте обережні.

Він повинен надрукувати всі файли у комітах, які є пращурами нинішньої HEAD. Збережіть його у файлі, який називається manifest.shдесь на вашому шляху:

#!/bin/bash

TFILE=$(mktemp -t git-manifest)

for sha in $(git log --pretty=format:%H)
do
    git ls-tree --name-only --full-tree -r $sha >> $TFILE
done

sort -u $TFILE
rm $TFILE

1
Не потрібно, exportоскільки це не потрібно бути доступним у дочірніх процесах. Якщо цикл перебуває над хешами SHA, цикл працює просто чудово, інакше щось із використанням readта цитуванням змінної було б краще. sortє -uваріант, який робить те, що uniqробить. Цей файл не отримає rmd, якщо ви скасуєте його на півдорозі, вам знадобиться це trap, але це, мабуть, буде надмірним для цього сценарію.
Даніель Бек

@DanielBeck: Дякую, я трохи оновив його. mktempне існує в Git Bash, я мушу розглянути спосіб вирішення цього питання, щоб Windows також могла грати.
Стівен Дженнінгс
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.