2010-01-03 2 views
2

У меня проблемы с получением hudson для проверки моего git-репо и слияния с мастером. Я довольно неопытен с Git, поэтому терминология (refs и т. Д.) Все еще нова для меня. Я включил вывод с консоли Hudson ниже:Hudson git не сливается с мастером

То, что я думаю, это то, что Хадсон проверяет ведущую ветку на пульте дистанционного управления, но не сливает ее в своего собственного хозяина. Когда я схожу на свой сервер и перехожу в рабочую область и набираю git branch, текущая ветка - * (no branch), а журналы для этой «ветви» не обновлены.

Если я проверяю основную ветку, я получаю Your branch is behind the tracked remote branch 'origin/master' by x commits. Очевидно, что это не слияние с мастером. Как это работает, хотя, как он может слиться в «никакой отрасли»?

Я перечислил мою установку git ниже. Не уверен, что мне нужно сделать, чтобы хадсон объединился в его ведущую ветку (или любую ветвь, которую я указываю в этом отношении). В конечном итоге я настрою ее на создание промежуточной и производственной ветви, поэтому мне нужно убедиться, что она тянет и слияние правильной ветви, чтобы я мог запустить развертывание. Я получил эти настройки hudson из некоторого учебника, который я нашел, поэтому я не полностью понимаю все. Почему, например, ветка для сборки - это */master, а не просто мастер (по-видимому, это не имеет значения, если я изменяю ее только на мастер)

Любые советы приветствуются!

Hudson Git Настройки

URL репозитария: /home/git/repositories/my_repo.git
Имя репозитария: origin
Refspec: +refs/heads/*:refs/remotes/origin/*
Отрасли построить: */master

Hudson Гит Console Log

Last Built Revision: Revision 6ffd51afe6b87393d3215ab2bb30dbcd2de73dde (origin/master) 
Checkout:workspace//mnt/data/hudson/jobs/MyApp-master/workspace - [email protected] 
Fetching changes from the remote Git repository 
Fetching upstream changes from /home/git/repositories/my_repo.git 
[workspace] $ git fetch /home/git/repositories/my_repo.git +refs/heads/*:refs/remotes/origin/* 
From /home/git/repositories/my_repo 
    6ffd51a..7333c68 master  -> origin/master 
[workspace] $ git ls-tree HEAD 
Seen branch in repository heroku-devel/master 
Seen branch in repository origin/staging 
Seen branch in repository origin/master 
Seen branch in repository origin/production 
[workspace] $ git merge-base 45ae1c52e350fc1463f8b057d81b8cd4472ecdd9 7333c68d2b959eec6b472d7897ec30a3a3cfb5b5 
Commencing build of Revision 7333c68d2b959eec6b472d7897ec30a3a3cfb5b5 (origin/master) 
Checking out Revision 7333c68d2b959eec6b472d7897ec30a3a3cfb5b5 (origin/master) 
[workspace] $ git checkout -f 7333c68d2b959eec6b472d7897ec30a3a3cfb5b5 
[workspace] $ git tag -a -f -m "Hudson Build #94" hudson-MyApp-master-94 
Recording changes in branch origin/master 
[workspace] $ git log --numstat -M --summary --pretty=raw 6ffd51afe6b87393d3215ab2bb30dbcd2de73dde..7333c68d2b959eec6b472d7897ec30a3a3cfb5b5 

Версии
Хадсон: 1.337
Git: 1.5.6.5
Hudson Git плагин: 0.7.3
Linux: Debian Lenny 5.0.3

+0

У меня нет доступа к моему серверу Hudson только сейчас, но у меня это работает. Не могу точно запомнить точный синтаксис, но я думаю, что я просто заменил два символа '*' в refspec на «master» (или как бы там ни было название ветки). –

+0

Кроме того, попробуйте вычистить рабочую область в Hudson после внесения изменений в конфигурацию git, гарантируя, что в следующий раз Hudson проведет полностью чистую проверку. –

+0

Вы хотите сказать, что это изменить как в конфигурации hudson refspec, так и в .git/config рабочего пространства? И, вытирая рабочую область, вы хотите удалить только извлеченные файлы? Или также все файлы git config – brad

ответ

0

Решение этой проблемы - установить v1.0 плагина Hudson Git. Он позволяет использовать дополнительную локальную ветвь для объединения HEAD в.

2

Просто снимите флажок "Объединить перед сборкой" и установите Banch мастера. Вы не хотите слияния перед сборкой ... это для слияния ветвей темы в master (или в любой ветви), а затем отталкивания назад к master (или к любой ветви), если он строит/интегрируется и сборка завершается успешно.

Плагин hudson на самом деле вводит вас (без ветви) с целью ... и сначала это немного запутывает, но вот моя попытка объяснения.

Когда вы запускаете git checkout {Some SHA} git заканчивается (без ветки) или так называемое состояние отдельной головки. SHA - это уникальный идентификатор для фиксации (и другие вещи, но для целей этого объяснения это для коммитов). Это особенность ... не ошибка. Когда вы проверяете SHA на свой git, вы хотите указать символическую ревизию под названием HEAD на определенной SHA. Не волнуйся ... ты все еще на хозяине, ты просто в состоянии ошеломленной головы.

Мое предположение о том, почему плагин hudson git делает это, потому что символическая ревизия HEAD перемещается в удаленном репозитории, когда люди берут на себя репозиторий git.Таким образом, вопросы плагина команда, как это (в простом английском языке)

  1. мерзавец выборка (тянуть последние удаленные филиалы в удаленном хранилище мерзавца в мою копию удаленных филиалов - вы можете увидеть это с помощью мерзавец ветви -a или -r)
  2. мерзавца преподобным синтаксического анализа происхождение/мастер (Захватите последнюю SHA из главного филиала в происхождении репо в этом примере мы будем использовать хххе как SHA)
  3. мерзавца контроль XXXX (проверяем последнюю SHA от удаленного репо ... это поместит вас в состояние отсоединенной головки.)

Ok ... теперь мы готовы строить. (Он также выполняет другие действия, такие как diff the last SHA, против текущей SHA, чтобы он мог выплескивать список изменений между двумя сборками.)

Надеюсь, что это поможет вам разобраться и немного объяснить. (Или, по крайней мере, следующий парень, который находит это на interweb.)

+0

thx для ответа, этот проект, над которым я работал, приостановлен, поэтому, когда я вернусь к нему, я проверю, что вы сказали. – brad

+0

ok, поэтому hudson проверяет последнюю версию и оставляет меня в состоянии отдельной головы, каков мой лучший способ действий, чтобы объединить эту голову в мастера? Я пытаюсь использовать развертывание Heroku при успешной сборке, которая просто подталкивает мастера к удаленному серверу heroku, но я никогда не смогу правильно обновить мастер. – brad

+0

nm ... плагин git 1.0 предоставляет дополнительную локальную ветвь для объединения. работал как шарм! – brad

Смежные вопросы