Как в Git я могу записать текущий хеш коммита в файл в том же коммите

Я пытаюсь сделать что-то необычное с помощью хитов Git, но я действительно не знаю, как чтобы сделать это (или, если это возможно).

Мне нужно сделать следующее: при каждом коммите я хочу взять его хеш, а затем обновить файл в коммите с помощью этого хэша.

Есть идеи?

117
задан Mrchief 19 November 2014 в 16:02
поделиться

3 ответа

Я бы порекомендовал сделать что-то похожее на то, что вы задумали: поместить SHA1 в неотслеживаемый файл, созданный как часть процесса сборки / установки / развертывания. Совершенно очевидно, что это легко сделать ( git rev-parse HEAD> filename или, возможно, git description [--tags]> filename ), и это позволяет избежать каких-либо безумных действий, таких как получение файла это отличается от того, что отслеживает git.

Затем ваш код может ссылаться на этот файл, когда ему нужен номер версии, или процесс сборки может включить информацию в конечный продукт. Последнее на самом деле является тем, как git сам получает номера версий - процесс сборки извлекает номер версии из репозитория, а затем встраивает его в исполняемый файл.

79
ответ дан 24 November 2019 в 02:09
поделиться

Я не думаю, что вы действительно хотите это делать, потому что, когда файл в фиксации изменяется, хэш фиксации также изменяется.

3
ответ дан 24 November 2019 в 02:09
поделиться

Этого можно добиться с помощью атрибута filter в gitattributes . Вам нужно будет предоставить команду smudge , которая вставляет идентификатор фиксации, и команду clean , которая удаляет его, чтобы файл, в который он вставлен, не изменился только из-за совершить идентификатор.

Таким образом, идентификатор фиксации никогда не сохраняется в большом двоичном объекте файла; он просто расширен в вашей рабочей копии. (На самом деле вставка идентификатора фиксации в большой двоичный объект станет бесконечно рекурсивной задачей. ☺) Любой, кто клонирует это дерево, должен будет настроить атрибуты для себя.

10
ответ дан 24 November 2019 в 02:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: