2017-10-11 2 views
0

Je fais une routine à exécuter avant chaque fusion. Il va lancer le test unitaire et vérifier les autres fichiers de configuration. Pour info, il est codé dans le noeud. À la fin, si tout va bien, il vérifiera s'il y a un conflit avec develop, et affichera simplement yes ou no pour l'utilisateur. La requête Pull doit être gérée sur gitlab, pas sur la branche locale. Il ne devrait donc pas y avoir de 'vraie' fusion sur la branche locale.comment obtenir la liste des fichiers en conflit avant la fusion?

Existe-t-il une commande git disponible comme git -conflitcs-with-this-branch? Et un moyen de le récupérer à partir de nodejs?

Merci,

Stéphane.

Répondre

2

La commande qui trouve les conflits de fusion est git merge. Exécuter git merge, éventuellement avec --no-commit et éventuellement sur un HEAD détaché. En cas de conflit, git merge quitte avec un état non nul. S'il n'y a pas de conflits, git merge quitte avec un statut zéro. Si exécuté avec --no-commit Git ne fait aucun commit dans les deux cas; s'il est exécuté sans Git, Git effectue un commit de fusion sur le HEAD actuel. Si HEAD est détaché, ce commit n'affecte que HEAD.

Si vous avez utilisé un HEAD détaché, vous pouvez maintenant rattacher HEAD à sa branche d'origine ou valider.

Si vous avez utilisé --no-commit, vous pouvez simplement exécuter git merge --abort, que la fusion réussisse ou échoue. Par conséquent, la séquence de commandes la plus simple consiste à exécuter git merge --no-commit, à enregistrer le statut de sortie, puis à exécuter git merge --abort. Notez que dans tous les cas, Git utilisera l'index et l'arborescence au cours du processus de fusion. Vous devez donc vous assurer qu'ils sont sûrs pour Git pendant toute cette période. (En particulier, l'index et l'arbre de travail doivent être "propres" au début du processus, ils seront aussi propres à la fin, à condition qu'il n'y ait pas de pilotes de fusion qui laissent des dégâts.)

(Comment obtenir le statut de sortie de git merge de node.js, je n'ai aucune idée.)