Windowsでmsysgit gitを使用して、中央のsvnリポジトリを操作しています。私はgitを使用しています.gitを使用しているのは、すべての素晴らしい小さなローカルブランチを作成し、相互にリベースしたいからです。
また、中央リポジトリから頻繁に更新する必要があるため、個別の svn/git を使用することはできません。
問題は - (man ページ) は、ローカル ブランチからマスターブランチ (svn のトランクから追跡するように設定されている) を使用するgit svn --help
のは良い考えではないと述べています。git merge
git svn dcommit
私はそれが正確に真実ではないことを知っており、マスターgit merge
事前マージに適切にリベースされたブランチからマージする場合に使用できますが、より安全にして実際に使用しようとしていますand . コード レビューを使用しているので、とにかくパッチを作成しています。についても知っていましたが、実際にどのコミットがこのパッチに対応していたかを思い出さずに (つまり、パッチを読まなくても) したいのです。git format-patch
git am
git cherry-pick
git 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が独自のパッチを適用できないのは奇妙に感じます。