質問
私は本当に私はリリースが行われた時に教えてマーカーを見ることがしたいです。私は、このようなPVCSやのPerforceなどの他のバージョン管理システムでこれを見てきましたのます。
これはSVNで行うことができますか?私は研究を少しやったし、この種のものがサポートされていないようなので、これまでそれが見えます。
編集
私たちは、リリースごとに別のフォルダに私たちのソースをコピーする必要がありますする必要はありません。これは、の開発マシン上でのファイルの不必要な重複の膨大な量をもたらし、私たちだけに、各リリースのリビジョン番号を記録しています。私は、テキスト文書を使用していることを行うことができます!
EDIT2
私の目標は、私は、各リリースの間に行われたコードの変更のすべてを見ることができるの間で私に私のリリースの年表を示した単一のビューを持つことです。これは、それが簡単にリリースノートをコンパイルできるようになります。
解決
リチャード、タグは非常に近いですが、あなたは、専用のリリースブランチではないかもしれません必要なのだろうか。
このため、初期の「リリース」などと呼ば何かにトランクからブランチを作ります。 その後、通常通りトランク上で動作しますが、リリースの準備ができたら、「リリース」にトランクから変更をマージします。これは、リリースを修正しなければならない唯一の方法である。
あなたがしたい場合は、あなたは、その後、リリースから100%必要はないタグを付けることができます。
しかし、これはあなたを与えるだろうと、その中にトランクのリビジョンのサブセットを持つブランチです。であなたのリリース日を調べます:
svn log --stop-on-copy svn://server/project/branches/release
これは、あなた(改正を含む)のリリース日のリストが表示されます。各リリースに何があるかを確認するに行います:
svn mergeinfo --show-revs=merged "svn://server/project/trunk" "svn://server/project/branches/release"@<release revision>
あなたはまだそれらを解放したくない場合は、桜のリビジョンを除く、リビジョンを選ぶことができますが、それでも、後続を含む - また、このように働くことによって、あなたはトランク内のすべての厳密なシーケンシャルリリースに限定されるものではないことに注意してくださいリビジョンます。
他のヒント
はないような。 SVNでリリースを行うには受け入れの方法は、ご使用のリリースのソースが、それぞれ特定のリリースのためにコピーされ、「タグ」ディレクトリを持つことです。たとえば、/tags/release-0.11
のために...ボックスのうち、事故によってtags
ディレクトリをいじりからあなたを妨げるものではありませんが、一部の人々は、タグを解放するために、偶発的コミットを防ぐために、事前にコミットフックを設定したい。
ここで記述するのまともな記事ですSVNでリリースプロセスます。
私の目標は、単一のビューを持つことです 私は、私のリリースの年表を示します その間に私はすべてを見ることができます 間で行われたコードの変更 リリースごとます。
あなたはトータスSVNのリビジョングラフを調べたことがありますか?あなたは(他の人が指摘したようにいずれかのサーバーまたはワークステーション上で、ファイルのコピーを含まない)、各リリースにタグを付ける場合は、タグが実際のリリースを示すとともに、年代順にすべてのリビジョンを見ることができます。あなたが興味のある二つのリビジョンをhilighting、コンテキストメニューから差分を選択することで、リリースおよび/またはトランクの間でdiffをすることができます。
SVNリポジトリ内のタグのパスにトランクをコピーするこれを達成するための方法です。これは、SVNのコピーなので、SVNリポジトリサーバ上のファイルの重複で終わるものではありません。あなたはトランク以外のsvnのパスをチェックアウトすることを選択した場合にのみ、ローカルで重複ファイルを持っています。その後、彼らはからチェックアウトされたのsvnのパスに戻って、これらの作業コピーにコミットします。
これは、本質的にSVNに分岐の特定従来の実装です。詳細については、オンラインのsvnブックを見てみましょう。
マーカーは、リリースのタグが行われたときに書かれたコミットメッセージ(/タグへのsvnコピー)になります。少なくともそれが使用される最も一般的な方法である。
、バージョン管理ツールは、一般的にこの活動を担当されていません。あなたが探していることはSubversionと対話することができ活動/問題/変更管理ツールです。
そのために、私たちは仕事の私の場所ではJiraを使用して、我々はSubversionのとそれをリンクします。 JIRAは、各リリースの問題が含まロードマップと変更履歴が提供されます。これらの問題のそれぞれは、ソースコード管理の変更へのリンクがあります。したがって、あなたがリリースされたバージョンで、ソースコードの変更をリンクすることができます。
私はそれが独立したこれら2つのツールを維持するために、一般的に、より良いことだと思います。特にもののPERFORCEは、彼らがこれだけ簡単に行うには、2つを結びつけるためにしようとします。 、問題への変更をユーザーにメール送信の問題にコメントを追加し、より良いのJiraのようなソフトウェアの専門一体的に行われている問題に添付ファイルを追加するようないくつかのものがあります。一方JIRAは、ソース...より良いSubversionのようなソフトウェアの専門一体的に処理されマージと分岐、バージョン管理で非常に良いではありません。
完全な開示のために、JIRAはさまざまなレベルの機能性にかかわらないSubversionで同じことを行うことができますなどのBugzilla、Tracの、のIBM Rationalジャズ、同様のJira以外のツールがあります。
SVNブックのトピックを見てみましょう。
タグとブランチは、リポジトリ内の余分なコピーが存在しないことを意味し、「コピーオンライト」です。彼はその理由(すなわちブランチで開発)のためにそれを必要としない限り、一般的に、個々の開発者がローカルコピーを持っている必要はありません。
毎回のリリースごとにタグを付ける場合は、、その後、リポジトリを参照して、タグを見ることができます。上記のリンクは、コマンドラインツールについて直接話が、Windows上でTortoiseSVNのようなGUIツールもあります。あなたはなど、比較を行い、歴史を得ることができます。
のリリースで行った変更を確認するには、あなたはちょうどあなたが戻って前のタグのリビジョン+1したいタグのリビジョンからトランクのログを表示します。それは余分な作業のように聞こえるが、あなたがそれに慣れる非常に単純です。
私たちのビルドツールで、我々はまた戻ってトランクにいくつかのバージョン番号情報を持つファイルをバックコミット、およびコメントは、ビルドのバージョン番号を持っています。あなたのメインコードがトランク内にある場合、これはまた(バージョンコミット間で見て)ビルドである何のためのマーカーとして働くことができます。
1。
は、プロジェクトのために私は、ビルドと呼ばれるSVNのユーザーを作成しました。ビルドマシンはSVNのために、このログインを使用していました。ビルドマシン/プロセスがやったときはいつでも、それはまた、ファイルを更新し、SVNのコミットメッセージをビルドバージョン/ビルドの他の識別子でした。
その後、我々はまた、ビルドのタグを作成しました。この方法では、トランクに我々はとき/彼らは他の変更が散在している場所を構築します見ることができました。
だから、私の提案(それを行うための最も簡単な方法は)ビルド(または何か他のものにしたい)と呼ばれる別のファイルを作成し、それに追加したり、ちょうどあなたのビルドスクリプト/プロセスでそれを変更して、後ろに/それをコミットし、それをチェックすることですコミットメッセージとしてリリースバージョンの名を持ちます。シンプル。それは、あなたの履歴クエリに表示されます。
また、あなたはあなたがSVNの差分を行うことができます比較されているリビジョンを知っている、あなたは二つのリビジョン間で変更されたファイルを見ると、どのようにするかどうか。
あなたの総セットアップ誰かがTortoiseSVNのをmentionnedわかりません。それは決定的に良いスタートです。私は個人的にSubclipseのプラグインでEclipseを使用して、それは私がリビジョン間のグラフィカル環境で差分を実行することができます。限り、あなたはあなたのプロジェクトを持っているとして、あなたが他のリビジョンに任意のリビジョンを比較することができ、そのようにあなたは、ファイルの重複のすべての種類を持っている必要はありません。
また、私たちは通常、各リポジトリ内の3つのディレクトリを設定します。支店、トランクとタグ。誰かが述べたように、タグは、具体的放出を識別するために使用されます。
私は同じ問題に遭遇し、私は私の会社のためにそれを修正しようとしている方法は、トランクに「解放」フォルダを持つことである、このフォルダは、実際の実行可能ファイルまたはどの展開の一部である必要がありますが含まれています。
私は「リリース」フォルダ内の「1.0.0.0」で始まる各リリースのための新しいフォルダを作成しても、ケースに同じリリースフォルダ名すなわち1.0.0.0を使用してコードをタグ付けます。
私はそれはそれを行うための正しい方法ですが、それは私が展開している実行可能ファイルを見つけるために私の問題を解決するかどうかわからない。
を、あなたのリポジトリのルートにある「タグ/枝/幹」の通常のsvn規則に従っている場合、開発者は通常、唯一のダウントランクから、リポジトリ全体をチェックアウトしたくないでしょう。
私はあなたの規定の問題を解決するのに役立つはずです異なったアプローチを提供したいと思います。
私たちは、トータスSVNが付属していますSubWCRevはと呼ばれるユーティリティを使用します。ウェブサイトの場合は、我々はversion.htmlというファイルにこれを入れて - 私たちは、SVNのリビジョン番号をつかみ、それをファイルに貼りビルド後のイベントを持っています。その後、任意の時点で、あなたはSVNの正確なリビジョン番号に(つまり、QA、製品版、または他の環境では現在RELEASのかどうか)あなたのリリースを結びつけることができます。これ以上のタグ付け、これ以上のバージョンのファイルを更新するために、開発者を悩ませていない以上、リリースに含まれているか疑問に思います。
リリースに含まれていているかを決定するためには、そしてちょうどリビジョンXからのリビジョンYにSVNのログをプルアップすることができますし、かなりのリリースドキュメントノートを作るために、文書や編集にコメントをコピーします。同じことが、コードレビューやリリースを差分のための真です。単になど、あなたのversion.html、properties.cs、README.TXTに縛らリビジョン番号を使用する
私はまた、あなたのビルドを保持するために、アーティファクトのリポジトリのいくつかの並べ替えを持つことをお勧めしたいです。あなたは、バージョン番号としてSVNのリビジョン番号を使用するように切り替える場合、あなたは常にあなたがSVNに転がっ各リリースのためにあなたの元のタグやコピーを必要としないことを意味SVNでその正確なリビジョンに戻ることができます。
FYI、
SVNのコピーは、ハードコピー、それだけで変更されたファイル以外のスペースを取りませんので、リンクですされていません。そして、これらのバージョンはとにかくスペースがかかります。だから、すべてのリリースのコピーを作成しても、スペースをとりません。