Come puoi determinare tutti i file che sono cambiati in un determinato changeset?
Non sto cercando un diff in questo caso, solo un elenco di aggiungi / rimuovi / modifiche.
hg log -vprX fa un elenco di differenze ma voglio solo i file.
Come puoi determinare tutti i file che sono cambiati in un determinato changeset?
Non sto cercando un diff in questo caso, solo un elenco di aggiungi / rimuovi / modifiche.
hg log -vprX fa un elenco di differenze ma voglio solo i file.
Risposte:
Se vuoi elencare solo i file che sono cambiati allora dovresti usare "comando di stato" Quanto segue elencherà le modifiche ai file nella revisione REV
hg status --change REV
-n/ --no-status.
hg status --no-status --change REV
hg status --rev REV~1:REVche facevo io.
hg status --change .
Basta rimuovere pdal tuo hg log -vprmostrerà l'elenco dei file. -psignifica mostra patch. È inoltre possibile utilizzare un modello per formattare l'output secondo i propri gusti.
hg status --change .funzionato meglio e ha fornito un prefisso di azione del file (A \ M \ D ecc.) E un percorso relativo migliore
So che la domanda è per un singolo changeset, ma se desideri che tutti i file vengano modificati per un intervallo di changeset, puoi farlo
hg status --rev 1 --rev 10 -m
hg log -r BEGIN:END --template "{files}\n"quelli che @ geoffrey-zheng e @ton hanno scritto due anni fa !!!
hg status --rev BEGIN --rev ENDè: 1. molto più facile da ricordare rispetto a hg log -r BEGIN:END --template "{files}\n"; 2. stampa i file in righe separate senza utilizzare sed(@Eric Lawler) o join()(@Foxichu); 3. senza -mflag, mostra non solo i file modificati, ma anche aggiunti e rimossi (anche qui si applica la simpatica colorazione standard); 4. ci sono -ae -rflag che consentono diversi filtri; 5. se uno non vuole il prefisso di stato, c'è -nun'opzione, che lo sopprime.
Ho trovato questa domanda tramite Google per un concetto simile. Per mostrare tutti i file che sono cambiati attraverso una serie di changeset, è facile come:
hg log -r [start rev]:[end rev] --template "{file_mods}{file_adds}\n" | sed -e 's/ /\n/g' | sort -d | uniq
hg log -r [start rev]:[end rev] --template "{file_mods}{file_adds}\n"ti mostrerà un elenco di ogni file modificato o aggiunto in ogni changeset, da [start rev] a [end rev], con i file di ogni changeset su una nuova riga. Scambia {file_mods}{file_adds}con {files}per mostrare tutti i file modificati, aggiunti o rimossi.sed -e 's/ /\n/g' dividerà tutti i file da mostrare su righe separate esort ordinerà l'elenco per te in modo da poter filtrare l'elenco con uniquniq filtrerà l'elenco per rimuovere i duplicati, i file modificati in più di una revisione.--templatesoluzione basata su una soluzione senza queste carenze potrebbe essere costruita utilizzando join()come suggerito da @Foxichu.
So che questa domanda è una vecchia domanda e sono sorpreso che nessuno abbia appena offerto un codice modificato da OP. Ho ottenuto un elenco di file modificati / aggiunti / rimossi (non etichettati, il che è però) semplicemente eseguendo hg log -v. O quello di cui avevo effettivamente bisogno hg log -v -l5per vedere i file che sono stati modificati / aggiunti / rimossi negli ultimi 5 commit (compresi quelli che non ho ancora inserito nel repository).
Se sei come la maggior parte dei negozi, utilizzi un sistema di biglietteria per tenere traccia delle modifiche. Se conosci il numero del ticket e desideri trovare tutti i commit associati a quel ticket (supponendo che tu includa il numero del ticket nel messaggio di commit), puoi usare:
hg log -k TICKET_NUMBER
Questo mostra tutte le revisioni associate al ticket. Tuttavia, non elenca i file. È possibile utilizzare una delle risposte sopra per ottenere l'elenco dei file associati alle revisioni.
Per renderlo più semplice, combinando le informazioni delle risposte precedenti, potresti fare quanto segue per cercare i commit, inclusi i file modificati:
hg log -vk TICKET_NUMBER