Удалить самый старый файл в репозитории - PullRequest
1 голос
/ 23 сентября 2011

У меня есть git-репо, и у меня есть ревизии файла с датой времени Unix. Я хочу получить самый старый файл (т.е. файл с наименьшей временной меткой) и удалить его.

Возможно ли это только с помощью Bash, и если да, то как?

1 Ответ

3 голосов
/ 23 сентября 2011

Если вы хотите найти самый старый файл в дереве каталогов, вы можете сделать что-то вроде этого:

ls -tr $(find . -type f) | head -1

Это работает, пока количество файлов не слишком велико.Это даже проще, если вы хотите удалить «все файлы старше определенного количества дней».Например, если вы хотите избавиться от чего-либо старше 5 дней:

find . -type f -mtime +5 -print | xargs rm

Вы не захотите запускать этот дословно;Вы хотите предоставить соответствующие фильтры для find - или получить root в каталоге approriate - так, чтобы вы удаляли только те файлы, которые действительно хотите удалить.

Очевидно, что вам нужнопередайте эти удаления в git.Вы можете сделать что-то вроде этого:

find . -type f -mtime +5 -print | xargs git rm
git commit -m "deleted things"

... хотя обратите внимание, что это может зафиксировать изменения, которые вы ранее поставили с помощью "git add".Некоторые вещи лучше всего делать вручную.

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