2010-01-03 3 views
2

J'ai des problèmes pour obtenir hudson pour vérifier mon repo git et fusionner dans le maître. Je suis assez inexpérimenté avec Git donc la terminologie (refs etc ...) est encore tout nouveau pour moi. J'ai inclus la sortie de la console Hudson ci-dessous:Hudson git ne fusionne pas dans le master

Ce que je pense est que Hudson vérifie la branche principale de la télécommande, mais ne la fusionne pas dans son propre maître. Lorsque je ssh dans mon serveur et aller à l'espace de travail et tapez git branch la branche actuelle est * (no branch) et les journaux pour ce "pas de branche" sont à jour.

Si je vérifie la branche principale, je reçois Your branch is behind the tracked remote branch 'origin/master' by x commits Donc, évidemment, il ne fusionne pas dans le maître. Comment cela fonctionne-t-il, comment peut-il se fondre dans "aucune branche" ??

J'ai listé ma configuration git ci-dessous. Je ne suis pas sûr de ce que je dois faire pour que hudson fusionne avec sa branche master (ou n'importe quelle branche que je spécifie d'ailleurs). Je finirai par le configurer pour avoir une branche de mise en scène et de production, donc je dois m'assurer qu'il tire et fusionne la branche appropriée pour que je puisse exécuter un déploiement. J'ai obtenu ces paramètres hudson à partir d'un tutoriel que j'ai trouvé, donc je ne comprends pas tout. Pourquoi, par exemple, la branche à construire est */master au lieu de simplement master (cela ne semble pas faire de différence si je la change en master)

Toutes les astuces sont grandement appréciées !!

Hudson Paramètres Git

__gVirt_NP_NN_NNPS<__ URL du référentiel: /home/git/repositories/my_repo.git
Nom du dépôt: origin
Refspec: +refs/heads/*:refs/remotes/origin/*
Branches à construire: */master

Hudson Git 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 

Versions
Hudson: 1.337
Git: 1.5.6.5
Hudson Git Plugin: 0.7.3
Linux: Debian Lenny 5.0.3

+0

Je n'ai pas accès à mon serveur Hudson pour le moment, mais j'ai un fonctionnement. Je ne peux pas vraiment me souvenir de la syntaxe exacte, mais je pense que je viens de remplacer les deux caractères '*' dans la refspec avec 'master' (ou quel que soit le nom de la branche). –

+0

Également, essayez d'effacer l'espace de travail dans Hudson après avoir apporté des modifications à la configuration git, en vous assurant que Hudson effectuera une extraction entièrement propre la prochaine fois. –

+0

dites-vous alors de changer cela à la fois dans la config hudson refspec et aussi dans le .git/config de l'espace de travail? Et en effaçant l'espace de travail, voulez-vous dire supprimer seulement les fichiers extraits? Ou aussi toutes les choses de configuration git – brad

Répondre

0

La solution à ceci est l'installation v1.0 du plugin Hudson Git. Il permet à une branche locale optionnelle de fusionner HEAD.

2

Il suffit de décocher la case "Fusionner avant la construction" et de définir votre banch à maîtriser. Vous ne voulez pas fusionner avant de construire ... c'est pour fusionner des branches de sujet en master (ou n'importe quelle branche) et ensuite en les repoussant vers master (ou n'importe quelle branche) si elle construit/intègre et que la construction réussit.

Le plugin hudson vous met réellement sur (pas de branche) sur le but ... et il est un peu déroutant au début, mais voici ma tentative d'explication.

Lorsque vous exécutez git checkout {} Certains SHA git se termine sur (pas de branche) ou ce qu'on appelle un état de tête détachée. Un SHA est un identifiant unique pour un commit (et d'autres choses, mais pour les besoins de cette explication, c'est pour commits). C'est une fonctionnalité ... pas un bug. Lorsque vous vérifiez un SHA votre git disant que vous voulez pointer la révision symbolique intitulée HEAD à un SHA spécifique. Ne vous inquiétez pas ... vous êtes toujours sur le maître que vous êtes juste dans un état de tête détaché. Mon hypothèse sur la raison pour laquelle le plugin hudson git fait cela est que la révision HEAD symbolique se déplace dans un dépôt distant lorsque les gens s'engagent dans un repo git.Ainsi, les problèmes de plug-ins de telles commandes (dans l'anglais)

  1. git fetch (tirer les dernières branches à distance dans le dépôt git à distance dans ma copie des branches à distance - vous pouvez voir cela en utilisant -a git branch ou -r)
  2. git origine rev-parse/maître (Prenez la dernière SHA de la branche principale dans le repo d'origine dans cet exemple, nous allons utiliser xxxx comme SHA)
  3. git checkout xxxx (vérifie la dernière SHA à partir du repo à distance ... cela vous placera dans un état de tête détaché.)

Ok ... maintenant nous sommes prêts à construire. (Il fait aussi d'autres choses comme le dernier SHA par rapport au SHA actuel afin qu'il puisse cracher une liste de changements entre les deux builds.)

Espérons que cela vous aidera à démarrer et à l'expliquer un peu. (Ou au moins le prochain gars qui trouve cela sur l'interweb.)

+0

thx pour la réponse, ce projet sur lequel je travaillais est en attente donc quand je reviendrai à ce que je vais vérifier ce que vous avez dit. – brad

+0

ok donc hudson vérifie la dernière révision et me laisse dans un état de tête détaché, quel est mon meilleur plan d'action pour fusionner cette tête en maître? J'essaie de faire un déploiement Heroku sur une build réussie qui ne fait que pousser le master vers la télécommande heroku, mais je n'arrive jamais à le mettre à jour correctement. – brad

+0

nm ... git 1.0 plugin fournit une branche locale facultative à fusionner. travaillé comme un charme! – brad

Questions connexes