/ / libgit2: Comment fusionner et commettre après l'extraction? - c, libgit2

libgit2: Comment fusionner et valider après l'extraction? - c, libgit2

J’ai réussi à récupérer de la télécommande et j’exécute le code ci-dessous pour obtenir les modifications effectuées dans la branche maître locale.

    git_annotated_commit * fetchhead_commit;

git_annotated_commit_lookup(&fetchhead_commit,
repo,
oid
);

git_merge(repo,&fetchhead_commit,1,NULL,NULL);

Alors maintenant, si j'utilise l'outil de ligne de commande git pourcommit Je reçois un commentaire de fusion automatique, puis je constate que le journal est le même que celui de la télécommande. J’essaie d’obtenir la même chose avec libgit mais mes efforts jusqu’à présent pour tenter de créer un commit des résultats de la fusion sont perdus.

Comment dois-je effectuer un "bon" commit des modifications fusionnées afin de préserver l'historique de la télécommande?

MODIFIER: Un peu plus loin en faisant une avance rapide, mais s'il y a des commits locaux, ceux-ci sont perdus après la fusion entrante. Les modifications locales ne sont pas perdues, mais organisées après la fusion et doivent être validées à nouveau.

Vous pouvez voir mon code ici: https://github.com/fintechneo/libgit2/blob/master/jsbuild/jslib.c

La fusion se passe dans le fetchead_foreach_cb fonction qui s'appelle à nouveau de jsgitpull

Et pour mémoire, ce hack fonctionne dans le navigateur Web si quelqu'un se demande de quoi il retourne.

Réponses:

1 pour la réponse № 1

Créer le commit de fusion avec git_commit_create. Le commit de fusion devrait avoir deux parents. L'un est le commit HEAD actuel. Le second est le même commit annoté que vous avez fusionné git_merge (par exemple la tête de récupération).