2017-10-19 3 views
0

J'ai un projet donnant comme sortie deux tables. J'ai besoin de l'optimiser en vérifiant à chaque étape que les tables de sortie sont égales ou au moins la différence est explicable.Comparaison des résultats des branches Git

J'ai donc créé deux branches et l'idée est de modifier itérativement le code dans une branche puis de les exécuter toutes les deux et de comparer les résultats à la fin. Appliquer la modification de la dernière validation de la première branche à la deuxième branche, modifier à nouveau la première et ainsi de suite ...

Comment est-ce que je pourrais réappliquer les dernières modifications d'une branche à une autre sans fusionner des commits précédents?

+0

Pourquoi utiliser des branches? Commit chaque fois et 'git diff HEAD^... HEAD'. – Ryan

+0

Ils stockent les résultats et se connectent dans des répertoires différents pour faciliter la comparaison – Gabriel

Répondre

0

La meilleure solution consiste simplement à garder les commits linéaires en premier lieu. Si vous voulez utiliser deux branches marchant sur cette ligne de commits, cela a du sens; mais en ayant deux lignes de commits, vous créez un travail inutile. A partir des commentaires, je déduis que vous avez quelques changements de configuration de base, affectant les répertoires de sortie et autres. La gestion de ces configurations dans le code de sorte que vous deviez conserver un changement de code pour rediriger la sortie est une erreur de conception, et le problème que vous rencontrez ici est un symptôme. Vous obtiendrez plus pour votre argent en résolvant ce problème. Ensuite, vous pouvez simplement démarrer les deux branches dans le même commit, faire les changements et les valider dans la branche test, lancer votre test; si elle réussit, fusionnez (en utilisant l'avance rapide) la modification dans la branche principale et, si ce n'est pas le cas, retournez la branche de test. Mais si vous êtes décidé à dépenser un effort ponctuel à la place (et que vous avez toujours cette faille de conception qui vous attendra la prochaine fois que vous voulez faire quelque chose), alors vous pouvez plutôt faire ce que vous faites, puis choisissez la validation HEAD de la branche de test sur la branche principale.

https://git-scm.com/docs/git-cherry-pick

Notez que au moins 9 fois sur 10, si je mentionne picorage il est d'appeler le plus en commande git sur recommandé. Les opérations liées les plus proches (que je préfère quand elles sont applicables) sont la fusion par rebase et la fusion de squash; mais ni l'un ni l'autre ne fonctionne comme vous le voudriez dans ce cas. Pour moi, c'est une preuve supplémentaire que la conception n'est pas juste pour commencer.

+0

Merci pour votre réponse, pourriez-vous s'il vous plaît proposer une solution de conception ou vous avez besoin de plus d'infos? I – Gabriel

+0

Je n'ai probablement pas assez d'informations pour entrer dans les détails; mais des choses comme les répertoires de sortie pourraient vraisemblablement être placées dans un fichier de configuration, qui pourrait être soit sélectionné/rempli dans le cadre du processus de construction, soit fourni lors de l'exécution. De là, de nombreuses variantes sont possibles. Vous pouvez conserver les versions "test" et "main" de la configuration dans le contrôle de source. Vous pouvez également conserver un modèle dans le contrôle de source et fournir des valeurs spécifiques à l'extérieur de git. Vous pourriez peut-être même juste faire les chemins relatifs et vérifier le principal et tester pour séparer les arbres de travail. Cela dépend de votre projet –