問題タブ [format-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.
svn - Git形式-svn互換のパッチ?
git format-patchで作成されたパッチをsvn互換にして、svnリポジトリに送信できるようにする方法はありますか?
githubでsvnリポジトリを処理していて、変更をメインリポジトリに送信したいと思っています。これを行うにはパッチを作成する必要がありますが、パッチがsvnとは異なるgit形式であるため、パッチを適用できません。まだ発見していない秘密はありますか?
更新:現在、これを行うためのスクリプトまたはネイティブgitの方法はありませんが、手動でこれを実行する方法について、今年の初めから投稿を見つけることができました。私は指示に従い、gitパッチをsvnで動作させることに成功しました。
誰かがこれを達成し、gitプロジェクトに貢献するためのスクリプトを書くことに挑戦することができれば、私は誰もが大いに感謝されるでしょう。
http://kerneltrap.org/mailarchive/git/2008/1/15/570308/thread#mid-570308
git - format-patch はかなりうまく機能し、より良い方法を探しています
リベースが機能しないように見えるほど異なる 2 つのブランチがあります。または、リベースの方法がわかりません。
一連のファイルが削除された「パブリック」ブランチがあります(フィルターブランチを使用)。ほとんどのコミットはデルタに関して一致しますが、コミット ID はすべて異なります。dev ブランチから public ブランチに変更をプルするために、かなりの数の方法を試しました...自分のやりたいことができるとは信じがたいですが、方法がわからないだけだと思いますやれ。いずれにせよ、これはうまく機能しますが、間違っているようです。
パブリック ブランチで不要なファイルをフィルターで分岐しないことを含むヒントや提案を歓迎します (ただし、それらを削除するにはどうすればよいでしょうか?)。
私のツリーは多かれ少なかれ次のように見えます:
t ≅ a、u ≅ c、v ≅ d、w ≅ e、x ≅ g。i、j、k は、移行したい新しいパッチです。
git - GIT:多くのフォークを維持しながらコミットの重複を避ける方法は?
クライアント サイトを作成するために複製する「ベース サイト」を含むベース リポジトリがあるので、作業を行い、コミットを行い、クライアント フォークにプッシュすると、コミットの途中で 1 つ以上の必要があることに気付きます。ベースリポジトリにマージされます。それが私がしたことです:
git フォーマット パッチ -1 SHA
次に、「ベース サイト」リポジトリに移動して、次の操作を行います。
git am -3 patch_file
大丈夫です。問題は、「ベース サイト」からクライアント リポジトリに変更をプルしたいときに、コミットが複製されることです。
それを回避する方法はありますか?多分別のワークフロー?
編集:
実際、私はまだ問題を抱えています。私の説明はそれほど明確ではありません。もう一度試してみましょう:
「docs」、「layout」、「pub」、および「sql」フォルダーを含む基本リポジトリがあります。「docs」および「layout」フォルダーには空の「index.html」だけがあります。「pub」フォルダーに Joomla をインストールしました。
私が新しいクライアントを持っているとき、私は彼のディレクトリを作成してリポジトリを初期化します。次に、ベースベアリポジトリを指すリモート「ベース」を追加し、それをフェッチし、ベース/マスターをチェックアウトしてから、「チェックアウト -b マスター」を実行してマスターを作成しますベースの master ブランチからのブランチ。次に、ローカル サーバーで 'clone --bare' を作成し、それからローカル ワークステーションでクローンを作成します。必要に応じてドキュメントを保存し、デザイナーがレイアウトを作成し、すべてがコミットされてクライアントのベア リポジトリにプッシュされます。ローカル リポジトリが最新であることを確認するために、プッシュする前に常に「オリジン/マスターのリベース」を行います。
レイアウトが完成してプッシュしたら、それをプルして Joomla テンプレートの作成を開始します。そのため、多くのコミットを行った後、Joomla コンポーネントを変更して、正常に機能させる必要があることに気付きました。わかりました、コンポーネントを変更し、コミットして、テンプレートの作成を続行し、コミットします...
ここで、すべてのクライアントに同じ変更を加えたいので、すべてのコンポーネントのコミットを「ベース リポジトリ」に移動します。@jleedev ソリューションを試したところ、クライアントのすべてのコミットが一番上に移動し、クライアントのベア リポジトリに既に存在していた SHA が書き換えられました。
何か案は?
ありがとう!
git - git am / format-patch:行末の制御フォーマット
を使用して3つのコミットからパッチを作成しました
これにより、ノートブックからメールで送信し、デスクトップコンピューター(どちらもWindowsボックス)でメールを読み取る3つのパッチファイルが作成されます。
私が今やるとき
パッチは適用されますが、コミットに対して同じSHA1IDを取得できません。パッチを適用したファイルを少し検索すると、デスクトップコンピュータの変更された行がで終わるLF
のに対し、ノートブック(パッチを作成した場所)の変更された行はで終わることがわかりましたCR LF
。
だから、私の最初の考えはなしで呼び出すことでしたgit am
が--ignore-space-change
、これは私にエラーを与えます(パッチは適用されません)。
行末(msysgit 1.7.4)の処理方法を教えてくださいgit format-patch
。git am
パッチを適用する前にUNIX
、本当にVIMを取得してファイル形式をからに変更する必要がありますか?DOS
編集: VIMでパッチファイルを変更することすら役に立ちません:私は考えました、set ff=dos
そして:%s/^M//g
それは役立つでしょう、しかしそれはしません!
私の意見では、パッチを適用すると、パッチが作成された他のリポジトリから取得したのとまったく同じコンテンツと同じコミットハッシュが得られるはずです。私はそれについて間違って考えていますか?
git - git am / git apply を patch コマンドのように「あいまい」にするにはどうすればよいですか
私は git-format-patch と git-am を使用して、あるリポジトリから別のリポジトリに変更を適用しています。ファイル構造は同じですが、私が適用しているリポジトリにいくつかの変更があり、ほとんどのパッチがいくつかのハンクに失敗します。しかし、ほとんどのパッチ ハンクは、行番号が多少あいまいな状態で適用されます。
git-am apply
私が非常に厳密に解釈できる限り、これらのパッチはすべて完全に拒否されます。
だから私のワークフローは
コマンド ライン パッチを実行する必要がなく、am コマンドの一部として実行できればよいのですが。
フラグを指定して実行すると、--reject
ファイル内のすべてのハンクを含む .rej ファイルが作成されるように見えますが、これは私が望んでいるものではありません。
--3way
フラグを指定して実行すると失敗します
これは、これが基づいていた変更セットが、マージ先のリポジトリにないためだと思います。
git-am apply
raw patch コマンドのようにあいまい一致でパッチを作成し、失敗したハンクを含む .rej ファイルのみを作成する方法はありますか?
git - Git でのマージ後にパッチを再フォーマットする方法は?
と の 2 つのブランチがmaster
ありslave
、同じファイルと同じ行を編集するとします。まず、ファイルの内容は
次に、ブランチslave
で次のように編集されます
ここで、ブランチのユーザーがslave
パッチ ( git format-patch master
) をフォーマットし、ブランチのユーザーに送信しますmaster
。同時に、ブランチmaster
で同じファイルが編集され、
パッチを適用できず、マージして新しいパッチを作成するmaster
よう求められます。が にマージされ、競合が解決されslave
たら、パッチを再フォーマットします。コミット グラフは次のようになります。master
slave
最新のコミット (マージ) はslave
次のようになります。
ただし、ここで を実行するgit format-patch master
と、マージと競合の解決が考慮されていない、以前とまったく同じパッチが得られます。
最新のマスターに適用されるパッチをどのようにフォーマットしますか? 無しでやってみたいrebase
です。
更新:git format rev1..rev2
ここで、rev1
とはそれぞれとブランチrev2
のヘッドであり、競合の解決に関連する変更は含まれていません。有効なパッチをフォーマットしますが、コミット メッセージを省略します。master
custom
git-diff
git - git format-patchでフォーマットされたパッチを電子メールで送信するにはどうすればよいですか?
オープンソースプロジェクトに送信したい一連のパッチがありますが、電子メールを適切にフォーマットする方法がわかりません。git format-patchコマンドを実行してみて、それらすべてをThunderbirdからの電子メールに添付しましたが、各パッチはそれ自体が個別の電子メールであると想定されているため、すべて拒否されました。同じツリーにプライベートなコードと送信する必要のあるコードがあるため、git emailコマンドを避けたいと思います。つまり、送信する前に各電子メールを手動で確認できる必要があります。
Thunderbirdを使い続けたいのですが、行が折り返され、パッチが使用できなくなるため、問題があるようです。私もfetchmailとmuttを設定しようとしましたが、文字通り10時間読んで試した後、あきらめました。gitパッチを送信するための非fetchmailおよび非thunderbirdソリューションはありますか?
git - git format-patch および EOL の ^M
行末に ^M を含むファイルのパッチを作成するのに苦労しています。ファイルを編集すると ^M は表示されませんが、format-patch によって作成されたパッチは、パッチ ゾーン コンテキストでそれを示しています。そのため、新しい git ツリーに適用しようとすると、git am は行末でこの ^M を検索していますが、表示されません。そしてそれはエラーの結果です。
git format-patch がこの ^M を考慮に入れるのをやめるアイデアや回避策はありますか?
前もって感謝します
PS: この git ツリーへの書き込みアクセス権がないため、パッチを作成する必要があります。
git - Git:コミットIDを参照せずに、「機能」ブランチで行われたすべてのコミットのパッチを生成します
アプリケーションの2つのバージョンを2つのブランチで維持しています:free
およびmaster
(master
アプリケーションのプレミアムバージョンです)。これらのブランチはかなり似ていmaster
ますが、バージョンにはない追加のアプリケーション機能がいくつかあるfree
ため、2つのブランチを継続的に維持する必要があります。
定期的に、バグを修正したり、ブランチに機能を追加したりする必要があります。これらの機能は、完了時にブランチにfree
適用する必要がありmaster
ます。そのような作業ができたら、free
たとえば、と呼ばれるに基づいて新しいブランチを開始しますnewfeature
。機能が完了したら、newfeature
X個の新しいコミットがあります。
にマージする前にnewfeature
、free
に含まれているすべてのコミットからパッチを生成するために使用できるコマンドを知りたいのですが、newfeature
これをに適用する必要がありますmaster
。現在、私はこれを行っています:
方法を知っている限り、実際に分岐したときの特定のコミットIDnewfeature
と、の最後のコミットを検索する必要newfeature
があります。これはドラッグです。コミットIDには興味がなく、入力する必要はありません。
私が話しているコミットをgitが判断する、一貫して使用できる単一のコマンドが必要です。これは毎回同じパターンです。ブランチが与えられた場合、の共通の祖先からのコミットnewfeature
のパッチを生成したいと思います。newfeature
free
newfeature
コミットIDを手動で検索する必要をなくすチェンジセット式はありますか?
PS:AFAIK、ブランチgit rebase
全体をにマージするため、このタスクを実行するために使用することはできません。ブランチに固有のコミットをにマージしたいだけです。free
master
newfeature
master
git - 初期コミットで git format-patch を使用する方法
レビュー プロセス用に初期コミット (空ではない) のパッチ ファイルを取得する必要がありますが、git format-patch
コマンドはそれを含まない初期コミットにあるブランチからしか作成しないため、混乱しています。
それは明らかな動きに違いないようですが、私はそれを完全に見逃しています。