Come rimuovere automaticamente tutti .orig file Mercurial albero di lavoro?
Domanda
Durante unioni mercurial foglie .orig file per ogni file irrisolti.Ma dopo manualmente la risoluzione dei problemi e la marcatura di un file corretto non elimina il .file orig.Può essere rimosso automaticamente da qualche comando?
Io lavoro su Mac, così posso usare qualcosa come:
find . -iname '*.orig' -exec rm '{}' ';'
e alias o qualcosa del genere, ma io preferisco usare qualcosa come hg di pulitura...
AGGIORNAMENTO:
Da qualche tempo ormai, Spurgo estensione viene fornito in bundle con Mercurial e risolve questo problema per bene.
Soluzione
Personalmente, io uso
$ rm **/*.orig
se mi stanco dei .orig
file. Questo funziona in Zsh ed in Bash 4 dopo aver eseguito shopt -s globstar
.
Ma se si utilizza un altro shell o desidera una soluzione integrata, allora forse vi piacerà il estensione spurgo (link aggiornato 2016/08/25). Che consente di rimuovere tutti i file non monitorate con
$ hg purge
È possibile rimuovere tutti i file non monitorate e ignorato con
$ hg purge --all
Un vantaggio nell'uso hg purge
è che questo sarà anche directory di pulizia che diventano vuote dopo la rimozione dei file. La riga di comando rm
sarà solo lasciare le directory vuote dietro.
Altri suggerimenti
btw. find
utility ha un'azione -delete
quindi è possibile digitare solo:
find <path-to-files> -name '*.orig' -delete
Se si desidera solo per eliminare i file .orig, e vi capita di essere su un computer Windows, il seguente sembra funzionare bene:
D:\workspace>hg purge -I **/*.orig --all
Questo cancellerà tutti i file non monitorate che terminano in .orig, ma non cancellerà altri file non monitorate, come le altre risposte sarebbero.
È possibile verificare questo prima di eseguirlo mettendo il --print
bandiera pure.
Di seguito rimuoverà .orig file nella gerarchia di tutta la copia di lavoro e funziona anche per i percorsi contenenti spazi:
find . -name *.orig | while read -d $'\n' file; do rm -v "$file"; done;
Io uso un alias nel mio .bash_profile:
alias clearorig='echo "Removing .orig files..."; find . -name *.orig | \
while read -d $'\''\n'\'' file; do rm -v "$file"; done;'
si dovrebbe usare il aggiornamento gancio
aggiornamento:Questo viene eseguito dopo un aggiornamento o unire la directory di lavoro è finito
Ho postato questa risposta prima . Ma questo è il posto giusto per questa risposta.
Ho fatto un file questo lotto me stesso.
IF "%1%" == "d" (
del /s *.orig
del /s *.rej
) ELSE (
del /s /p *.rej
del /s /p *.orig
)
Guida: Salva questo contenuto come orig.bat
- Esegui
orig d
per eliminare tutti i scarti e orig file in una volta senza la conferma - Esegui
orig
per eliminare i file con conferma [meccanismo di sicurezza]
Spero che questo è utile.
Io personalmente uso il seguente dalla radice del pronti contro termine:
hg purge -p -I **/*.orig | xargs rm -f
E 'un po' meglio che usare solo 'hg purge' o 'hg spurgo --all', perché è possibile filtrare i tipi di file specifici che si desidera includere.
Per una spiegazione:
- L'argomento -p stampa l'elenco dei file da eliminare
- L'argomento whitelist -I filtra i file da includere
- La lista risultante viene reindirizzato al xargs ed eseguito con il comando rm -f
sto lavorando in PowerShell e non vedere la risposta qui:
# NOTE: be in the root of your repository
# fetch all .orig files recursively
$orig = (dir *.orig -recurse) ;
# remove each .orig file
foreach ($item in $orig) { del $($item.FullName) ; }
# afterwards I make sure to remove the references to the .orig files in the repo
# then commit & push
hg addremove ;
hg commit -m "remove .orig" ;
hg push ;
Questo non è un modo automatico di rimozione di file in più, ma è abbastanza semplice da eseguire manualmente.
/ file hg st
possono mostrare sconosciuti o non monitorati. È possibile utilizzare questa uscita come argomento per il comando del sistema rm
. Ecco un esempio reale Ho appena eseguito:
$ # SHOW ONLY THE CRUFT
$ hg status --unknown
? config/settings.rb.orig
? lib/helpers.rb.orig
? routes/main.rb.orig
$ # THE CRUFT WITHOUT THE "?" PREFIX
$ hg status --unknown --no-status
config/settings.rb.orig
lib/helpers.rb.orig
routes/main.rb.orig
$ # SAFELY REMOVE ALL CRUFT
$ rm -- `hg st -un`
Se avete directory vuote lasciato alle spalle, il -r
e -d
bandiere per hg status --ignored
potrebbe aiutare.
Come un bonus , <=> potrebbero essere utilizzati per la pulizia di tutti quei file temporanei ignorati così come i file di swap dal vostro editor (ad esempio, Vim).
Un comando che uso su Linux per ripulire, salva la necessità di fare una ricerca fresca con find.
Queste necessità di essere eseguito dalla directory principale del progetto di Mercurial
hg status | grep ".orig" | cut -d ' ' -f 2- | xargs rm -f
Se si desidera cancellare tutti i file sconosciuti.
hg status | cut -d ' ' -f 2- | xargs rm -f
Non mi piace la risposta scelta. Non rimosso tutto a tutti i livelli del progetto. Io uso questo:
for f in `find . | grep .orig$`; do rm "$f"; done
Funziona sia su Mac che * nix