非コンパイル言語に Subversion を使用するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/1252987

  •  12-09-2019
  •  | 
  •  

質問

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

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

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

スクリプトへの変更は、必ずしも次のリリースに含まれるわけではありません。変更は、その次のリリース、またはその次のリリースに予定されている可能性があります。

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

アップデート

私の知る限り、タグも変更リストも答えにはなりません。

ChangeList は永続的ではない (リポジトリに存在しない) ため、後からレビューできるソリューションが必要です。

タグは事実上ブランチと同じであり、タグには次のものが含まれます。 全て デフォルトではファイルがあり、どのリビジョンを選択するかだけです。

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

アップデート 2

他のツールの機能を使用してこの状況にどのように対処できるかを示す 2 つの例。私は Subversion を使用したいので、これらのツールを宣伝するつもりは全くありません。ただその方法を考えているだけであることに注意してください。

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

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

役に立ちましたか?

解決

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

まさにこれです タグ のために設計されています。

他のヒント

Subversion ブランチを使用して「将来の」リリースを管理できます。将来のリリースに向けた変更を行った場合は、適切なブランチにコミットしてください。将来の機能をすべてトランクに取り込む時期が来たら、ブランチをマージします。

これは、コンパイル言語で Subversion を使用する場合や、実際には他の目的で使用する場合のワークフローとそれほど変わりません。

を参照してください。 一般的な分岐パターン 詳細については、Subversion 本のセクションを参照してください。特に、「機能ブランチ」セクションが状況に最も適していると思われます。

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

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

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

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

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

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

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

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

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

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

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top