現在のバージョン管理サーバーは Subversion であり、完全に git に切り替えることは今のところ考えられないため、職場で git-svn を使用しています (*cry*)
私のワークフローは次のとおりです。次のブランチがあります
- マスタートラック リモート/トランク
- local/0.4 は remotes/0.4 を追跡します
- 仕事はマスターブランチの私の開発ブランチです
- work-0.4 は local/0.4 ブランチの私の開発ブランチです
私は自分の作業ブランチで作業してから、次を使用して master と local/0.4 にマージします
git merge --no-ff <branchname>
その後、経由でsvnにチェックインします
git svn dcommit
そして私は使用します
svn.pushmergeinfo=true
svn:mergeinfo プロパティを更新して、同僚がメタデータを台無しにして怒らないようにします :)
しかし、私は次の問題を抱えていました。
work-0.4 ブランチで 2 つのコミットを行った後、これらを git merge --no-ff work-0.4 を使用して local/0.4 ブランチにマージしました。この後、 git svn dcommit を実行したところ、次のメッセージが表示されました
Committing to https://svn-server ...
e138050f6ebd2f2ca99cbefc5e48acae412e1f86 is merged into revision f5f2345e8e5fc64
20423bdc00397b5853b3759c4, but does not have git-svn metadata. Either dcommit the
branch or use a local cherry-pick, FF merge, or rebase instead of
an explicit merge commit.
いくつかのブランチのリベースとリセットの後、なんとかすべてを svn にプッシュしましたが、私の解決策では、ローカル/0.4 ブランチを work-0.4 ブランチにリベースする必要がありました。 -1 つの svn-commit にコミットします:/
ここでのワークフローで何か間違ったことをしている可能性があり、svn.pushmergeinfo に関連している可能性があります。svn.pushmergeinfo のドキュメントは言う
config key: svn.pushmergeinfo
+
This option will cause git-svn to attempt to automatically populate the
svn:mergeinfo property in the SVN repository when possible. Currently, this can
only be done when dcommitting non-fast-forward merges where all parents but the
first have already been pushed into SVN.
正直なところ、それを正しく理解しているかどうかはよくわかりません。ここで svn.pushmergeinfo が正しく動作しないような奇妙なことをしていますか? git-svn を正しく最適に動作させるには、ワークフローをどのように構築すればよいですか (適切な mergeinfos を設定するなど)。