4

Windowsでmsysgit gitを使用して、中央のsvnリポジトリを操作しています。私はgitを使用しています.gitを使用しているのは、すべての素晴らしい小さなローカルブランチを作成し、相互にリベースしたいからです。

また、中央リポジトリから頻繁に更新する必要があるため、個別の svn/git を使用することはできません。

問題は - (man ページ) は、ローカル ブランチからマスターブランチ (svn のトランクから追跡するように設定されている) を使用するgit svn --helpのは良い考えではないと述べています。git mergegit svn dcommit

私はそれが正確に真実ではないことを知っており、マスターgit merge事前マージに適切にリベースされたブランチからマージする場合に使用できますが、より安全にして実際に使用しようとしていますand . コード レビューを使用しているので、とにかくパッチを作成しています。についても知っていましたが、実際にどのコミットがこのパッチに対応していたかを思い出さずに (つまり、パッチを読まなくても) したいのです。git format-patchgit amgit cherry-pickgit am /reviewed/patches/dir/*

git svnでは、との何が問題なのgit amですか? それは簡単git amです-いくつかの非常に難しい点は、提供されたパッチのCRLFからLFgit-mailsplitへの変換を行うことです(正確には、これを行っています)、リベースではありません。git format-patch適切な (LF 終了) パッチも作成しています。

私のレポはほとんどがCRLFであるため (そしてそのままである必要があります)、パッチは明らかに間違った EOL のために失敗しています。diff をCRLFに変換し、何らかの方法でハッキングgit amして変換を防止することも機能しません。ファイルが削除または削除された場合、失敗します-git apply予想される/ dev/nullについて文句を言います(しかし、彼は/dev/null^M.

そして、それを適用するとgit am --ignore-space-change --ignore-whitespace、LFエンディングがインデックスに直接コミットされますが、これも奇妙です. (経由で)svnにコミットしてチェックアウトしても保存されるかどうかはわかりませんがgit svn dcommit、試したくありません。

もちろん、実際の差分だけを変換するためにパッチをハッキングすることはまだ可能ですが、これは単純なタスクには多すぎるハックです。

では、パッチを作成して同じシステム上の同じレポに適用する確立された方法は本当にないのだろうか? msysgitが独自のパッチを適用できないのは奇妙に感じます。

4

1 に答える 1

3
git format-patch --ignore-space-change --ignore-whitespace

git am --keep-cr --ignore-whitespace

これは私を助けました。これを読めば理解が深まります。

于 2014-06-12T10:52:01.200 に答える