Git не поддерживает ничего этого из коробки, но быстрое сканирование вашей ссылки (я не углублялся ни в RFC, ни в стандарт ANSI X9.95) подсказывает, что способ сделать это - сделатьзафиксировать себя, затем передать необработанные данные фиксации - которые вы можете получить с помощью git cat-file -p <em>hash</em>
- в орган отметки времени (TSA), который генерирует метку времени, и поместить все сгенерированные данные в аннотированный тег, помечая этот коммит.Будет легко продемонстрировать, что вы сохранили данные TSA в аннотированном теге, поскольку эти данные отображаются при печати содержимого тега, а TSA покажет, что вы предоставили им данные фиксации.
... Но я борюсь за то, как я могу использовать их в git / github?
Вы сможете делать коммит где угодно, но вам понадобится локальный клон для получениянеобработанный текст коммита.Сам текст фиксации выглядит так:
$ git cat-file -p HEAD | sed 's/@/ /'
tree 191f960868564ef1f0978328589aa191219f1ab8
parent 96f29521a3908eb80b9552f11f2b75ca34475686
author Junio C Hamano <gitster pobox.com> 1525762230 +0900
committer Junio C Hamano <gitster pobox.com> 1525762789 +0900
The fifth batch for 2.18
Signed-off-by: Junio C Hamano <gitster pobox.com>
, и это действительно хэш tree
, который вы будете защищать здесь.Поскольку вы защищаете хеш дерева, теоретически было бы возможно вставить данные TSA непосредственно в текст фиксации, но эта часть была бы значительно сложнее, чем использование аннотированных тегов.Чтобы использовать аннотированные теги, вы просто доставляете полный текст фиксации в TSA;они предоставляют вам хеш, в какой бы форме они его не предоставляли, и вы превращаете его в нечто подходящее для хранения текста в аннотированном теге, точно так же, как Git использует подписи GPG.
Затем вы запускаете (локально, в вашем хранилище) git tag -a
как обычно, вставьте текстовые данные TSA в свой тег, и теперь у вас есть аннотированный тег, хранящий данные TSA.Чтобы отправить эти данные в GitHub, вы просто git push
тег:
git push origin refs/tags/<tagname>
Любой, кто клонирует хранилище, получает аннотированный тег, а git show <em>tagname</em>
(или git cat-file -p refs/tags/<em>tagname</em>
) извлекает аннотацию, которая содержит ваштекстовые данные TSA.Сравните с, например:
$ git show v2.17.0 | sed 's/@/ /'
tag v2.17.0
Tagger: Junio C Hamano <gitster@pobox.com>
Date: Mon Apr 2 10:14:24 2018 -0700
Git 2.17
-----BEGIN PGP SIGNATURE-----
iQIzBAABCAAdFiEE4fA2sf7nIh/HeOzvsLXohpav5ssFAlrCZPAACgkQsLXohpav
5suOTg/+I+qxQFmQyi3Ms1VAzM3wefJ9Ut4qBV5TKCu+wY21c4ZvTk9kvmJN+qYK
MDi6smYlCyj7YD1JqbPEyEoUgb/7TjylA9dBVwrCk8HoyAyLQpwixgkZxLLJEEzE
9EpzAg65fHST//DYMr0pZMee9POKL0KU4ekAJKsrfgRF4rA29OwvkrKvNw9DzAQf
gfIBQktNGzGaKhyjS9AdFR7K7N8vy1hGWPWwAWkxRWRwa2vsENdPuqLMstJqUzmP
3OEqA5OFZ7RDr9WrrNORbCN1iIyAQQ7GzZEMwT1mXhHB+b91F0SO766REnkgfwa1
bMgjpqfzAjoSzeafg5t1jAqm+MvgXQNP4KCWsk6ZtstWj7xfgyuhZ2osTdPUNaeT
tqRdhmrShQ+lMY5uuhJHr7kqUvqt3INpE9KD19nmlPvgPbYP5mDpW8oZfEGTM+iw
vCQqE5AZ5SivhEkkSTDgNdFJemvX2QbtRBiG8RyhWTLpRUGp9q1lgD1KJZlxjrdX
ovqGRNhkRowaGVpfoFeFs5256cxB9FkttE5MEj5FoSB8G4/FdUhkm4qTWXP5fZKt
d89PyWvTXn7x8rKFs/XLMscDnc9kCgnyt0ugYZZxjb4Mqs59A6epE+ylX/j9DDFW
6ZfTteMqLRtDtaEntJFQS9CatSoMpdlXUluKvoWcD9uy57WTayQ=
=JgMH
-----END PGP SIGNATURE-----
commit 468165c1d8a442994a825f3684528361727cd8c0 (tag: v2.17.0, origin/maint)
Author: Junio C Hamano <gitster@pobox.com>
[snip rest]