2013-02-19 7 views
5

Desidero ottenere l'ultimo elenco delle modifiche nel depot per la specifica del client corrente. Questo sarebbe effettivamente il cambiamento che verrebbe sincronizzato se ho fatto un p4 sync nel mio spazio di lavoro.Come ottenere l'ultimo elenco delle modifiche di Perforce nel depot per le specifiche client correnti

Ho provato a fare p4 changes -s submitted -m1 -c [client-name], ma restituisce la modifica più recente inviata tramite il mio client.

L'esecuzione di p4 changes -s submitted -m1 //depot/path/... funzionerà, ma non desidero dover interrogare le specifiche del client per capire quale sia il percorso del depot. Inoltre, se ci fossero più di una mappatura, non saprei come dare un senso a ciò.

Sembra che ci debba essere un modo semplice per fare ciò che mi manca.

EDIT

ho dovuto interrogare le specifiche del cliente, ma come sottolineato nella risposta accettato, ho potuto utilizzare la radice client specifiche come il percorso del file e non aveva bisogno di guardare il panorama mappature.

soluzione finale utilizzando P4Python:

# Get client 
clientspec = p4.fetch_client() 
root = clientspec["Root"] 

# Get latest changenum in client mapping 
changes = p4.run("changes", "-s", "submitted", "-m1", root + "/...") 
changenum = changes[0]['change'] 
+0

'P4 changes -s submitted -m 1' (senza percorso) non è adatto? – jamesdlin

+1

@jamesdlin - No, questo fornisce l'elenco delle modifiche più recente sul server, che potrebbe essere un percorso di depot che non ho mappato alle specifiche del mio cliente. – dwikle

risposta

1

penso che sta andando ad avere per interrogare lo spec cliente di trovare la sua radice locale. Se non è necessario preoccuparsi di AltRoots, allora questo potrebbe essere:

p4 changes -s submitted -m 1 "$(p4 client -o | grep "^Root:" | cut -f 2)/..." 

in bash. L'utilizzo della root del client locale anziché del percorso del depot evita il problema con più mapping.

Problemi correlati