0

SVN を使い始めたばかりで、答えが見つからない SVN スイッチに関する奇妙な問題に遭遇しました。簡単に言うと、/my repo/tags/versionnumber に保存したアプリケーションの最新バージョンの作業コピーがありました。いくつかのバグ修正を行い、Trunk にチェックインしてステージ環境にデプロイすることを計画しました。

ただし、svn スイッチを実行すると、リポジトリ パスが /my repo/trunk/ に変更されただけでなく、チェックアウト (または何か) が実行され、ローカルの変更が上書きされました。トランクとタグのリビジョン番号も同じですが、これは私が読んだ限りでは不可能です。

以下は出力例です (スウェーデン語から翻訳されているため、何か変に聞こえる場合はその理由がわかります)。

>svn info
>
>URL: svn+ssh://user@server/my repo/tags/versionnumber
......
>Revision: 8
.....
>Latest change in revision: 6

> svn switch svn+ssh://user@server/my repo/trunk/
> password ********
>
>D    log
>D    logparse.php
>U    document_root/js/standard.js
......
>Updated to revision 8
>
>svn info
>URL: svn+ssh://user@server/my repo/trunk
......
>Revision: 8
.....
>Latest change in revision: 8

元に戻すときも同じです。次に、以前に削除したファイルを追加し (トランクに存在する場合)、両方に存在するファイルを「更新」します。

4

1 に答える 1

1

これがsvnスイッチの意図された動作です。作業コピーを、切り替え先のブランチのHEADリビジョンに切り替えます(基本的に、現在の作業コピーに対するブランチのチェックアウト)。

変更先のブランチの何とも競合しないローカル変更がある場合、それらはそのままになります。競合がある場合は、svnが通知します。

コミットを行い、リビジョン番号がインクリメントされると、そのリビジョン番号は、作業中のブランチだけでなく、リポジトリ全体の新しいリビジョン番号になります。そのため、トランクとタグのリビジョン番号は同じです。これは、svnの意図された動作でもあります。

詳細については、この本をご覧ください:http ://svnbook.red-bean.com/ (無料のオンラインバージョンが利用可能)。

于 2012-09-11T07:39:14.273 に答える