当我尝试patch
针对链接运行带有补丁文件的命令时,补丁给出了错误:
文件
path/to/file
不是普通文件——拒绝修补
staging
当我的目录中存在指向相关文件的链接时,以下命令会产生此错误。
~> cd staging
~/staging> ls -l path/to/
lrwxrwxrwx 1 user users 15 Jan 1 00:00 file1 -> ../../../actual/path/file1
lrwxrwxrwx 1 user users 15 Jan 1 00:00 file2 -> ../../../actual/path/file2
~/staging> patch -p 1 -i ../patchfile
File path/to/file1 is not a regular file -- refusing to patch
2 out of 2 hunks ignored -- saving rejects to file path/to/file1.rej
File path/to/file2 is not a regular file -- refusing to patch
1 out of 1 hunk ignored -- saving rejects to file path/to/file2.rej
我怎样才能告诉patch
不要忽略符号链接并就地修补它们,就好像它们是普通文件一样?
答案1
GNU 补丁 2.7.1 (自2012年起) 有一个--follow-symlinks
选项:
查找输入文件时,请遵循符号链接。替换符号链接,而不是修改符号链接指向的文件。 Git 风格的符号链接补丁将不再适用。该选项的存在是为了向后兼容以前版本的补丁;不鼓励使用它。