Domanda

Ho la seguente situazione di rami in un repository Perforce: c'è un “tronco” mainline e due rami di rilascio “1.0” e “1.1”. Un ramo “cliente” con cambiamenti cliente specifici è stata ramificato il ramo 1.0. Ora il cliente vuole passare alla versione 1.1. Come posso unire il ramo 1.1 nel ramo cliente? I cambiamenti clienti specifici devono rimanere “in primo piano” di 1,1.

Ecco un diagramma per un file interessato:

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

La versione corrente del file sto guardando è la revisione 3 sul ramo cliente.

Se scelgo di integrare ramo “1.1” con l'obiettivo “cliente” mi sarei aspettato che l'antenato comune di entrambi si trova (revisione 100 sulla linea principale) e tutte le revisioni da lì che portano alla punta del ramo 1.1 vengono uniti (quelli tra parentesi).

Invece Perforce offerte solo con la versione di unione da 1 a 3 del ramo 1.1, che non riesce perché manca le modifiche necessarie che è accaduto sulla linea principale prima.

Come posso convincere Perforce per farlo senza dover guardare ogni file manualmente e selezionando le revisioni per unire? Forse la strategia di ramificazione non è adatto? Che altro devo fare?

È stato utile?

Soluzione

Per rendere integrazioni facile, vorrei creare una specifica rami trunk_to_custer e 1.1_to_customer e quindi problema:

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

forse una via di mezzo presentare qui, e poi

p4 integ -b 1.1_to_customer 
p4 resolve
p4 submit

Altri suggerimenti

Quando si tenta di integrare la revisione 3 dal ramo 1.1, Perforce solo vi dirà che è l'integrazione di cambiamenti su quel particolare ramo - ma la revisione 1 contiene già revisioni tronco 101 e 102. Quando la fusione, Perforce identificherà tronco di revisione 100 come l'antenato comune per la risoluzione dei conflitti.

E 'stata la mia esperienza che l'integrazione si sta cercando di fare dovrebbe funzionare. Stai vedendo le modifiche mancanti nell'origine integrato (che non può essere spiegato con la risoluzione dei conflitti non corretta), o stai solo cercando all'uscita del p4 interchanges?

mi piacerebbe consigliamo vivamente cercando di unire le modifiche del cliente nel bagagliaio. E 'intenzione di continuare ad essere un incubo di manutenzione quando un paio di mesi su tutta la linea il cliente vuole effettuare l'aggiornamento a 2.0 + le loro modifiche personalizzate.

Se non si desidera che il cliente cambia riflette nel progetto principale, prendere il tempo di ristrutturare il codice in modo che è possibile esporre comportamento desiderato dal cliente con una bandiera di compilazione o un file di configurazione di generazione. Avere entrambe le configurazioni di build in esecuzione in CI per assicurare che le future modifiche non rompere costruzione del cliente.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top