如何自动区分 file.txt.orig 和 file.txt

如何自动区分 file.txt.orig 和 file.txt

目前,我通过设置在 vim 上编辑文件patchmode=.orig,然后有两个文件:

  1. file.txt.orig<- 不做任何更改的备份
  2. file.txt<- 更新文件

但是,我想生成一个差异,而不必重命名该.orig文件,因此patch了解它只是file.txt已更新的文件。

理想情况下,我真的很喜欢可以运行的工作流程

diff -u file.txt它会自动比较file.txt.origfile.txt输出.diff包含

--- file.txt    2021-05-03 17:47:12.685416342 +0200
+++ file.txt    2021-05-03 17:47:30.538750593 +0200
@@ -1 +1,2 @@
 foo bar
+bar baz

代替diff -u file.txt.orig file.txt

--- file.txt.orig   2021-05-03 17:47:12.685416342 +0200
+++ file.txt    2021-05-03 17:47:30.538750593 +0200
@@ -1 +1,2 @@
 foo bar
+bar baz

上面确实需要我.diff每次都手动编辑文件。如果.orig自动使用文件,那是可能的,我很乐意将 vim patchmode 集成diff并拥有有效的补丁,而无需额外的努力。

也许有更好的方法?任何建议,将不胜感激。两者diffgit diff都适合我的情况。

答案1

该工作流程适合我。也许您正在通过尝试将补丁应用到您之前更新的文件来进行测试?

准备

echo this is original >file.txt.orig
echo this is new >file.txt
diff -u file.txt.orig file.txt >file.diff

cat file.diff
--- file.txt.orig       2021-05-03 19:17:13.038918015 +0100
+++ file.txt    2021-05-03 19:17:21.548900027 +0100
@@ -1 +1 @@
-this is original
+this is new

创建原始文件的副本以进行修补

mkdir x
cp -p file.txt.orig x/file.txt
cd x

cat file.txt
this is original

patch <../file.diff
patching file file.txt

cat file.txt
this is new

相关内容