UNIXパッチのアトミックアプリケーション


1

手動でコードに適用する必要がある顧客向けの「パッチ」を用意しました。競合によりパッチが部分的に適用された場合、手順全体をすぐに元に戻す必要があります。

アトミックパッチアプリケーションを実行する引数または小さなスクリプトが送信できるかどうか疑問に思います。

ありがとう。

回答:


1

git applyこれに使用できます。Gitリポジトリは必要ありません。


私のクライアントにはばかげたセキュリティ規制があり、追加のソフトウェアは許可なくインストールされることはなく、gitは追加です。私はある意味で話そうとしましたが、それは私次第ではありません。
ロマニンシュ

@romaninshまあまあ。しかし、「カーネル開発者にとっては十分だ」という説得力のある議論かもしれません。(それはカーネル開発者によって作成されました。)
grawity

セキュリティレビューを通過する場合、curlと同じくらい安全であるとみなされますが、私だけの手順を実行することは望んでいません。そして、私はそれについてあまりすることができない人々に対処します。
ロマニンシュ

1

パッチを適用する必要があるファイルの数と数がわかりません。私の好きなことは:

  • 作業中のプロジェクトのコピーを作成し、そのコピーにパッチを適用します

  • パッチは成功しましたか?コピーは機能しますか?次に、作業中のプロジェクトをproject.oldに移動し、コピーをプロジェクトに移動します


project.old」の代わりに、そのために特別に設計されたプログラムを使用します。つまり、git、hg、svnなどのバージョン管理システムです。
悲しみ

それが今起こっていることだと思います。ファイルのリストを提供していますが、古いファイルの上に1つずつコピーします。
ロマニンシュ

1

これを次の方法で解決しました。

patch -f --dry-run < p  && patch -f < p >/dev/null || echo "Failed to patch"

ドライラン中にパッチの適用が失敗した場合、何も適用されず、ユーザーに返送できる出力が提供されます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.