2

スクリプト ベースの開発システムで Subversion を使用したいと考えており、通常の状況 (C#/.NET) とは異なる方法を考えていました。

リビジョンの変更追跡と比較と同様に、通常の日々の更新/コミット サイクルは正常に機能します。アドバイスが欲しいのは、展開の処理に関するものです。

このスクリプト システムでは、明確なビルド手順は必要ありません。代わりに、デプロイには、選択したスクリプトをホスト アプリケーションに直接アップロードすることが含まれます。

スクリプトへの変更は、必ずしも次のリリースに含まれるとは限りません。それ以降のリリースまたはその次のリリースに予定されている場合があります。

理想的な世界では、テストが完了したら、特定のリリース、たとえば「2009 年 9 月」のリリースにスクリプトを割り当て、そのリリースのすべてのスクリプトを 1 つのコマンドで引き出すことができるようにしたいと考えています。

アップデート

私が知る限り、タグも ChangeLists も答えにはなりません。

ChangeList は永続的ではなく (リポジトリには存在しません)、後でレビューできるソリューションが必要です。

タグは実質的にブランチと同じです。タグにはデフォルトですべてのファイルが含まれており、リビジョンを選択するだけです。

必要に応じて特定のファイル リビジョンを配置できる空のブランチから開始するアプローチを期待しています。

更新 2

他のツールの機能を使用してこの状況に対処する方法を示す 2 つの例。これらのツールを宣伝しようとしているわけではないことに注意してください。Subversion を使用したいので、方法を見つけようとしているだけです。

QVCSを使用すると、ファイルの特定のリビジョンにラベルを適用することで、目的の結果を得ることができます。そのラベルはそのまま残り、そのファイルのそのリビジョンに添付されます。いつでも空のディレクトリにクリーン チェックアウトを実行し、指定したラベルの付いたファイルのみをコピーするように指定できます。

同様に、StarTeamでは、ファイル リビジョンにラベルを適用し、そのラベルが付いたファイルのみをチェックアウトできます。

4

6 に答える 6

6

Subversion ブランチを使用して、「将来の」リリースを管理できます。将来のリリースを予定している変更を行う場合は、適切なブランチにコミットしてください。これらの将来の機能をすべてトランクにプルするときが来たら、ブランチをマージします。

これは、Subversion をコンパイル済み言語で使用するワークフローや、その他の目的で使用するワークフローとそれほど違いはありません。

詳細については、Subversion ブックのCommon Branching Patternsセクションを参照してください。特に、「機能ブランチ」セクションは、状況に最も適しているように思えます。

于 2009-08-10T03:28:19.590 に答える
4

svn mkdir1つの解決策は、 (の代わりに)を使用して新しいブランチを開始し、svn copy必要なファイルをメインブランチから選択的にコピーすることですsvn copy

于 2009-08-10T06:12:43.720 に答える
4

「理想的な世界では、テストが完了したら、特定のリリース、たとえば「2009 年 9 月」のリリースにスクリプトを割り当て、そのリリースのすべてのスクリプトを 1 つのコマンドで取得できるようにしたいと考えています。 "

これはまさにタグが設計されているものです。

于 2009-08-10T03:26:07.630 に答える
2

問題が発生しました-SVNとは関係ありません。一部のファイルをリリース ブランチに保存したいが、他のファイルは保存したくない。したがって、リリース ディレクトリ全体を分岐してから、そこに表示したくないファイルを削除します。または、新しい空のディレクトリを作成して、必要なファイルだけをコピーします。

それはとても簡単です。変更リストやタグ、または複雑なものはまったく必要ありません。Subversion システムは、必要なファイルを推測できません。個人的には、ファイルを元に戻したい場合は、後で削除を元に戻すことができるので、ブランチ + 削除オプションを実行します。

于 2009-08-10T08:23:03.663 に答える
1

svn 1.6 では、個々のファイルを指す外部変数を使用できると思います。したがって、必要に応じて、空のツリー構造を作成し、その構造に必要なファイルを取り込む一連の外部オブジェクトを定義できます。これにより、ブランチの一種の「ライブビュー」が得られます。

ファイル バージョンをトランクから直接参照することもできます。または、アプローチを階層化し、リリース ブランチを使用して特定のリビジョンをマージし、「ライブ ビュー」の外部でそのリリース ブランチを参照することもできます。このようにして、リビジョンをマージして機能をリリースします。通常のリビジョン管理とマージ履歴を維持し、サーバー上の svn-update がそれらのファイルをライブ構造に取り込みます。

欠点は、別のブランチに切り替えるのが難しいことです (新しいリリースの問題のために古いタグなど)。すべての外部定義を手動で編集する必要があります。それらがすべて同じディレクトリにある場合、これは問題にならないかもしれませんが、それらを探し回る必要がある場合は面倒になる可能性があります。

ファイルの外部に関する情報は、svn 1.6 リリース ノートで入手できます。

于 2009-08-10T08:11:58.317 に答える
0

特定のスクリプトに関するメタデータを探しているようです。したがって、1つのオプションは、スクリプトを個別のファイルとして保存し、svnプロパティを使用することです。Svnプロパティを使用すると、ファイルに関連付けられたキーと値のペアを保存できます。

たとえば、「ラベル」の例を反映するために、特定のリリースに含めることにしたファイルごとにプロパティを作成できます。この場合、値が「true」の「September2009」プロパティを作成します。

その後、展開パッケージを生成するときに、「2009年9月」プロパティを持つファイルのみを選択できます。

タグとブランチの使用は、リポジトリへの変更を経時的に追跡し、それらの変更が何であるかを確認するために差分を生成する場合に役立ちますが、これはリポジトリ全体のスナップショットです...

于 2009-08-11T03:59:56.113 に答える