2012-06-22 8 views
17

私はSubversionリポジトリを管理するためにAssemblaを使用します。私はコードベースのいくつかの主要な改訂を開始し、最新の生産リビジョンのタグを作成したいと思います(私は数週間前にそのリビジョンライブをプロダクションにプッシュしたときに忘れてしまった)。Assemblaを使用しているときにSubversionの古いリビジョンからタグを作成するにはどうすればよいですか?

私は現在、リビジョン588にあり、リビジョン577のタグを作成したいと考えています。アセンブラ内のSubversionを使用してコマンドラインからこれを行う方法はありますか?

私Assembla SVNのURLがあると仮定します。SVN documentationからストレートhttps://subversion.assembla.com/svn/my_assembla_svn_directory/

答えて

40

あなたは常に特定のリビジョンを参照するために-rパラメータを使用することができます。そうするときに、@revリビジョンの固定を使用して、特定のリビジョンのSubversionリビジョンのレイアウトを参照していることを確認することもできます。あなたがtrunkbranches、およびtagsディレクトリを持っていない場合、あなたがするためにあなたの仕事を移動する必要があります

$ svn cp -r 577 https://subversion.assembla.com/svn/my_assembla_svn_directory/trunk 
    https://subversion.assembla.com/svn/my_assembla_svn_directory/tags/REV-1.2 

:以下は、リビジョン577のトランクからタグを作成し、このタグREV-1.2を呼び出しますいくつかを作成します。

$ # Move the current directory to the "trunk" 
$ svn cp https://subversion.assembla.com/svn/my_assembla_svn_directory \ 
    https://subversion.assembla.com/svn/my_assembla_svn_directory/trunk 

$ # Make a corresponding tags and branches directories too 
$ svn mkdir https://subversion.assembla.com/svn/my_assembla_svn_directory/branches 
$ svn mkdir https://subversion.assembla.com/svn/my_assembla_svn_directory/tags 

$ # Now, we can delete the old location. Let your developers know this, 
$ # so they're not surprised by this and will be able to do a "svn relocate" 
$ svn delete https://subversion.assembla.com/svn/my_assembla_svn_directory/ 

$ # Whoops. I should have done the tagging when I had a chance. 
$ #Oh well, we'll use the `@rev` pinning: 

$ svn -r557 cp https://subversion.assembla.com/svn/[email protected] \ 
     https://subversion.assembla.com/svn/my_assembla_svn_directory/tags/REL-1.2 

Subversionはコピーとして以外分岐とをタグ付けを実装していません。これは珍しいことではありません。 PERFORCEは同じように分岐を実装します。実際には、あなたがそれに使用得れば、それは本当にうまく動作します:

  • それは(単にタグとブランチのsvn ls
  • 右ディレクトリの完全な履歴を行い、有効なブランチやタグを簡単に確認することができます誰が変更を行ったのか、いつ、なぜ、誰が、誰が変更を行ったのかを見ることができます。
  • タグや分岐の完全な履歴が表示されます。
  • 開発者がさまざまなブランチとトランクを分岐したりタグ付けしたりするときに、他の多くのバージョン管理システムで見られるhelter-skelterタイプの分岐を避けます。そのため、履歴を追跡することは非常に困難です。 Subversionの計画では、ブランチとタグをプロジェクト内のすべてのファイルに影響を及ぼすと考えるようにしています。
6

あなたはそれが にHEADリビジョンに見えるとおりに/ CALC /トランクのスナップショットを作成する場合は、作ります

$ svn copy http://svn.example.com/repos/calc/trunk \ 
      http://svn.example.com/repos/calc/tags/release-1.0 \ 
      -m "Tagging the 1.0 release of the 'calc' project." 

Committed revision 902. 

この例では、/ calc/tagsディレクトリが既に存在することを前提としています。 ( の場合は、svn mkdirを使用して作成することができます)。 のコピーが完了すると、新しいリリース1.0ディレクトリは永遠に、 の/ trunkディレクトリが作成時のHEADリビジョンでどのように見えるかのスナップショットです コピー。もちろん、正確には のリビジョンをコピーしてください。あなたが見ていないときに他の誰かがプロジェクトに変更をコミットしている可能性があります。 /calc/trunkのリビジョン901が正確に目的のスナップショットであることがわかっている場合、 -r 901をsvn copyコマンドに渡すことで指定できます。

(強調鉱山)

関連する問題