シンボリックリンクパッチを許可

シンボリックリンクパッチを許可

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スタイルのシンボリックリンクパッチはもう機能しません。このオプションは、以前のリリースのパッチとの互換性のために存在します。

おすすめ記事