3

切り替えの概念がわかりません(tortoise svnを使用)。私たちは 3 人の開発者のチームで、私は Dev2 です。

まず、次の手順を使用して切り替えを試みました(たとえば、現在トランクで作業していて、ブランチ v1.0 で作業を開始したいとします)。

  1. /branches/v1.0 を右クリック
  2. tortoisesvn を選択 - スイッチ
  3. パスへ: /branches/v1.0
    • ヘッド リビジョン (チェック済み)
    • スイッチの深さ : ワーキング コピー

上記で何か間違ったことをしている場合はお知らせください。

しかし、その後、切り替えをスキップすると、次の出力が得られます。

  1. すべての開発者がトランクで作業し、開発は終了しました
  2. v1.0 でタグを作成しました
  3. タグ v1.0 にバグが見つかったので、タグ v1.0 からブランチ v1.0 を作成しました
  4. Dev2 と Dev3 がブランチ v1.0 で作業しているトランクで、Dev1 (開発者 1) が引き続き作業できるように、新しい機能も必要です。
  5. Dev2 はブランチ v1.0 でコードを書き、コミットします
  6. Dev3 はブランチで更新を取得し (Dev1 の更新を取得)、ブランチ v1.0 でコードを記述してコミットします
  7. Dev1 はブランチで更新を取得 (Dev2 と Dev3 の更新を取得)
  8. Dev2 と Dev3 はトランクで更新を取得します (Dev1 から更新を取得)

すべてが切り替えなしで正常に機能している場合、切り替えの概念は何ですか?

また、切り替え中にトランクにコミットされていないファイルがあるとどうなりますか?

4

2 に答える 2

3

トランクで作業していて、突然ブランチ 2.3 で作業する必要があることに気付いたと想像してみてください。ブランチ 2.3 をチェックアウトできますが、すべての作業が失われます。複製を試みることもできますが、それには長い時間がかかる可能性があります。

切り替えにより、作業内容を失うことなく、ローカル コピーのベースを切り替えることができます。変更したファイルには、まだ変更が含まれています。追加したファイルは引き続き追加されます。削除したファイルは引き続き削除されます。

$ svn co $REPO/trunk/proj1
[...work...work...work...]   #Whoops! Should have been on Release 2.3 branch!
# svn switch $REPO/branches/2.3/proj1
[...work...work...work...]   #Everything is fine and dandy!

switch を使用して、別のチェックアウトを行うことなく作業コピーを切り替える人もいます。たとえば、私は での作業を終了しproj1、現在はリリース 2.3 ブランチでいくつかの作業を行っています。すべてを再ダウンロードする必要がないため、そのブランチに切り替えるだけで時間を節約できます。さらに、スペースを節約できます。

作業ディレクトリが何を表しているのか簡単に混乱する可能性があるため、そのような考え方はお勧めしません。ブランチ情報を抽出してプロンプトに表示するための複雑なプロンプトを見てきました。ただし、プロジェクトとブランチ (またはトランク) にちなんでチェックアウトに名前を付け、プロジェクトごとに個別の作業ディレクトリを使用しています。

速度は問題にならないはずです。非常に大きな Subversion プロジェクトのチェックアウトには 5 ~ 10 分かかります。コーヒーを飲むのに十分な時間です。また、このギガバイトのディスク サイズの時代では、スペースを重視すべきではありません。を使用svn switchすることはよくあることではありません。

一度に、リポジトリをホストするサーバーが変更された場合に切り替えることがありました。ただし、svn relocateその目的のためだけに特別なコマンドが用意されています。

$ svn co svn://repo/proj1   # We were using svnserve
$ svn relocate svn://repo http://repo/svn  #Now we're using Apache https
$ svn relocate http://repo/svn/proj1       #Alternative to the above.
于 2013-02-21T04:15:30.553 に答える
2

svn switch は、サーバー上の新しい場所を指すようにローカル チェックアウトを更新するだけです。たとえば、誰かがリポジトリ内でフォルダを移動した場合などです。

コミットされていないファイルは問題ありません。切り替えは、ローカル ファイル システムへの単なる変更です。切り替え後、差分などを表示すると、新しいリポジトリが指されます。

于 2013-02-21T01:16:23.673 に答える