7

私は、ここSOで非常によく似た質問のように見えるものと、良い答えのように見えるものを見つけました。しかし、何らかの理由で、これを機能させる方法をまだ理解できないようです。私の懸念は、それが単に不可能かもしれないということです。

状況は次のとおりです。バージョン管理システムとして中央のSVNリポジトリを使用する小さなチームで作業しています。私のペアプログラマーと私はローカルコミットのオプションがないことに不満を感じた(そしてSVNブランチを使用する煩わしさを経験したくなかった)ので、SVNクライアントとしてGitまたはMercurialのいずれかを使用することを検討し、hgsubversionを見つけましたHgリポジトリでローカルに作業し、ローカルでコミットし、準備ができたときにのみSVNにプッシュするという私たちが望むことを実行できるようです。

プッシュするときが来たとき、Hgから次のエラーメッセージを受け取りました。

Sorry, can't find svn parent of a merge revision.

問題は、チームメイトの更新を取得するためにSVNから変更をプルしてから、ローカルの変更とマージする必要があったことでしょうか。HgはSVNを幸せにする方法を理解できません。これは、私が見た他のSOの質問と回答から得たメッセージのようです。ただし、そのような場合に提供されたアドバイス(実行中hg rebase --svn)は、私たちにとっても機能しないようです。同じ「svnparentが見つかりません」というメッセージが表示されます。

これも可能ですか?それとも、チームの他の開発者がSVNに直接変更を加えている場合に、それ以上の問題が発生しますか?

4

2 に答える 2

6

私はこれを1年以上行っていますが、うまく機能しています。私は甘くて甘いDVCSの愛を手に入れ、残りの人々はええと...そうしないでください。ブリッジとしてhgsubversionを使用します。私はhg-svnでかなりの問題を抱えていました。YMMV。

私はこれを使ってセットアップを行い、それ以来ずっとそれを愛しています!

注意点は、Mercurialを使用してブランチ間の変更をマージすることはできないということです。ブランチで作業することはできますが(use hg up [some-branch])、トランクにマージするときは、コミットしてからプッシュしsome-branch、Subversionを使用しsome-branchてトランクにマージする必要があります。

この手順を詳しく説明したブログ投稿を用意しました。あなたはここでそれを見ることができます:http://xinmyname.tumblr.com/post/11305033055/subversion-mercurial-branches-oh-my

幸運を!

于 2011-03-24T21:37:21.227 に答える
5

問題は、hgsubversionがMercurialからSubversionにマージをプッシュできないことです。マージチェンジセットを作成しない限り、すべてが正常に機能するはずです。(hgsubversionは単にマージ情報を無視し、通常の単一の親のチェンジセットを作成するため、FWIW Subversionのマージは正常に機能します。)説明している問題は、hgsubversionの既知の制限の1つです。その他はにリストされていhg help subversionます。

これを回避するには、rebase拡張機能を使用して、プッシュする履歴が完全に線形であることを確認することを検討してください。

于 2011-03-24T21:32:09.197 に答える