вывод журнала git как svn ls -v - PullRequest
       20

вывод журнала git как svn ls -v

6 голосов
/ 22 января 2009

Есть ли способ заставить git выдавать вывод, как это делает svn ls -v. В основном список каждого файла и кто последний раз редактировал этот файл? Как это:

filea.txt     Someone Else
fileb.txt     Another Person

Может быть, даже с помощью SHA для определения коммита, в котором произошло изменение?

Ответы [ 3 ]

9 голосов
/ 22 января 2009

Это не очень естественный вопрос в git, но вы, вероятно, можете достичь чего-то такого, чего хотите, с чем-то вроде этого.

for a in $(ls); do git log --pretty=format:"%h%x09%an%x09%ad%x09$a" -1 -- "$a"; done

Он просматривает каждый файл в текущем каталоге и выполняет git log, чтобы найти последний коммит, который на него воздействовал.

Это не очень эффективно, так как он ищет историю git для каждого файла и не пытается повторно использовать результаты предыдущих поисков. Это, однако, однострочник.

7 голосов
/ 22 января 2009

Вы хотите поиграть с git log и его симпатичными форматами. Вот пример, который не полностью соответствует тому, что вы хотите, но должен помочь вам:

git log --pretty=format:"%h: %s -- %an"

Печать:

...
58a2e46: Added readme for github. -- DylanFM
...
2 голосов
/ 26 января 2009

Вопрос: зачем тебе это? В настоящее время git не хватает одной команды, которая бы выполняла эквивалент «svn ls -v», и вам пришлось бы немного по сценарию: идея «git log -1 - $ filename», я думаю, самое простое решение количество строк сценария для записи); если это произойдет, то, вероятно, это будет как "мерзавец".

Но я думаю, что есть альтернативный способ решения вашей проблемы, который вы использовали для решения "svn ls -v".

Пожалуйста, помните, что с нелинейной историей понятие, кто последний изменил файл, не является однозначным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...