27

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

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

ここに画像の説明を入力

ここで、削除されたブランチからこの新しいブランチに「切り替えられた」チェックアウト済みの作業コピーを取得したいと考えています。作業中だったので、bugfix-lobby-quirks ブランチを既にコンピューターにチェックアウトしています。私がやりたいことは、このフォルダー内のすべてを、選択した新しいブランチ内のすべてに切り替えることです。これは、実際にはそれほど異なるわけではないので便利です。これが svn switch の意味ですよね?

ここに画像の説明を入力

次に、スイッチをクリックすると、ポップアップが表示されます。自動でブランチを認識してこちらのリストに表示してくれるので選んでみます。

ここに画像の説明を入力

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

ここに画像の説明を入力

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

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

4

3 に答える 3

37

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

于 2015-09-24T13:41:49.543 に答える
3

削除されたブランチをアクティブなブランチに切り替えることができる場合があります。Subversion には、そのブランチはもう存在しません。(そして、それは存在しないので、祖先を共有しません)。

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

それでもうまくいかない場合は、ブランチの削除を取り消す必要があります。これは、コマンド ラインからは難しくありません。あなたのブランチがリビジョン 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。これで、削除の逆マージを実行して、ブランチを復元できます。

チェックアウトとマージを行いたくない場合は、ブランチが削除される前のリビジョンから現在のリビジョンにコピーsvn cpする場所を実行できます。

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

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

于 2014-12-15T17:06:25.037 に答える