10

この質問は、この質問で提起された質問と非常によく似ていますが、回避策の後にいくつかの問題が発生しています。

問題:

基本的に、私はSubversionサーバーとMercurialローカルクライアントを持っています。拡張hg-subversionを使用すると、mercurialがSubversionクライアントとして機能できます。これは、Subversion開発ブランチから無制限の機能ブランチを作成し、適切なものを選択してそれらをマージできるため、私にとって理想的です。

Subversionの制限により、Subversionリポジトリへのブランチマージをコミットできません。実際、すべてのブランチマージをコミットする必要はありません。「デフォルト」のブランチヘッドをSVNにコミットするだけです。

提案された解決策:

Harveyが推奨した回避策のユーザーは、ワークフローを変更して、開発用のhgsubversionクローンのhgのみのクローンを含めることでした。

ハーベイを引用するには:

秘訣は、変更されたhg <-> hgsubversion<->svnワークフローを学習することです。それがどのように機能するかを「理解」すれば、問題はありません。さらにいくつかのコマンドを入力するだけです。私は実際に、プロセス(反復的)を簡単にするためのスクリプトを書き始めました。典型的なフロー:["hg"リポジトリ内]一連の変更をコミットします。それらを「hgsubversion」にプッシュします。["hgsubversion"に切り替え]hgupdate(hgsubversionにはこれが必要です); hg push to "svn"(これは、ローカルでチェンジセットをプッシュして削除した後、自動的に再プルします)。[「hg」に戻る]「hgsubversion」からのhgpul; hgは古い複製を削除しますb/c "hg"はhgsubversionクローンではなく、古いチェンジセットを自動的に削除することを知りません。

私が直面している問題:

hgsubversionからsvnリポジトリへのhgpushを実行する時点で行き詰まります。「申し訳ありませんが、マージリビジョンのsvn親が見つかりません。」というエラーメッセージが引き続き表示されます。

確かに、私はhgsubversionがリビジョンをsvnにプッシュする方法について100%ではありません。正直なところ、ローカルコピーがsvnサーバーにプッシュされている状態を確認したいと思います。

停止しますか?

4

2 に答える 2

6

私は、アーカイブの目的で(そして同じ問題を抱えている人のために)自分の質問に答えることにしました。

私は答えが簡単に述べられている別の同様の質問を見つけました、あなたはそれをすることができません。上記のリンクを参照し、これが役に立った場合は、Eric-Karlの回答に賛成票を投じてください。彼は回復するための回避策を提供しています。

于 2011-01-31T17:57:47.877 に答える
-1

HgSubversionの知識を使用する

質問を正しく理解していれば、hgsubversionは現在のリビジョンにのみプッシュします。

たとえば、10、11、12を実行してから、devブランチから13をマージした場合。あなたはできる

hg up 12
hg push

リベースなどの方法により、最終的に12にプッシュしてから、13に更新されますが、私にとっては機能します。

新しいhg機能

Mercurialフェーズを使用して、プッシュしたくないリビジョンをシークレットとしてマークします。もちろん、これにより、他のリポジトリにもプッシュできなくなります。

企業ポリシーを使用する

私たちの仕事での他の素晴らしい状況は、すべてのコードコミットにレビューアと問題がなければならないということです。何かがsvnを対象としていない場合(ただし、チーム/スパイクリポジトリにある場合)、その情報を入力せず、コミット前のフックの失敗によって事故が停止します。

于 2012-05-15T23:59:41.723 に答える