2010-12-17 41 views
3

私は、外部のSubversionサーバーを使わずにTortoiseSVNを使用してLabViewのソース(つまり、常に変化するバイナリファイル)を管理しています。TortoiseSVN:あるブランチの内容を別のブランチにコピー

誰もが購読して毎日更新を受けることができるリポジトリの "ベータ"ブランチを持っていたいと思います。私は別のブランチを持つ通常のベータ版リリースとは違うと思いますが、このプロジェクトには適切です。

トランクブランチの特定のリビジョンの内容をベータブランチにコピーする最も簡単で簡単な方法は何ですか?基本的には、私がやりたいことは、古い内容のbetaを削除して新しい内容を挿入することです。 Delete + addはうまくいくと思いますが、明らかに最適ではありません。 Mergeはオプションではありません.Tortoiseに、ファイルを削除することを含め、トランクの好意的なすべての競合を自動的に解決させることができない限りです。

更新:なぜ私は削除+追加したくないのですか?私はより洗練された選択肢が欲しい。

  1. この方法を使用すると、ベータツリーの更新の半分が「最後に取り消す」となります。
  2. アップデートはアトミックではないため、誰かが空のリリースを受け取る可能性があります。
  3. 私は試して見たことがありませんが、betaは適切な分岐ではありません。リビジョンログは、毎回「新しい」ファイルなので、複数のリビジョンを一切追跡しないでしょうか?

アップデート2:コミットする前svnは、任意のコマンドを許可しますが、私は亀がこのように動作させることができませんでした。 「削除」を選択した後、コミットするまでスタブディレクトリは残っていました。その時点でブランチを再作成できました。古いタグリビジョンと新しいタグリビジョンの両方に存在する場合、削除のためにディレクトリのマークを解除する方法が必要です。

+0

何か不足していますか、削除しておきたいものをコピーしていませんか? –

+2

いいえ、SVNはトランザクションです - 削除とコピー(追加ではありません)は問題ありません。そして、ベータは適切な枝(またはより良いタグ)になります –

+0

@Unquiet:ああ、私はそれについても考えていませんでした!それを回答として投稿し、私はそれを選択します。 – Potatoswatter

答えて

1

SVNはトランザクションです - 削除とコピー(追加しないでください)は問題ありません。私は 亀が自動的にファイルを削除するなど、トランクの賛成で すべての競合、 を解決するために取得することができない限り、そしてベータ適切なブランチ(またはより良いタグ)だろう

+0

良い点!しかし、Tortoiseは削除をコミットするまで残っているプレースホルダディレクトリが残っているため、このようなトランザクションをサポートしていないようです。だから、私はこれを選択する前にちょっと待つつもりです。 (また、タグはSVNのブランチとして実装されています。 – Potatoswatter

0

ベータ/ *を削除してからtrunk/*をベータ/にコピーしてみませんか?

2

マージはオプションではありません。

私はTortoiseSVNのことは知らないが、あなたがインストールする場合command line clientあなたはbetaブランチの最新trunk変更マージするには、以下のんでした:

cd c:/path/to/my/working/copy/of/beta/branch 
svn merge file:///c:/path/to/my/repository/trunk --accept theirs-full 
svn commit -m "merged latest trunk changes to beta branch" 

--accept theirs-fullオプションは、すべての競合を解決あなたの好きなようにトランクのバージョンを使用してください。

これにはいくつかの利点があります:サブバージョンはrepresentation sharingです。そのため、両方のブランチに保存されているファイルはリポジトリ内で余分なスペースを取らないようにします。また、ユーザーが自分のbeta作業コピーを更新した場合、変更されたファイルだけがワイヤを介して引き出される必要があります。

関連する問題