2013-11-11 3 views
1

Когда мы совершаем фиксацию git, возможно ли создать git файл, содержащий номер версии git?Могу ли я создать GIT файл с текущим номером ревизии при фиксации?

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

ответ

3

Это невозможно, потому что идентификатор фиксации (единственное, что Git имеет идентификатор ревизии, но есть и несколько более легкий для чтения вывод из git describe, в котором требуется, чтобы теги существовали в вашем репо в правильные места) зависит от содержимого фиксации. Если вы вычисляете идентификатор фиксации на основе текущего содержимого и затем вставляете его, содержимое изменяется, и поэтому идентификатор фиксации теперь отличается от того, который вы рассчитали.

В общем, способ создания идентификатора фиксации в другом месте, например. делая код доступным для любой загрузки в производственные среды. То же самое требуется в строительных процессах, а в тех, как правило, работает следующим образом:

  1. Get ID тока фиксации (например, git rev-parse HEAD) и записать его в файл. В проектах C это может быть файл заголовка.
  2. Используйте этот файл в процессе сборки, например. по #include - в исходном файле.

Аналогичным образом, для развертывания кода вы можете просто выполнить задание, которое толкает код, создавая дополнительный файл (который помещается вместе с остальным), который содержит идентификатор фиксации.

+0

Право - система здания должна нести ответственность за получение этой информации от git. Например, в манифесте Java jars файл легко может содержать всю необходимую информацию о банке, идентификатор фиксации, из которого он был создан, был ли изменен рабочий каталог (был ли рабочий каталог чистым), где он был скомпилирован и т. Д. Он также должен пометить код поэтому каждый может видеть, что было последним выпущенным государством в репо. –