Почему git-for-each-ref не может правильно сортировать теги? - PullRequest
3 голосов
/ 07 января 2010

Когда у меня есть хранилище с облегченными и аннотированными тегами, git-for-each-ref, кажется, сортирует только один из наборов. Я хотел бы изменить мой вызов на for-each-ref, чтобы получить вывод, который сортирует все теги и смешивает их в выводе.

Например:


bash-3.2$ git tag | 
> xargs -I T git log -n 1 --format='%at T' T |
> sort -rn | 
> awk '{print $2}'
lwt3
at3
lwt2
at2
lwt1
at1
bash-3.2$ git for-each-ref --sort=-authordate refs/tags | awk '{print $3}'
refs/tags/lwt3
refs/tags/lwt2
refs/tags/lwt1
refs/tags/at1
refs/tags/at2
refs/tags/at3
bash-3.2$ git --version
git version 1.6.6.80.g2df32

Использование -committerdate или -taggerdate создает аналогичные выходные данные, и теги никогда не сортируются правильно. При использовании -*authordate или -*committerdate сортируемая группа инвертируется, а -*taggerdate ничего не сортирует.

Есть ли другой вариант, о котором я не знаю? И это правильное поведение? Я понимаю, почему committerdate или taggerdate сортируют только коммиты или теги соответственно, но кажется, что authordate должен делать то, что я хочу.

Ответы [ 2 ]

3 голосов
/ 18 июля 2014

Для того, чтобы аннотированные теги и легкие теги были отсортированы в целом по дате фиксации, я использую:

git for-each-ref --format='%(*committerdate:raw)%(committerdate:raw) %(refname) %(*objectname) %(objectname)' refs/tags | \
  sort -n | awk '{ print $4, $3; }' 

Эта команда выведет список всех тегов и идентификатора связанного объекта фиксации в хронологическом порядке.

3 голосов
/ 07 января 2010

Хорошо, продолжил и проверил, что я сказал в своем комментарии:

Только аннотированные теги создают объект вкладки в репозитории, который содержит, среди прочего, поле taggerdate, по которому вы пытаетесь отсортировать здесь. Ваши теги, скорее всего, являются легкими тегами и поэтому не содержат такой информации.

А для другой половины, committerdate и authordate, по-видимому, работают правильно для меня на тегах - они просто сортируют коммит, на который указывает тег, поскольку нет информации о том, когда сам тег был создан. (И они изменяют сортировку, если и только если вы поставите перед -)

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