如何让diff
忽略像foo.c~
这样的临时文件?是否有一个配置文件会使临时设置忽略默认设置?忽略Emacs中自动生成的文件
更一般地说:从tarball生成一个“干净”的补丁最好的方法是什么?我这样做很少就够了(提交bug修复,通过电子邮件的OSS项目),我总是与它的斗争......
编辑:OK,简单的答案是
diff -ruN -x *~ ...
是否有更好的答案?例如,这可以放在配置文件中吗?
如何让diff
忽略像foo.c~
这样的临时文件?是否有一个配置文件会使临时设置忽略默认设置?忽略Emacs中自动生成的文件
更一般地说:从tarball生成一个“干净”的补丁最好的方法是什么?我这样做很少就够了(提交bug修复,通过电子邮件的OSS项目),我总是与它的斗争......
编辑:OK,简单的答案是
diff -ruN -x *~ ...
是否有更好的答案?例如,这可以放在配置文件中吗?
这并不严格回答你的问题,但你可以通过配置Emacs使用特定的目录来保存备份文件来避免这个问题。Emacs或XEmacs有不同的实现。
在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)))
在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)))
你也可以用一个简单的find命令将它们全部删除
find . -name “*~” -delete
注意,星号和波浪线是双引号来阻止shell扩展它们。
顺便说一句,这些不是严格的临时文件。它们是以前版本文件的备份,因此您可以在将来随时手动“撤消”上次编辑。
您可以创建一个小sunction /脚本给它,如:
#!/bin/bash
olddir="/tmp/old"
newdir="/tmp/new"
pushd $newdir
for files in $(find . -name \*.c)
do
diff $olddir/$file $newdir/$file
done
popd
这是只有一个办法脚本这一点。简单的方法。但我认为你有这个想法。
其他建议是在emacs中配置一个备份目录,所以你的备份文件总是在你的工作目录之外的同一个地方!
您可以创建一个忽略文件,像这样:
core.*
*~
*.o
*.a
*.so
<more file patterns you want to skip>
,然后用-X
选项运行diff
,像这样:
diff -X ignore-file <other diff options you use/need> path1 path2
曾经有一个.diffignore文件 “关闭”到Linux内核(也许是一个非正式的文件),但我找不到它了。通常你会继续使用这个忽略文件,只是添加你想忽略的新模式。
的海报列出了此作为“简短的回答”:
diff -ruN -x *~ ...
它们只是这个壳会导致调用DIFF之前*进行晶片被保护。
这是更好的:
diff -r -x '*~' dir1 dir2
我省略了-u和-n标志为那些品味事项,并以手头上的问题不相关的。
这省略了一条重要信息,如从一个文件从newdir中删除;它不会出现在这里。 – 2014-10-12 22:24:25