Domanda

Versione corta:

Dopo la ramificazione in P4, come posso scoprire l'elenco modifiche "fonte" della filiale?

Versione lunga:

dire Let ho un ramo principale del mio progetto a

//project/main/...

L'ultimo elenco modifiche presentato qui è @ 123, quando decido di creare un ramo per il rilascio 1.0 in

//project/1.0/...

Da P4V, viene creato un nuovo elenco modifiche (ad esempio @ 130), risolto e presentato.

Dalla CLI, sarebbe simile a questa:

p4 integrate -c 123 -o //project/main/... //project/1.0/...
p4 submit

In seguito, guardo le changelists sotto //project/1.0, e vedere l'elenco modifiche @ 130 contenente un sacco di file ramificate. Come posso trovare l'elenco modifiche n. che questo è stato originariamente ramificata da (vale a dire, @ 123)?

È stato utile?

Soluzione

p4 changes visualizzerà un elenco di changelists presentate, eventualmente filtrato ad un percorso specifico.

p4 changes //project/main/...
Change 123 ... 'Very last change.'
Change 122 ... 'Next-to-last change.'
Change 100 ... 'Only two changes to go...'
...

Nessuna sorpresa, ma, come hai trovato, p4 changes è meno utile quando si integrano tutti questi cambiamenti in una singola modifica:

p4 changes //project/1.0/...
Change 130 ... 'Integrated everything from main.'

Il trucco è quello di utilizzare l'opzione -i , che include eventuali changelists integrati nei file specificati .

p4 changes -i //project/1.0/...
Change 130 ... 'Integrated everything from main.'
Change 123 ... 'Very last change.'
Change 122 ... 'Next-to-last change.'
Change 100 ... 'Only two changes to go...'
...

Per ottenere esattamente quello che vuoi (123) è necessario scrivere uno script che filtra l'output di p4 changes -i //project/1.0/... di cancellare qualunque cambiamento elencati per p4 changes //project/1.0/... (e poi prendere la modifica più recente rimanente).

(Quando l'esplorazione, ho spesso anche trovare l'opzione -m max utile. Questo limiti modifiche al 'massimo' più recente . Questo aiuta l'output non scorre fuori dallo schermo quando ci sono molti cambiamenti.)

Altri suggerimenti

Non so di qualsiasi comando semplice che esegue ciò che si vorrebbe fare. Se siete disposti a sceneggiatura un po 'e il comando non ha di eseguire velocemente si potrebbe forse tentare di scrittura qualcosa di simile a quanto segue per tutti file ramificati:

  1. Trova il file di origine / revisione di un file di destinazione.

      

    p4 filelog // progetto / 1.1 / foo.bar # 1
      //project/1.1/foo.bar
      ... # 1 cambio 6416 ramo su 2009/07/10 da foo @ bar (testo) 'uscita 1.1'
      ... ... ramo da // progetto / main / foo.bar 1 #, 2 #

  2. Scarica l'elenco cambiamento a cui è stata presentata il file di origine / revisione.

      

    p4 fstat // progetto / main / foo.bar # 2
      ... depotFile //project/main/foo.bar
      ... headAction modificare
      ... headType testo
      ... headTime 1201771167
      ... headRev 2
      ... headChange 5353
      ... headModTime 1201770971

  3. Ripetere l'operazione per tutti i file nel ramo e selezionare la più alta variazione no (headChange sopra), che dovrebbe essere l'ultima modifica presentata al genitore prima di ramificazione per quel file specifico. Si potrebbe ottenere un elenco completo di tutti i file ramificati usando per esempio "file p4 //project/1.0 /...# 1".

(o forse prendere la via più facile e chiedere supporto Perforce)

Dal momento che nessuna delle risposte finora fornire il codice per trovare la sorgente o radice elenco modifiche di un ramo, ho pensato di fornire un one-liner di fare proprio questo. Questo approccio si basa su @ suggerimento di CWAN, e stamperà l'elenco modifiche "padre", da cui è stato creato il ramo. L'argomento FIRST_BRANCH_CL deve essere sostituito con il changelist creazione ramo (cioè il primo changelist presentato al nuovo ramo). Come esempio concreto, sostituendo FIRST_BRANCH_CL con 130 dalla domanda originale, questo one-liner uscita 123.

p4 describe -s FIRST_BRANCH_CL | perl -lne 'if(/^\.\.\. (.+#[0-9]+) .+$/) {print quotemeta $1}' | xargs p4 filelog -m1 | perl -lne 'if(/^\.\.\. \.\.\. branch from (.+#[0-9]+)/) {print quotemeta $1}' | xargs p4 fstat | perl -lne 'if(/^\.\.\. headChange (\d+)/) {$MaxCL=$1 if($1 > $MaxCL)} END {print $MaxCL}'

Risposta breve :

utilizzare il grafico di revisione in P4V è passo indietro nel tempo e indagare la storia di integrazione. sul sito web Perforce .

Ho usato con successo il grafico di revisione sui rami con migliaia di file per tenere traccia quando un cambiamento particolare è stato integrato in un ramo. È per questo che ho consigliato e collegati a un video di formazione, come la maggior parte delle persone sotto-stima, perché non sanno come usarlo.

Risposta lunga :

... [Removed]

UPDATE: Come mostra il grafico di revisione è apparentemente irrealizzabile, si può forse risolvere questo utilizzando un processo / politica, vale a dire, quando si esegue la integrano, aggiungere una nota nella descrizione "ramificati @ CL 123 ". Abbiamo utilizzato questo approccio noi stessi, quando l'integrazione da un tronco di linee di rilascio.

Se si utilizza la scheda Cronologia in P4V che vi mostrerà tutti i changelists presentate contro un ramo, in modo da dare un'occhiata a questo per

//project/1.0/...

Una volta trovata la più antica changelist presentato, poi su uno qualsiasi dei file in quella elenco modifiche visualizzare il grafico di revisione per esso, questo vi mostrerà il ramo che il file (e il resto dei file) sono stati integrati da.

Vedrò se riesco a tornare con i comandi P4 per fare la stessa cosa.

Risposta Aggiornato: Credo che questo lavoro sarà. Prova questo:

p4 interchanges from_branch  to_branch

Questo mostrerà i cambiamenti non integrati dal vostro ramo principale al vostro ramo di release. Io credo che si possa utilizzare il numero changelist alto meno 1 per trovare il tuo elenco modifiche fonte. interchanges è una funzione non documentata Perforce CLI. Per saperne di più, tipo p4 help interchanges per saperne di più su questo comando.

Ancora una volta, ho che questo lavoro volontà. Ci possono essere alcuni casi particolari in cui non sarà così, ma è la mia ipotesi migliore a un problema difficile ed importante.

"p4 integrato" ha lavorato per me. Cercare "copia da" nella descrizione

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