web-dev-qa-db-ja.com

カメSVNスイッチブランチコマンドエラー-「共有先祖先がない」

「スイッチ」を実行してディレクトリを別のブランチに変更しようとすると、奇妙なエラーメッセージが表示されます。

これは、リポジトリがホストのWebサイトからそれを見て設定する方法です。以前はbugfix-lobby-quirksというブランチがありましたが、トランクにマージした後に削除されました。この機能とゲーム内対戦相手カードの新しい機能は、どちらもトランクから分岐していました。

enter image description here

ここで、チェックアウトされた作業コピーを、削除されたブランチからこの新しいブランチに「切り替えられた」ものにしたいと思います。 bugfix-lobby-quirksブランチは、ちょうど作業していたので、既にコンピューターでチェックアウトされています。私がやりたいのは、このフォルダ内のすべてを、選択した新しいブランチ内のすべてに切り替えることです。これは、実際にはすべてではないのでいいです()違います。これがsvnスイッチの意味ですよね?

enter image description here

それから私はスイッチをクリックし、ポップアップが現れます。ブランチを自動的に認識し、リストに表示するので、選択します。

enter image description here

残念ながら、これを行うと毎回このエラーメッセージが表示されます。

enter image description here

幸せな日ではありません。悲しい日です。

OK。それで、私は何が間違っていますか?

22
Mc' Flips

Svn switchダイアログで[祖先を無視]チェックボックスをクリックします。

30
Chris

これは、最上位フォルダーを実行する代わりに、サブフォルダーの1つを切り替えようとしたために発生する場合があります。つまり、トランクではなくフォルダーtrunk/applicationのみを切り替えようとしていました。

3
Travis

switch a deletedアクティブなブランチにブランチできる場合があります。 Subversionには、そのブランチはもう存在しません。 (そして、存在しないため、祖先を共有しません)。

削除されたブランチの作業コピーに移動し、ブランチ自体が削除される前にリビジョンに対してpdateを実行できるかどうかを確認します。次に、スイッチを試してください。

それがうまくいかない場合は、ndeleteブランチにする必要があります。これはコマンドラインから難しくありません。ブランチがリビジョン12345で削除されたとしましょう:

$ svn co --set-depth=immediates $URL/branches   # Checks out just branch names
$ cd branches
$ svn merge -c -12345 .                         # Removes branch delete

--set-depth=immediatesはすべてのブランチをチェックアウトしますが、その下のプロジェクトはチェックアウトしません。これはかなり高速なチェックアウトになり、/branchesディレクトリ。これで、削除のreverse mergeを実行して、ブランチを復元できます。

チェックアウトとマージを行いたくない場合は、svn cpここでcopy削除される前のリビジョンから現在のリビジョンへのブランチ:

$ svn cp -r12344 $URL/branches/features_in_opponents_cards@12344 $URL/branches

これにより、最初にチェックアウトを行わなくてもブランチを復元できます。

2
David W.