Domanda

È possibile unire un ramo che non sia un genitore o un figlio diretto in TFS?Sospetto che la risposta sia no poiché questo è ciò che ho sperimentato durante l'utilizzo.Tuttavia, sembra che in certi momenti sarebbe davvero utile quando ci sono diverse funzionalità su cui si sta lavorando che potrebbero avere cicli di approvazione diversi (ad es.caratterizzarne uno Potrebbe essere approvato prima della seconda caratteristica).Ciò diventa estremamente difficile quando abbiamo rami di produzione in cui dobbiamo unire alcune funzionalità in un ramo precedente in modo da poter rilasciare prima la successiva versione completa.

La nostra attuale strategia di ramificazione è quella di svilupparsi nel trunk (o mainline come lo chiamiamo) e creare un ramo per stabilizzarlo e rilasciarlo in produzione.Questo ramo può quindi essere utilizzato per creare hotfix e altre cose mentre la linea principale può divergere per le funzionalità future.

Quali tecniche possono essere utilizzate altrimenti per mitigare uno scenario come quello sopra descritto?

È stato utile?

Soluzione

Sono d'accordo con Harpreet sul fatto che potresti voler rivisitare il modo in cui hai impostato la struttura di ramificazione.Tuttavia, se vuoi davvero eseguire questo tipo di fusione, puoi farlo attraverso qualcosa chiamato fusione senza fondamento.Viene eseguito dal prompt dei comandi tfs,

Tf merge /baseless <<source path>> <<target path>> /recursive

È possibile trovare ulteriori informazioni sulle unioni senza base Qui

Inoltre ho trovato questo documento prezioso durante la costruzione della nostra struttura di ramificazione tfsLinee guida sulla diramazione di Microsoft Team Foundation Server

Altri suggerimenti

tf.exe merge /recursive /baseless $/TeamProject/SourceBranch $/TeamProject/TargetBranch

Potresti voler rivisitare la tua strategia di ramificazione.Come si ottengono i rami di produzione?Stai unendo tutto il codice dai rami di sviluppo, dai test di regressione e quindi creando un ramo di produzione per le correzioni?Oppure stai sviluppando sul tronco e poi creando rami di produzione da stabilizzare e da cui liberarti?Il secondo modo crea problemi del tipo che stai descrivendo.Se stai utilizzando il primo approccio, il trunk dovrebbe essere solo per cose che sono state costruite su rami testati e poi uniti, ti imbatterai in questo molto meno spesso.Con questo approccio, se il problema persiste, potrebbe essere perché il tuo impegno di sviluppo è molto ampio e potresti aver bisogno di una strategia di ramificazione relativamente complessa con livelli di ramificazione e promozione.

Per quanto ne so, puoi farlo purché i rami siano stati creati dalla stessa cartella originale.

  • tronco/
  • Filiali/ -/Feature1 (ramificato dal trunk) -/Feature2 (ramificato dal trunk)

Se lo fai, dovresti essere in grado di unire anche tra feature1 e feature2.

Anche se la mia esperienza di ramificazione/fusione con TFS mi fa desiderare di più.Vorrei che avessimo solo SVN.

Sì, puoi eseguire un'unione senza fondamento, ma solo dalla riga di comando (tf.exe).

TFS ti consentirà di unirti a un ramo che non è genitore/figlio: queste sono chiamate unioni senza base.Vedi questi link:

Da MSDN

Dal team TFS tramite CodePlex

In genere apportiamo modifiche importanti o destabilizzanti su un ramo di sviluppo.Se si avvicina una release importante di uno dei nostri prodotti, quasi tutte le modifiche verranno apportate su un ramo.

Sono tutt'altro che un esperto di TFS, ma penso che sia possibile unire i fratelli e penso che non sia un'unione infondata.

Abbiamo ramificato il nostro ramo principale (nome del ramo "main") per una funzionalità (nome del ramo "feature"), quindi avevo bisogno di parte del lavoro in un ramo che fosse anch'esso ramificato dal ramo principale (nome del ramo "dev").Considererei i rami feature e dev come fratelli poiché entrambi provengono dallo stesso genitore.Ho unito la funzionalità a dev e tutti i file (14000) sono stati contrassegnati come unione, alcuni sono stati contrassegnati come unione, modifica.Non potevo annullare (Visual Studio si bloccava), quindi ho accettato l'unione.Quindi ho unito dev a main, quindi ho portato main a feature e ancora 14000 file sono stati contrassegnati per l'unione.Ero davvero sconvolto e temevo che tutto ciò continuasse.

A questo punto abbiamo realizzato un progetto di prova.Impostiamo lo sviluppo principale, quindi ramificato e le funzionalità da principale.Abbiamo ripetuto i passaggi precedenti con gli stessi risultati.Una volta completata l'unione da principale a funzionalità, tutte le unioni future mostravano solo i file modificati.

Dopo il nostro piccolo test ho completato l'unione da principale a funzionalità.E proprio come nel test, le nostre unioni ora mostrano solo i file modificati.Possiamo andare da dev a feature, da feature a main, da main a dev, ecc.

Ho notato che durante la ramificazione tutte le date dei file sono state modificate.Forse questo è un problema?

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