我正在运行这三个命令。
cd "${folder1}"
diff -ruN "${folder1}" "${folder2}" > "${patchname}"
patch -f -s -d "${folder1}" --merge < "${patchname}"当我运行它们时,它成功地将folder1中的文件更改为与folder2相同的文件。但是,当我运行这些命令时,我得到了输出。
patch: **** Can't rename file ./update.patch.omMg8yG to update.patch : Operation not permitted
发布于 2016-10-15 02:01:43
问题出在这里:
cd "${folder1}"
diff -ruN "${folder1}" "${folder2}" > "${patchname}"您在folder1中,正在尝试创建一个也在folder1中的补丁(我们知道这个补丁是因为您的日志文件称为文件./update.patch.omMg8yG,显式地引用当前目录),它包含folder1和folder2之间的一组差异,而这些差异还包括输出文件本身的内容--输出文件在diff操作过程中生成,并在patch操作过程中读取。
因此,patch正在尝试更改它从读取的补丁文件。它失败了,因此出现了错误,但是您不应该让它进行这种尝试--特别是因为在大多数UNIXlike操作系统上,这种尝试不会失败(我假设您在Cygwin上,或者在不支持打开未链接文件的远程文件系统挂载上)。
修改patchfile变量,使其指向folder1或folder2以外的其他目录中的某个位置。
https://stackoverflow.com/questions/40049075
复制相似问题