Неожиданный хэш фиксации в архивной папке на GitHub

#git #hash #github

#git #хэш #github

Вопрос:

На следующей странице приведен короткий хэш 89b734fd24 фиксации, соответствующей тегу 1.1.1 : https://github.com/jezdez/django_compressor/tree/1.1.1

Однако в следующей архивной папке вызывается упакованный каталог jezdez-django_compressor-a66ab32 :https://nodeload.github.com/jezdez/django_compressor/tarball/1.1.1

Как правило, короткий хэш в архивной папке совпадает с хэшем фиксации. Откуда a66ab32 берется?

ОБНОВЛЕНИЕ: Похоже, что кто-то из GitHub только что исправил хэш в архивной папке для тега, и теперь он согласован. По крайней мере, я больше не могу воспроизвести проблему.

UPDATE2: та же проблема возникает сhttps://github.com/stefanfoulis/cmsplugin-filer/tree/0.8.0 , архивная папка содержит stefanfoulis-cmsplugin-filer-f6c10c2 (хэш тега), в то время как хэш фиксации является 3bbbd37

ОБНОВЛЕНИЕ3:

  • [22:16] зависит от того, является ли тег легковесным тегом или нет
  • [22:16] облегченные теги — это указатели на коммиты, реальные теги имеют свой собственный sha / message / tagger, связанный с ним
  • [22:17] смотри также:http://progit.org/book/ch2-6.html

Ответ №1:

Хэш — это идентификатор объекта тега. Сложно найти идентификаторы объектов этих тегов, но это возможно.

 $ git show-ref 1.1.1
a66ab32181a6597ec946423f2aecbde9ed113e93 refs/tags/1.1.1

$ git rev-parse 1.1.1
a66ab32181a6597ec946423f2aecbde9ed113e93

$ git show --pretty=raw 1.1.1
tag 1.1.1
Tagger: Jannis Leidel <jannis@leidel.info>

1.1.1 yeah!

commit 89b734fd24c9e172949cac6df29ea591a95f8aa3
tree 042332aaba8b325f9a65697de5c340919cc42f72
parent f226274e4e90c58956753bcd33a406a59e1b419a
parent d683e30dd146bb6db62934a6f561aea27fd84a06
author Jannis Leidel <jannis@leidel.info> 1320241044  0100
committer Jannis Leidel <jannis@leidel.info> 1320241044  0100

    Merge branch 'release/1.1.1'
  

Zip имеет sha фиксации, каталог имеет sha фактического объекта тега.

Ответ №2:

Не вдаваясь в подробности, я бы сказал, что это, вероятно, аннотированный тег, возможно, также подписанный.

Это отдельные объекты и, следовательно, имеют отдельный идентификатор объекта в базе данных объектов git. Тег ссылается на идентификатор фиксации. (изучаю репозиторий, который вы сейчас связали)

Редактировать Вот что происходит:

git show a66ab32

 tag 1.1.1
Tagger: Jannis Leidel <jannis@leidel.info>
Date:   Wed Nov 2 14:37:24 2011  0100

1.1.1 yeah!

commit 89b734fd24c9e172949cac6df29ea591a95f8aa3
Merge: f226274 d683e30
Author: Jannis Leidel <jannis@leidel.info>
Date:   Wed Nov 2 14:37:24 2011  0100

    Merge branch 'release/1.1.1'
  

Чтобы вы могли видеть a66ab32 имена тега, 89b734fd24c9e17 называет соответствующий коммит

Комментарии:

1. Не могли бы вы указать мне, как я могу найти a66ab32 кроме как в архивной папке?