Domanda

Come faccio diff ignora i file temporanei come foo.c~?Esiste un file di configurazione che consentirà di ignorare i temporanei come impostazione predefinita?

Più generalmente:qual è il modo migliore per generare una patch "pulita" da un tarball?Lo faccio abbastanza raramente (inviando una correzione di bug a un progetto OSS tramite e-mail) che ho sempre difficoltà a farlo...

MODIFICARE:OK, la risposta breve è

diff -ruN -x *~ ...

Esiste una risposta migliore?Ad esempio, può andare in un file di configurazione?

È stato utile?

Soluzione

Questo non risponde esattamente alla tua domanda, ma puoi evitare il problema configurando Emacs per utilizzare una directory specifica in cui conservare i file di backup.Esistono diverse implementazioni per Emacs o XEmacs.

In GNU Emacs

    (defvar user-temporary-file-directory
      (concat temporary-file-directory user-login-name "/"))
    (make-directory user-temporary-file-directory t)
    (setq backup-by-copying t)
    (setq backup-directory-alist
      `(("." . ,user-temporary-file-directory)
        (,tramp-file-name-regexp nil)))
    (setq auto-save-list-file-prefix
      (concat user-temporary-file-directory ".auto-saves-"))
    (setq auto-save-file-name-transforms
      `((".*" ,user-temporary-file-directory t)))

In XEmacs

    (require 'auto-save) 
    (require 'backup-dir) 

    (defvar user-temporary-file-directory
      (concat (temp-directory) "/" (user-login-name)))
    (make-directory user-temporary-file-directory t)
    (setq backup-by-copying t)
    (setq auto-save-directory user-temporary-file-directory)
    (setq auto-save-list-file-prefix 
         (concat user-temporary-file-directory ".auto-saves-"))
    (setq bkup-backup-directory-info
      `((t ,user-temporary-file-directory full-path)))

Puoi anche rimuoverli tutti con un semplice comando Trova

    find . -name “*~” -delete

Tieni presente che l'asterisco e la tilde sono tra virgolette doppie per impedire alla shell di espanderli.

A proposito, questi non sono strettamente temporaneo File.Sono un backup della versione precedente del file, quindi puoi "annullare" manualmente l'ultima modifica in qualsiasi momento in futuro.

Altri suggerimenti

Puoi creare un file da ignorare, in questo modo:

core.*
*~
*.o
*.a
*.so
<more file patterns you want to skip>

e poi corri diff con -X opzione, in questo modo:

diff -X ignore-file <other diff options you use/need> path1 path2

C'era un file .diffignore "vicino" al kernel Linux (forse un file informale), ma non sono più riuscito a trovarlo.Di solito continui a utilizzare questo file da ignorare, aggiungendo semplicemente nuovi modelli che desideri ignorare.

Puoi creare una piccola suzione/script, come:

#!/bin/bash
olddir="/tmp/old"
newdir="/tmp/new"

pushd $newdir
for files in $(find . -name \*.c)
do
  diff $olddir/$file $newdir/$file
done
popd

Questo è solo un modo per scriverlo.Il modo semplice.Ma penso che tu abbia capito l'idea.

Un altro suggerimento è configurare in emacs una directory di backup, in modo che i file di backup vadano sempre nello stesso posto, fuori dalla directory di lavoro!

Il poster ha elencato questa come la "risposta breve":

diff -ruN -x *~ ...

ma alimentarlo con la shell causerà il glob di * prima che venga invocato diff.

Questo è meglio:

diff -r -x '*~' dir1 dir2

Ometto i flag -u e -N poiché sono questioni di gusto e non rilevanti per la domanda in questione.

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