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.

È stato utile?

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

  1. Esegui orig d per eliminare tutti i scarti e orig file in una volta senza la conferma
  2. 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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top