Примечание: комментарий OP milkplus относится к недавней ошибке Гудзона 6856 (июнь 2010 г.), в которой упоминается:
Git строит с отсоединенной головой независимо от того, что
Хотя неясно, будет ли решена эта конкретная проблема (ответы предполагают, что она может действительно «работать как задумано»!),это также относится к этой версии Hudson Git Plugin , позволяющей оформить локальное отделение.
Вы находитесь в DETACHED HEAD
потому что, поскольку плагин git работает прямо сейчас, он извлекал непосредственно коммит SHA1, а не ветвь HEAD
.
Состояние, в котором вы находитесь, пока ваш HEAD
отсоединенне записывается ни одной веткой (что естественно - вы не находитесь ни в одной ветке).Это означает, что вы можете отказаться от временных коммитов и слияний, переключившись обратно на существующую ветвь.
Ваш сценарий сборки может сначала попытаться найти ветвь, из которой поступает соответствующая фиксация .
Как OP milkplus , реализованный на основе исходного кода плагина Hudson Git :
public void buildEnvVars(AbstractBuild build, java.util.Map<String, String> env) {
super.buildEnvVars(build, env);
String branch = getSingleBranch(build);
if(branch != null){
env.put(GIT_BRANCH, branch);
}
}
Переменная окружения GIT_BRANCH
установлена, но она не имеет никакого значения в сценарии сборки xml:
<property environment="env"/>
<echo>GIT_BRANCH = ${env.GIT_BRANCH}</echo>
В этом случае это может быть связано с выпуском 7554:
GIT_BRANCH
не задано, когда для сборки выбрано несколько ветвей
При попытке определить, на какой ветви находится текущая сборка, яобнаружил, что переменная окружения GIT_BRANCH
не устанавливается, если для построения выбрано более одной ветви.
Это не совсем ошибка, так как я думаю, что запрос функции -GIT_BRANCH
env var устанавливается только если есть одна ветвь, поэтомукак таковой, он не имеет значения, если / когда есть несколько ветвей.Я не уверен, как мы отформатируем env var для нескольких веток в этом контексте.
Я думал, что GIT_BRANCH
будет установлен на ветку, которая в данный момент строит.Например, если сборка ведется на мастере, она будет содержать мастер.
Это поможет, например, передать на другой удаленный компьютер ветвь, созданную во время этой сборки.Или запуск другого билда с правильным набором веток, который будет построен.
Вид зеркала NPE, описанный здесь
По какой-то причине плагин Git начал передавать нулевое значение для переменной среды GIT_BRANCH
.
Это привело к сбою плагина Maven при вызове System.getProperties().putAll(systemProps)
.
Решением было использование "master
"как ветка Git по умолчанию вместо" **
"или пустой строки.