Question

cela peut être une question naïve, mais, comme demandé dans l’objet, quelle est la manière réelle utilisée par les logiciels de gestion de versions pour fusionner une branche dans le coffre principal sans générer de code cassé?

Voici un exemple rapide: je crée une branche à partir du coffre principal pour le programme "Hello World Power edition". J'ajoute un support pour Klingon. Il s’agit d’un changement radical qui modifie le fonctionnement de la fonction printHelloWorld ().

En attendant, à cause du bogue n ° 749 qui provoque "Hello World" "Helo World", la fonction printHelloWorld () du coffre principal a été modifiée.

Le problème que je vois ici est le suivant: lorsque je fusionne par branche vers le tronc principal, j’expérimente une collision dans la fonction printHelloWorld () du fichier sayHello.py

.

Comment un programme VCS sait-il comment ajouter le support Klingon de ma branche et au maintien du correctif dans le coffre principal? Quelles sont les stratégies humaines ou logicielles pour éviter cela?

Merci d'avance.

Était-ce utile?

La solution

  

Comment un programme VCS sait-il comment ajouter   le support Klingon de ma branche et   garder le correctif dans le coffre principal?

VCS ne sait rien de la sémantique de votre code source, il le voit comme un groupe de fichiers texte / binaires. Le système VCS utilise diff / fusionner des algorithmes pour détecter les conflits entre le vôtre et la version actuelle du fichier. Il est de votre responsabilité de résoudre de tels conflits car vous seul connaissez la sémantique de ces changements. Certains VCS, tels que SVN, vous demanderaient de mettre à jour votre copie de travail avec les dernières modifications apportées par le tronc avant de vous permettre de valider les modifications pour vous assurer que rien ne soit perdu.

Pour vous assurer de ne rien casser et que tous les correctifs de bugs précédents ne le sont pas, vous devez utiliser revues de code , tests unitaires et autres pratiques. L'intégration continue est un bon moyen de préserver la santé des logiciels.

Autres conseils

Dans ce cas, le système de contrôle de version ne peut pas fusionner automatiquement, vous devez effectuer la fusion manuellement. De bons tests unitaires vous aideront à vous assurer qu'aucune fonctionnalité n'est perdue.

Avant de pouvoir fusionner votre branche avec le tronc, le système de contrôle de version mettra à jour votre copie de travail avec les modifications apportées au tronc depuis votre ramification. Cela ne vous permettra tout simplement pas de fusionner sans cette mise à jour. Cela garantit que vous aurez toutes les corrections de bugs dans le coffre de votre prochain commit.

Une bonne stratégie pour travailler sur une branche consiste à porter très régulièrement les modifications d’une ligne dans votre branche. Cela vous assure de ne pas trop vous écarter du tronc, ce qui vous pose des problèmes lorsque vous finissez par fusionner dans le tronc.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top