Domanda

Fino a poco tempo abbiamo usato SVN per tutti i progetti di nostro studio web, e non v'è una caratteristica molto comoda presente in diversi clienti come sovversiva e TortoiseSVN in grado di estrarre tutti i file che sono stati modificati in una determinata versione.

C'è un modo per farlo in Mercurial? Non mi importa se è fatto tramite una GUI o una riga di comando, è solo molto conveniente avere un insieme di file che sono stati modificati in un certo changeset.

P.S. Devo aver messo sbagliato la prima volta. Ho bisogno di più di un semplice elenco di file, sarebbe bello avere tutti i file esportati a qualche altra cartella.

È stato utile?

Soluzione

Sulla risposta di Jerome questo ti porterà i copie dei file che hanno cambiato nella revisione 4:

hg archive --type files --rev 4 -I $(hg log -r 4 --template {files} | sed 's/ / -I /g') ~/changedfiles

Che mette tutti i file che hanno cambiato in revisione quattro in una directory di nome appena creato changedfiles nella vostra directory home.

Se si cambia in:

hg archive --type zip --rev 4 -I $(hg log -r 4 --template {files} | sed 's/ / -I /g') ~/changedfiles.zip

poi si fanno vedere in un archivio zip.

E 'interessante notare che che funziona solo se si dispone di spazi nei nomi dei file. Se hai fatto che cantonata allora avremo bisogno di usare hg status --print0 -r revision -r parent-of-revision invece, ma si spera che non è necessario.

Si noti inoltre che il numero di revisione, '4' nel nostro esempio, si presenta due volte. Il tutto potrebbe molto facilmente essere avvolto in uno script di shell, e che sarebbe stato parametrizzato in modo che non è necessario ricordarsi di cambiarla in entrambi i luoghi.

Altri suggerimenti

Questo vi dà l'elenco dei file modificati nella revisione 4:

hg log -r 4 --template {files}

Aggiornamento: Se desideri avere un file per ogni linea, è possibile utilizzare lo stile descritto nel libro Hg .

A seconda del Ned, ci sono due comandi:

  1. Per ottenere i cambiamenti associati con una particolare revisione, è possibile utilizzare hg export:

    hg export -r 23
    

Questo genererà un diff di tutte le modifiche (in realtà una patch formattato, pronto per essere applicato)

  1. Per ottenere il nome di tutti i file che sono stati colpiti, è possibile utilizzare hg log:

    hg log -r 23 -v
    

Questo stamperà il meta-informazioni per la revisione, insieme ai nomi dei file che sono stati colpiti.

uscite Questo comando nomi di tutti i file modificati in una revisione specificato:

hg export revision_num | grep ^diff | cut -f 6 -d ' '
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top