3

現在のバージョン管理サーバーは 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 を設定するなど)。

4

0 に答える 0