3

TL、DR;

.patchフォルダー内のすべてのファイルを取得して実行するための git コマンド、bash スクリプト、または npm メソッド (スクリプト) を探しています

git apply --ignore-whitespace patches/{filename}

私がこれまでに試したこと:

git am --ignore-whitespace patches/*.patch

コンテキスト(何に使用するか)

現在、かなりの数のライブラリを使用して、大規模なプロジェクトに取り組んでいます。私たちは webpack を使用しており、フロントエンドは Angular.js、バックエンドは Yii2 です。開発者は Linux と Windows の両方を使用するため、プロジェクトは Docker イメージ内でコンパイルされます。

これまで、ライブラリに変更を加える必要があるときはいつでも、それを fork し、 fork を で指定しましたpackage.json

"package-name":"git+https://github.com/{git-user}/{package-name}"

そして...それは動作します。

私は最近、モジュールにパッチを適用するための間違いなく優れた方法を発見しましたpatch-package。つまり、フォークを回避し、変更を.patchファイルに保存します。

ただし、パッチ ファイルを作成するだけでは不十分です。デプロイ時には、ビルド前にも適用する必要があります。これは、展開スクリプトの次の行に変換されます。

docker exec -it {container-name} bash -c "git apply --ignore-whitespace patches/{package-name}+{package-version}.patch"

これは、実行中のものの前に実行する必要がありますnpm run build

そして、再び、それは機能します。


質問

patches/フォルダー内の各ファイルの取得を自動化して適用する方法を探していますが、それらを1つずつ指定する必要はありません。そのため、パッチ フォルダーに新しいものがプッシュされる (または既存のものが変更される) たびに.patch、展開スクリプトを変更することなく、ビルド前にパッケージに自動的に適用されます。

私は示唆しているように見えるこの質問を見つけました

git am --ignore-whitespace patches/*.patch

トリックを実行する可能性があります (もちろん、docker コンソール内で)。ただし、上のmanページにgit-amは次のように書かれています。

メールボックスから一連のパッチを適用する

何のメールボックス?フォルダから変更を適用したい。コマンドを試してみるとam、コンソールは私が誰なのかわからないと不平を言います (電子メールとパスワードが必要です)。

.shbash スクリプト (ファイル) を作成し、フォルダーからすべてのファイルを読み取り、複数のgit applyコマンドを実行する単純なケースとして扱う必要がありますforか?

それを行うためのより「git」っぽい方法/コマンドはありますか?
npm スクリプトを使用する方が理にかなっていますか?

4

2 に答える 2