Question

J'ai la situation suivante des branches dans un référentiel Perforce: Il y a un « tronc » de ligne principale et deux branches de libération « 1.0 » et « 1.1 ». Une branche « client » avec les changements spécifiques à la clientèle a été bifurqué la branche 1.0. Maintenant, le client veut passer à la version 1.1. Comment puis-je fusionner la branche 1.1 dans la branche du client? Les changements spécifiques des clients devraient rester « au-dessus » de 1.1.

Voici un diagramme pour un fichier concerné:

1.1                      -(1)---(2)---(3)
                        /           \     \
                       /             \     \
trunk   100--(101)-(102)--103---104---105---106---107
           \
            \
1.0          ---1-----2--...
                 \
                  \
customer           ---1-----2----*3*

La version actuelle du fichier que je suis à la recherche est la révision 3 sur la branche du client.

Si je choisis d'intégrer la branche « 1.1 » avec l'objectif « client » j'attendu que l'ancêtre commun des deux se trouve (révision 100 sur la canalisation principale) et toutes les révisions de là menant à la pointe de la 1.1 branche sont fusionnées (celles indiquées entre parenthèses).

Au lieu de Perforce uniquement offres à des révisions de fusion 1 à 3 de la branche 1.1, qui échoue parce qu'il manque les changements nécessaires qui se sont produits sur la ligne principale avant.

Comment puis-je persuader Perforce de le faire sans avoir à regarder à chaque fichier manuellement et en sélectionnant les révisions à fusionner? Peut-être que la stratégie de branchement ne convient pas? Que dois-je faire?

Était-ce utile?

La solution

Pour faire des intégrations facile, je créerais une branches spécifiques trunk_to_custer et 1.1_to_customer puis question:

cd customer-workspace
p4 integ -b trunk_to_customer @change-number-at-which-1.1-was-branched
p4 resolve

peut-être un entre-deux présenter ici, puis

p4 integ -b 1.1_to_customer 
p4 resolve
p4 submit

Autres conseils

Lorsque vous essayez d'intégrer la révision 3 de votre 1.1 branche, Perforce ne vous dira qu'il est l'intégration des changements sur cette branche particulière - mais la révision 1 contient déjà des révisions du tronc 101 et 102. Lors de la fusion, Perforce identifiera la révision du tronc 100 comme l'ancêtre commun pour la résolution des conflits.

Il a été mon expérience que l'intégration que vous essayez de le faire devrait fonctionner. Voyez-vous des changements manquants dans votre source intégrée (qui ne peut être expliqué par la résolution inadéquate des conflits), ou vous cherchez juste à la sortie de p4 interchanges?

Je suggère fortement d'essayer de fusionner les changements du client dans le coffre. Il va continuer à être un cauchemar de maintenance lorsque quelques mois la ligne que le client souhaite passer à 2.0 + leurs modifications personnalisées.

Si vous ne voulez pas que le client change reflète dans votre projet principal, prenez le temps de restructurer le code afin que vous puissiez exposer le comportement souhaité du client avec un drapeau de construction ou d'un fichier de configuration de construction. Avoir les deux configurations de construction en cours d'exécution dans CI pour faire en sorte que les changements futurs ne se cassent pas la construction du client.

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