3

外部 Subversion サーバーなしで TortoiseSVN を使用して、LabView ソース (つまり、絶えず変化するバイナリ ファイルの大規模なコレクション) を管理しています。

誰でもサブスクライブして毎日の更新を取得できる、リポジトリの「ベータ」ブランチが必要です。これは通常の別ブランチのベータ リリース シリーズとは異なると思いますが、このプロジェクトには適しています。

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

更新:削除と追加をしたくない理由を何人かの人が尋ねてきました。よりクリーンな代替手段が欲しいです。

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

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

4

3 に答える 3

2

ファイルの削除を含め、Tortoise にすべての競合をトランクに有利に自動的に解決してもらうことができない限り、マージはオプションではありません。

TortoiseSVN についてはわかりませんが、コマンド ライン クライアントをインストールすると、次のようにして最新のtrunk変更をbetaブランチにマージできます。

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オプションは、必要に応じてトランクのバージョンを使用してすべての競合を解決します。

これにはいくつかの利点があります: Subversion は表現の共有を行うため、両方のブランチに保存されたファイルはリポジトリで余分なスペースを取りません。また、ユーザーがbeta作業コピーを更新するときは、変更されたファイルのみをネットワーク経由でプルする必要があります。

于 2010-12-19T21:43:55.260 に答える
1

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

于 2010-12-17T23:14:35.590 に答える
0

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

于 2010-12-17T16:38:10.140 に答える