2010-09-28 18 views
7

Desidero una soluzione rapida che non richieda la sincronizzazione forzata che inserirà una directory specificata nello stato del repository originale.Perforce sincronizzare rapidamente una directory in uno stato pulito

  • stessi file possono essere rimosse dal disco
  • stessi file possono essere aggiunti da disco
  • alcuni file possono essere modificati sul disco
  • alcuni file possono essere contrassegnati per la rimozione, aggiunte o modifiche in perforce

Tutto quello che voglio è essere sicuro che dopo aver eseguito il comando non avrò nessuno di questi.

p4 -f sync non è un'opzione, ho bisogno di una soluzione più veloce che minimizzi l'utilizzo delle reti.

Nel caso in cui qualcuno chieda, il proxy forzato è fuori discussione.

so che una soluzione parziale è:

p4 diff -sd -se //clientspec/dir/... | p4 -x - revert

Il problema è che questo non elimina i file aggiunti ai percorsi sopra che non sono in necessariamente - i file che voglio essere rimosso dal disco.

Inoltre, ho bisogno di una soluzione multi o multipiattaforma: deve funzionare su Windows, OS X e Linux.

risposta

0

Se si dispone di Unix/Linux, questo potrebbe funzionare.

In Perforce è possibile "Riconciliare Lavorare offline" attraverso P4V, come si è visto here o attraverso la linea di comando come visto here. già fate quest'ultimo come coperta nella sua interrogazione, come ripristinare i file modificati e cancellate. I file aggiunti sono più complicati. Il secondo link dovrebbe fare quanto segue.

find . -type f -print | p4 -x - add 
find . -type l -print | p4 -x - add 

per aggiungere file e link simbolici in Unix

La parte difficile è fisicamente rimuovendo i file che hai aggiunto. Questo non è carino, ma penso che funzionerebbe. p4 aperto | grep add | cut -f1 -d "#" | p4 -x- dove | cut -d -f3""

allora avete bisogno di fare un

p4 revert directory/... 

o fare qualcosa di simile a quello sopra durante la rimozione dei file.

0

Avevo bisogno di questo per un server di build con svn. Quello che ho fatto alla fine è stato:

  • Aggiornare l'area di lavoro
  • eliminare la vecchia “costruire cartella” se c'è una
  • Xcopy l'area di lavoro alla cartella “costruire”
  • fare la configurazione in la "cartella di compilazione"

In quel modo sapevo che non c'era niente per una vecchia struttura in giro.

2

Un altro frammento di Unix/Linux che dovrebbe rimuovere tutti i file che non sono mai stati monitorati da per forza:

find . -type f | p4 -x- files 2>&1 | sed -n -e 's/ - no such file(s).//p' | xargs -d '\n' rm

+0

Quanto sopra cancellerà tutti i file che sono aperti per aggiungere ... – John

5

Perforce ha aggiunto un nuovo comando "P4 pulite" nel 2014,1 che fa esattamente quello che stai cercando per, ripristinando lo spazio di lavoro al suo stato #have:

  • Nuove non i file in Perforce verranno eliminati
  • file modificati al di fuori del controllo di Perforce sarà RESE t
  • i file eliminati al di fuori del controllo di Perforce verrà ripristinato

Il comando è un alias per "p4 conciliare w" e utilizza la hashsum dei file per determinare il loro stato nel vostro spazio di lavoro.

Problemi correlati