Frage

Wie mache ich diff ignorieren Sie temporäre Dateien wie foo.c~?Gibt es eine Konfigurationsdatei, die machen das ignorieren Provisorien der Standard?

Allgemein:was ist der beste Weg zur Erzeugung von "clean" - patch aus ein tarball?Ich mache das selten genug ist (Einreichung eines bug-fix zu einem OSS-Projekt per E-Mail), die ich immer mit ihm zu kämpfen,...

EDIT:OK, die kurze Antwort ist

diff -ruN -x *~ ...

Gibt es eine bessere Antwort?E. g., kann das gehen, in einer Konfiguration-Datei?

War es hilfreich?

Lösung

Dies muss nicht unbedingt Ihre Frage beantworten, aber Sie können das problem vermeiden, indem Sie die Konfiguration von Emacs zu verwenden, ein bestimmtes Verzeichnis zu halten, den backup-Dateien.Es gibt verschiedene Implementierungen für Emacs oder 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)))

Sie können auch entfernen Sie Sie alle mit einem einfachen Befehl finden

    find . -name “*~” -delete

Beachten Sie, dass das Sternchen und tilde in Anführungszeichen zu stoppen, der shell erweitert Sie.

Durch die Art und Weise, diese sind nicht streng temporäre Dateien.Sind Sie eine Sicherungskopie der vorherigen version der Datei, so dass Sie können manuell "rückgängig" Ihre letzten edit zu jeder Zeit in der Zukunft.

Andere Tipps

Sie können eine Datei kann ignoriert werden, wie diese:

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

und dann laufen diff mit -X - option, wie diese:

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

Es verwendet zu sein .diffignore Datei "schließen", um der Linux-kernel (vielleicht eine informelle Datei), aber ich konnte Sie aber nicht mehr finden.In der Regel, Sie halten mit dieser ignorieren-Datei, nur das hinzufügen neuer Muster, die Sie ignorieren möchten.

Sie können erstellen eine kleine sunction/script, wie z.B.:

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

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

Dies ist nur ein Weg, um dieses script.Der einfache Weg.Aber ich denke, Sie haben die Idee.

Anderer Vorschlag ist die Konfiguration in emacs eine backup-dir, so dass Ihre backup-Dateien gehen immer an den gleichen Ort, außerhalb Ihrer Arbeit dir!

Das poster hat aufgeführt dies als das "kurze Antwort":

diff -ruN -x *~ ...

aber füttern Sie diese shell wird verursachen die * werden mit Platzhalter bevor diff aufgerufen.

Das ist besser:

diff -r -x '*~' dir1 dir2

Ich übergehe die -u-und -N-flags wie Fragen des Geschmacks und nicht relevant für die Frage auf der hand.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top