Pregunta

¿Cómo puedo hacer diff ignorar los archivos temporales como foo.c~?Hay un archivo de configuración que harán ignorando temporales el defecto?

De manera más general:¿cuál es la mejor manera de generar una "limpia" parche es un archivo comprimido?Hago esto rara vez es suficiente (la presentación de una corrección de errores para un proyecto OSS por correo electrónico) que siempre tengo problemas con eso...

EDITAR:OK, la respuesta corta es

diff -ruN -x *~ ...

Existe una mejor respuesta?E. g., este puede ir en un archivo de configuración?

¿Fue útil?

Solución

Esto no es estrictamente responder a su pregunta, pero se puede evitar el problema mediante la configuración de Emacs para utilizar un directorio específico para guardar los archivos de copia de seguridad en.Existen diferentes implementaciones para Emacs o XEmacs.

En 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)))

En 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)))

También puede eliminar a todos ellos con un simple comando find

    find . -name “*~” -delete

Tenga en cuenta que el asterisco y la tilde se comillas dobles para detener la concha de la expansión.

Por cierto, estos no son estrictamente temporal los archivos.Son una copia de seguridad de la versión anterior del archivo, de forma manual puede "deshacer" de su última edición en cualquier momento en el futuro.

Otros consejos

Usted puede crear una ignorar archivo, como este:

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

y, a continuación, ejecute diff con -X la opción, como este:

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

Solía haber una .diffignore archivo "cerrar" para el kernel de Linux (tal vez informal de un archivo), pero no pude encontrarlo.Por lo general, usted siga usando esta ignorar-archivo, añadiendo nuevos patrones que desea ignorar.

Puede crear un pequeño sunction/script, como:

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

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

Esta es sólo una forma de secuencia de comandos de esta.La forma más sencilla.Pero creo que tienes la idea.

Otra sugerencia es la configuración de emacs una copia de seguridad de directorios, por lo que su copia de seguridad de los archivos de ir siempre al mismo lugar, fuera de su trabajo dir!

El cartel ha enumerado este como el 'respuestas cortas':

diff -ruN -x *~ ...

pero la alimentación de este shell hará que el * * * * ser global antes de diff se invoca.

Esta es la mejor:

diff -r -x '*~' dir1 dir2

Omito la -u y -N de indicadores como los que son cuestiones de gusto y que no es relevante a la pregunta en cuestión.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top