2016-07-20 3 views
1

У меня есть большой репозиторий, и я хотел бы найти список файлов, которые не были изменены в течение длительного времени, отсортированные по дате, я попробовал команду:Git: список всех наименее недавно измененные файлы

git log --pretty=format: --summary --before="<date>" 

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

Может ли кто-нибудь предложить правильную команду?

+1

Я не думаю, что git log сделает это сам по себе ... вам, вероятно, придется передавать результаты на что-то вроде 'sort' - помогает ли этот ответ? http://stackoverflow.com/a/19362660/251983 – Fred

+0

@Fred спасибо, проверит это предложение – erkfel

ответ

1

Основываясь на связи, в которых размещены @fred в комментариях, вы можете попробовать это:

while read file; do echo $(git log --pretty=format:%ai -n 1 --date=raw -- $file) $file; done < <(git ls-tree -r --name-only HEAD) | sort -r 

Он работал для меня.

1

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

tree -ifFCD --timefmt '%Y%m%d %H%M%S' | sort -k1 -k2 

-D напечатать дату последнего времени модификации или если -c используется, последнее время изменения состояния файла в списке ,

+0

Хорошая команда, спасибо, но мой репозиторий просто клонирован, а дата изменения почти одинакова для всех файлов. Я пробовал как с -D, так и с -c. – erkfel

+0

Я отправлю запрос функции 'git', возможно, это будет доступно в будущем. –

Смежные вопросы