Сохранение Git SHA1 при сборке с Hudson аналогично тегу CVS_BRANCH для CVS - PullRequest
1 голос
/ 13 октября 2010

Мы перешли с CVS на Git. Наш сценарий сборки Hudson, используемый для сохранения значения переменной среды CVS_BRANCH в сгенерированной сборке, вместе с HUDSON BUILD_ID для дальнейшего изучения.

Я не могу понять, как Хадсон (или плагин Git) представляет имя Git SHA1 текущего коммита для скрипта ant, так как я не могу найти какой-либо определенный источник, говорящий, где я должен искать.

Я бы предпочел не вызывать git, чтобы получить его, если он присутствует в среде, но может сделать, если это необходимо.

Что я пропустил?

Ответы [ 4 ]

2 голосов
/ 19 января 2011

Оказалось, что jGit поддерживает команду "rev-parse HEAD", которая в сочетании с <java jar="jgit...jar" fork="true" args="rev-parse HEAD" outputproperty="git.SHA1" /> делала именно то, что я хотел, а именно получила SHA1 в свойство ant, чтобы я мог использовать это позже.

2 голосов
/ 13 октября 2010

Ну, если вы действительно хотите избежать вызова команды git (git describe или git rev-parse), то вы можете сделать следующее:

  1. Найдите файл $ GIT_DIR / HEAD,Если это символьная ссылка, ее целью является полностью определенное имя текущей ветви (например, 'refs /head / master', если текущая ветка 'master');не должно происходить, за исключением очень старых репозиториев, управляемых очень старым git.

    Если это обычный файл, он имеет либо ref: refs/heads/<branch> (так называемый symref), либо содержит идентификатор SHA-1текущий коммит (так называемый «отсоединенный HEAD» или анонимный филиал: «(без ветвления)» в git branch выводе.

  2. Текущий коммит находится либо в $ GIT_DIR / refs / head /Файл branch , или его можно найти в файле $ GIT_DIR / pack-refs. Если оба существуют, то побеждает свободный ref (в отдельном файле, названном в честь полного имени ветви).

Но я не уверен, стоит ли оно того.

1 голос
/ 28 января 2014

Подключаемый модуль git предоставляет переменную среды GIT_COMMIT.

0 голосов
/ 16 марта 2012

Чтобы получить номер сборки из git с помощью Ant и JGit, вы можете использовать jgit-buildnumber-ant-task .Он может дать вам имя тега, имя ветви, коммит sha1 и количество коммитов в текущей ветке как переменные Ant.

...