Вывод git tag
упорядочен по алфавиту. Я хотел бы, чтобы он был упорядочен в хронологическом порядке (дата коммитов, которым они назначены, а не дата, когда они были созданы), в противном случае выходные данные должны остаться неизменными.
Я попробовал предложение от http://networkadmin20.blogspot.de/2010/08/howto-list-git-tags-by-date.html, но порядок все тот же.
Чтобы убедиться, что это не ошибка моего репозитория, я попробовал следующее с чистым репозиторием:
[email protected] ~/Projects/sandbox % mkdir chronogit
[email protected] ~/Projects/sandbox % cd chronogit
[email protected] ~/Projects/sandbox/chronogit % git init
Initialized empty Git repository in /home/soeren/Projects/sandbox/chronogit/.git/
[email protected] ~/Projects/sandbox/chronogit (git)-[master] % touch a
[email protected] ~/Projects/sandbox/chronogit (git)-[master] % git add a
[email protected] ~/Projects/sandbox/chronogit (git)-[master] % git commit -m 'a'
[master (root-commit) f88e0e9] a
0 files changed
create mode 100644 a
[email protected] ~/Projects/sandbox/chronogit (git)-[master] % git tag 'A-first'
[email protected] ~/Projects/sandbox/chronogit (git)-[master] % git mv a b
[email protected] ~/Projects/sandbox/chronogit (git)-[master] % git commit -m 'c'
[master ecc0c08] c
1 file changed, 0 insertions(+), 0 deletions(-)
rename a => b (100%)
[email protected] ~/Projects/sandbox/chronogit (git)-[master] % git tag 'C-second'
[email protected] ~/Projects/sandbox/chronogit (git)-[master] % git mv b c
[email protected] ~/Projects/sandbox/chronogit (git)-[master] % git commit -m 'b'
[master e72682d] b
1 file changed, 0 insertions(+), 0 deletions(-)
rename b => c (100%)
[email protected] ~/Projects/sandbox/chronogit (git)-[master] % git tag 'B-third'
[email protected] ~/Projects/sandbox/chronogit (git)-[master] % git tag
A-first
B-third
C-second
[email protected] ~/Projects/sandbox/chronogit (git)-[master] % git for-each-ref refs/tags --sort=taggerdate --format="%(refname:short)"
A-first
B-third
C-second
Желаемый результат:
A-first
C-second
B-third
или, поскольку инвертирование не должно быть слишком сложным:
B-third
C-second
A-first
Изменить: как указано в комментариях, этот вопрос довольно похож, поэтому я попробовал следующее:
[email protected] ~/Projects/sandbox/chronogit (git)-[master] % git log --tags --simplify-by-decoration --pretty="format:%ai %d"
2013-09-06 16:08:43 +0200 (HEAD, B-third, master)
2013-09-06 16:08:21 +0200 (C-second)
2013-09-06 16:07:42 +0200 (A-first)
Порядок в порядке, но теперь я борюсь с форматированием...
[email protected] ~/Projects/sandbox/chronogit (git)-[master] % git log --tags --simplify-by-decoration --pretty="format:%(refname:short)"
%(refname:short)
%(refname:short)
%(refname:short)
[email protected] ~/Projects/sandbox/chronogit (git)-[master] % git log --tags --simplify-by-decoration --format="%(refname:short)"
%(refname:short)
%(refname:short)
%(refname:short)