2012-02-16 7 views
22

Mi chiedo se c'è un modo per spostare un elenco delle modifiche che è stato creato modificando su/main/a un ramo/dev/ramo?Perforce: sposta un elenco di modifiche memorizzato da un elemento principale all'altro?

Ho sei di questi elenchi di modifiche con molti file. Ho archiviato tutti i file e vorrei trasferirli nella filiale per continuare a lavorare lì. Preferirei farlo direttamente in P4V, se possibile.

Sto utilizzando P4V 2011.1 con il server P4 2010.2.

+0

questione connessa: http://stackoverflow.com/questions/300160/can-i-integrate-checked-out-files-into- a-diverso-ramo-on-perforce. – gdw2

risposta

1

Credo che sia possibile fare clic con il tasto destro su un file modificato e scegliere Rename/Move....

Se ciò non funziona, probabilmente dovrai usare la riga di comando e fare p4 move -f old_file new_file e spostarti su un altro ramo.

Nota: per quello che vale, questo funziona per i rami ma non per i flussi.

+1

Sfortunatamente, quando provo a spostare un file sul ramo con questo metodo, viene visualizzato un errore "esiste già nel depot". –

+0

@MartinSchulze, è quello che temevo. Sulla riga di comando è qui che entra in gioco '-f', ma non sappiamo se c'è un modo per farlo in p4v. – Chance

0

Non ho provato io stesso, ma posso immaginare che questo dovrebbe essere possibile:

  1. modificare il client a un'area di lavoro che contiene le mappature per la filiale di destinazione
  2. Selezionare l'elenco modifiche in sospeso e si unshelve (oppure chiamare p4 unshelve -s <number> dalla riga di comando

dal manuale p4:

A successful unshelve operation places the shelved files on the user's 
workspace with the same open action and pending integration history as 
if it had originated from that user and client. 
+2

Sfortunatamente i file accantonati sono memorizzati su percorsi di depot, non su percorsi di lavoro. Quindi, anche se si passa a un nuovo spazio di lavoro con un ramo diverso, quando si elimina, P4 tenta di estrarre i file rispetto a main. –

-1
  1. presenta sul /main/
  2. integrare l'elenco modifiche alla /dev/branch/
  3. rollback o backout l'elenco modifiche sulla /main/

Ciò consente di risolvere i conflitti, se ce ne sono. Lo svantaggio è il retrocedere dell'elenco di modifiche su /main/ che non è bello.

+0

Se si ripristina la modifica su main, non invertirà la cronologia di integrazione? Vale a dire, ci si aspetterebbe che ci siano cambiamenti non integrati sul ramo che non sono ancora in main, ma dal punto di vista di Perforce, ci sono cambiamenti non integrati sul main che non sono ancora nel ramo. –

+0

Ho dato un -1 a causa del motivo sopra. In realtà ho provato questo e può portare a comportamenti imprevisti. Quando ci si integra di nuovo a main le modifiche non saranno lì. – Ykok

18

A partire da Perforce 2013.1, è possibile accantonare un file in un ramo e sgombrarlo in un altro, utilizzando una specifica di ramo o flusso come mappatura.

Qui è the documentation che descrive le nuove opzioni -b e -S.

+0

Puoi portare ed esempio su come usare -b? La documentazione dice solo use -b flag! Ho provato diverse varianti e non funziona, dicendo branch sconosciuto "/ dev/branch" – Shervin

+2

Trovato. Per la cronaca, -b dovrebbe essere assegnata la mappatura delle ramificazioni dal ramo accantonato al ramo in cui vogliamo che l'elenco delle modifiche non venga rimosso. Ecco come creare una mappatura: http://www.perforce.com/perforce/doc.current/manuals/p4v/Managing_branch_specifications.html – Shervin

+0

@Shervin dead link :-( – user234461

0

È inoltre possibile utilizzare "p4 move -f/main/.../dev/branch/..." per ottenere ciò.

  1. assicurarsi che gli unici file modificabili presenti in/main/... siano quelli che si desidera spostare. Chiudi e ripristina i file in qualsiasi altro elenco di modifiche
  2. riga di comando: "p4 move -f/main/.../dev/branch/..."
  3. i file nel changeset sono ora in/dev/branch contrassegnati come richiede determinazione
  4. Resolve ogni file proprio come si farebbe un conflitto ordinario
Problemi correlati