2010-08-21 9 views
32

ho deciso di rinominare alcune directory nella mia casa/Hobby package Python (doc a docs, test a tests, util a utils) perché, ora che ho pensato di più, penso che i nuovi nomi siano più appropriati. Il mio pensiero generale ora è che se i contenitori prendono il nome dal loro contenuto, i loro nomi dovrebbero essere nomi plurali.Come rinominare una cartella con una Mercurial e continuano a tenere traccia di tutti i file cambia

Ora che sono pronto per il mio prossimo hg commit Mi chiedo come dire a Mercurial di queste modifiche al nome della directory. Sono nuovo del software RCS in generale e utilizzo Mercurial da un paio di mesi. Quando corro hg status mostra tutti i file in queste directory che vengono rimossi e aggiunti, quindi temo che se faccio solo uno hg addremove perderò tutta la cronologia delle modifiche per i file in queste directory o per lo meno la modifica la storia diventerà frammentata e non rintracciabile. Mi sono imbattuto nel comando hg rename, ma i documenti ne discutono solo l'uso per i singoli file, non per le directory.

Dopo ulteriori letture nella "Guida definitiva" di Bryan O'Sullivan, sembra che forse rename possa fare riferimento alle directory.

Così qui è quello che ho deciso di provare:

hg rename --after doc docs 
hg rename --after test tests 
hg rename --after util utils 
hg status 
hg addremove 

qualcuno può dirmi se questo è il metodo accettato e preferito per rinominare directory in Mercurial, e se non, come devo farlo.

risposta

38

Poiché hai già rinominato le directory, questo è perfettamente OK. (Ti avrebbe salvato un passaggio manuale se avessi permesso a Mercurial di rinominarli per te: hg rename doc docs, ecc. Invece di farlo da solo, lasciandolo a conoscenza di Mercurial).

Se non si dispone di altri file per il check-in, lo hg addremove è superfluo. Guardate nella produzione di hg stat e si dovrebbe vedere solo le linee che iniziano con 'R' (per doc/*, test/* e util/*) e 'A' (per docs/*, etc.)

Infine, non dimenticate di confermare le modifiche .

MODIFICA: Ho dimenticato ... utilizzare hg log --follow per tracciare le modifiche attraverso la rinomina.

+0

Grazie Niall. Ha funzionato perfettamente. –

15

Mercurial non ha alcun concetto di directory; tratta tutto (file e directory) come file. Inoltre, di solito non rinominare mai file o directory manualmente; Mi basta usare

hg rinominare vecchio nome nuovo-nome

ti suggerisco di fare anche questo.

Mercurial offre una funzionalità di rintracciamento del nome, il che significa che Mercurial può tracciare la cronologia completa di un file che è stato rinominato. Se la si rinomina manualmente, non è possibile.

Tuttavia, poiché le avete già rinominate manualmente, è necessario utilizzare l'argomento --follow insieme a hg log per tenere traccia delle modifiche apportate ai file attraverso la cronologia.

Personalmente vorrei andare con hg rename e dovrebbe essere il metodo preferito.

+0

Prenderò il tuo consiglio e lascerò hg effettuare eventuali rinomina in futuro. Grazie per la spiegazione e i suggerimenti. Correzione –

+0

: Mercurial non considera le directory come file; li ignora. Non è possibile tenere traccia di una directory. – undefined

9

Uno dei motivi per usare - dopo averlo rinominato con hg è se si sta utilizzando uno strumento di refactoring che fa più di una semplice rinomina, ad es. corregge anche i riferimenti.

+0

Questo è un grosso problema, se non si utilizza un plugin hg per Visual Studio. –

Problemi correlati