問題タブ [git-patch]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
git - /patches フォルダーからすべての git .patch ファイルを適用する方法 - npm
TL、DR;
.patchフォルダー内のすべてのファイルを取得して実行するための git コマンド、bash スクリプト、または npm メソッド (スクリプト) を探しています
私がこれまでに試したこと:
コンテキスト(何に使用するか)
現在、かなりの数のライブラリを使用して、大規模なプロジェクトに取り組んでいます。私たちは webpack を使用しており、フロントエンドは Angular.js、バックエンドは Yii2 です。開発者は Linux と Windows の両方を使用するため、プロジェクトは Docker イメージ内でコンパイルされます。
これまで、ライブラリに変更を加える必要があるときはいつでも、それを fork し、 fork を で指定しましたpackage.json。
そして...それは動作します。
私は最近、モジュールにパッチを適用するための間違いなく優れた方法を発見しましたpatch-package。つまり、フォークを回避し、変更を.patchファイルに保存します。
ただし、パッチ ファイルを作成するだけでは不十分です。デプロイ時には、ビルド前にも適用する必要があります。これは、展開スクリプトの次の行に変換されます。
これは、実行中のものの前に実行する必要がありますnpm run build。
そして、再び、それは機能します。
質問
patches/フォルダー内の各ファイルの取得を自動化して適用する方法を探していますが、それらを1つずつ指定する必要はありません。そのため、パッチ フォルダーに新しいものがプッシュされる (または既存のものが変更される) たびに.patch、展開スクリプトを変更することなく、ビルド前にパッケージに自動的に適用されます。
私は示唆しているように見えるこの質問を見つけました
トリックを実行する可能性があります (もちろん、docker コンソール内で)。ただし、上のmanページにgit-amは次のように書かれています。
メールボックスから一連のパッチを適用する
何のメールボックス?フォルダから変更を適用したい。コマンドを試してみるとam、コンソールは私が誰なのかわからないと不平を言います (電子メールとパスワードが必要です)。
.shbash スクリプト (ファイル) を作成し、フォルダーからすべてのファイルを読み取り、複数のgit applyコマンドを実行する単純なケースとして扱う必要がありますforか?
それを行うためのより「git」っぽい方法/コマンドはありますか?
npm スクリプトを使用する方が理にかなっていますか?
git - git am: パッチ形式の検出に失敗しました。git apply も失敗します
私は git のパッチ適用を学ぼうとしているので、テスト リポジトリをセットアップし、いくつかのコミットを行いました。
次に、パッチを作成しました。git format-patch -1 HEAD --stdout > changes.patch
次に、新しいブランチをチェックアウトし、 changes.patch: を使用しようとしましたgit am .\changes.patch。それは私にエラーを与えるPatch format detection failed.
ここで検索したところ、この関連する質問が見つかりました。
だから私は試しgit apply .\changes.patchました。それは私に与えますerror: unrecognized input。
パッチ ファイルは、素人目には問題ないように見えます。
パッチがリポジトリと同じディレクトリにあるのではないかと思ったので、別のディレクトリに移動しました。結果は同じです。
<また、多くの人がコマンドにa を持っていることに気付いたので、それを試してみました: git am < ..\changes.patch. どうやらそれは有効な構文ではありません。
これは、Windows で PowerShell を使用して 64 ビットの git を使用しています。
何か案は?