2009-08-19 9 views
0

J'utilise tellement de dépôts git-svn (en même temps) que c'est une corvée de les mettre à jour tous. Je voudrais écrire un script qui automatise ceci, donc je peux juste le lancer tous les matins pendant que je vais chercher un café.détecter les conflits après git-svn rebase

Fondamentalement, mon flux de travail est comme ce

cd ~/module1 
git svn fetch 
git checkout master 
git svn rebase 

git checkout topicbranch 
git svn rebase 

cd ~/module2 
git svn fetch 
git checkout master 
git svn rebase 

Je l'ai déjà automatisé la partie git svn fetch, qui peut être effectué en toute sécurité à tout moment. Mais il n'est pas si sûr de faire git svn rebase automatiquement car il pourrait y avoir des conflits.

Comment un script peut-il déterminer s'il y a eu un conflit après un rebasage? Ensuite, je pouvais courir git rebase --abort, et d'écrire une ligne dans un fichier journal afin que je puisse examiner les échecs quand je reviens avec mon café :)

Répondre

1

D'après ce que je peux recueillir de git-svn, git-rebase et git-sh-setup git sortira avec un code de sortie de 1 si le rebasage ne peut pas être effectué en raison de conflits.

+0

Cela semble correct, bien qu'il renvoie également 1 si le rebasage ne peut pas être effectué parce que par ex. il y a des changements non validés dans la copie de travail. Devrais-je juste lancer git rebase --abort quand même? – amarillion

+0

Eh bien, si un rebasage ne peut pas être effectué sans interaction, vous n'avez pas vraiment le choix quand il est automatisé, n'est-ce pas? – Bombe

3

Après avoir fait « fetch git svn », vous pouvez utiliser une fusion au lieu d'un rebasage pour obtenir les dernières choses svn dans votre succursale locale. Si la fusion réussit, vous le saurez car il n'y a pas de conflits (que vous pouvez trouver avec des outils comme les fichiers git ls). Si la fusion n'est pas, vous n'avez rien modifié et vous pouvez simplement ignorer les modifications apportées à votre arbre de travail.

Ensuite, effectuez un rebasage en tant que dernière étape avant de valider (si vous le souhaitez, ce n'est pas strictement nécessaire) et vous ne pouvez gérer le rebasing sujet aux erreurs de manière interactive qu'une seule fois.

Questions connexes