2010-11-23 12 views
3

私はリビジョン管理システムの初心者ですので、私を許してください。SVN:古いリビジョンのフォルダを作成する

私のプロジェクトは、2つの小さなアプリケーションで構成されていて、どちらも独自のSVNリポジトリにあります。さらに、これらのアプリケーション間で1つのリポジトリ(svn:externals)を共有しています。

新しいバージョンがリリースされたら、そのバージョンのフォルダ(ソース、ドキュメントなどを含む)を作成したいと思います。単一のアプリケーションのためのリポジトリは、このようなものになります。

.UI 
    . "old versions" 
     . 1.0 
     . 2.0 
     . 2.5 
    . trunk (current development version 3.0) 

をだから私の質問は以下のとおりです。

  1. (SVNで)このような構造のための正しい名前は何ですか?
  2. どうすれば作成できますか?
  3. 古いリビジョンをフリーズすることはできますか(そのフォルダの変更を防止する)?
  4. これを実現する方法はありますか?

答えて

3
  1. "tags"はこのフォルダの標準の正しい名前です。
  2. "svn copy"はあなたの友人です。多くの継続的な統合製品には、のオプションがあり、自動的にのタグをビルドします。
  3. はい、「プリコミットフック」でフリーズすることができます(下記参照)
  4. これは標準的な方法です。あまりにも遠すぎると、他のユーザーを混乱させるでしょう。

    @echo off 
    SET SVNLOOK=C:\Program Files\CollabNet Subversion Server\svnlook.exe 
    SET GREP=D:\SVN\REPO\hooks\grep.exe 
    
    REM Prevent changes to tags. 
    ("%svnlook%" changed -t %2 %1 | "%grep%" "^U.*/tags/") && (echo Cannot commit an update to a tag.>&2 && exit 1) 
    
    REM Prevent commits without comments. 
    ("%svnlook%" log -t %2 %1 | "%grep%" "[a-zA-Z0-9]") || (echo You must specify a comment for all actions.>&2 && exit 1) 
    
    exit 0 
    

    を手動でタグを作成するには、次のようなコマンドを使用します:私たちはここに使用


(Windows用)の例プリCOMITフック

svn copy "http://your/repo/UI/trunk" "http://your/repo/UI/tags/v3.0" -m "Tagging v3.0" 
+0

ニースプリコミットスクリプト!私はそれを雇用しなければならないかもしれません、いつもコメントしていない人がいます! – Martin

+0

答えをありがとう! – Routa

+0

@Routa:これが助けになった場合は、投票してください。 :) –

1
  1. ブランチ、タグおよびトランク
  2. あなたのチェックアウトにフォルダを作成してコミットしてから、コマンドラインsvnに "branch/tag"(tortoiseSVN)または "svn copy"を使用してトランクのタグを作成してください。
  3. あなたは、例えばポイントV1、V2、V3 - これは現在の時点で、あなたのリポジトリの記録を保持し、常にこれは、この

支店は、そのあなたがすべき主要な変更のために使用されている達成するための方法である

  • それらに戻って行くことができますトランクではありません(開発者のグループと作業している場合)。ブランチを作成し、毎日ブランチにトランクをマージして、後でマージの競合を回避します。その後、ブランチの大きな変更が完了すると、トランクにマージされます。

    リリースの準備ができたら、トランク全体のタグを作成します。そこから解放する。将来的に特定のバージョンに戻ってきたいのであれば、タグ内にその履歴参照があります。タグは特定の時点でリポジトリをポイントします。たとえば、トランクが35335の場合は25123になります。

  • +0

    私はあなたが "svnコピー"を意味すると思う、ポイント2の "svnタグ"ではない。 –

    +0

    答えをありがとう! – Routa

    +0

    Blairは、TortoiseSVNを指していました。 – Martin

    1

    Subversionのオンラインリファレンスの最初の章をhttp://svnbook.comに移動してください。これにより、バージョン管理とSubversionの両方ですばやく簡単に開始できます。

    あなたがしていることは、Subversionが動作する方法にかなり近いです。それらのディレクトリはまだありますか?

    Subversionの設定では、「タグ」、「ブランチ」、「トランク」ディレクトリを設定します。リポジトリのルートにこれらを設定する人もいれば、各プロジェクトのルートの下に設定する人もいます。

    例えば

    :私が見た

    svn://svn/trunk/proj1 
    svn://svn/trunk/proj2 
    svn://svn/branches/proj1/1.2 
    svn://svn/branches/proj2/3.4 
    

    または

    svn://svn/proj1/trunk 
    svn://svn/proj2/trunk 
    svn://svn/proj1/branches/1.2 
    svn://svn/proj2/branches/3.4 
    

    ほとんどのサイトはそれを最後の方法を行うが、主として使用する(それを最初の方法を行うことの利点があることができsvn:externals、チェックアウトを行ったときのチェックアウトはデフォルトでtrunkとは呼ばれません)。

    あなたがする必要があるすべてはあなたの「古いバージョン」ディレクトリtagsを呼び出して、あなたはすべてのセットだです:あなたがタグ、パニックあなたがたではないを作るのを忘れた場合

    svn://svn/UI/tags/1.0 
    svn://svn/UI/tags/2.0 
    svn://svn/UI/tags/2.5 
    svn://svn/UI/trunk 
    

    ! Subversionに関する素晴らしい点の1つは、リポジトリのリビジョン番号です。これはコミットを行うたびにタグを作成するようなものです。あなたが見ることができるように、あなたが作成するsvn cpコマンドを使用し

    $ svn cp -r1234 svn://svn/UI/trunk svn://svn/UI/tags/2.0 
    

    :あなたは(通常svn logを見て)のリリースをしたときに、リビジョン番号を見つけることができれば、あなたは、あなたのタグを作成するために、そのリビジョンをコピーすることができますタグとブランチ。ところで、タグを認識せずに変更するのはとても簡単です。ほとんどのサイトでは、タグディレクトリの下にコミットを行うほとんどのユーザを防ぐことができます(つまり、タグを作成する必要があることを意味します)。ユーザは(svn cpを介して)タグが作成されると変更します。私はあなたがそれを見てみたい場合は、http://dl.dropbox.com/u/433257/new_svn_hooks.zipにプリコミットフックのPerlバージョンを持っています。

    +0

    返事をありがとう。私はこれらの特定のフォルダを自動的に作成するVisualSVNを使用しています。残念、私はその意味を理解するにはあまりにも愚かであり、ドキュメントから答えを読みました。 :) – Routa

    関連する問題