2012-06-22 101 views
17

我使用Assembla来管理Subversion版本库。我已经开始对我的代码库进行一些重大修改,并且希望创建一个最近生产版本的标签(当我几周前将该版本推向量产时,我忘了这么做)。如何在使用Assembla时从Subversion中的旧版本创建标签?

我目前正在修订版本588中,并且想要创建修订版本577的标签。如何从命令行使用Assembla中的Subversion执行此操作?

假设我Assembla SVN的网址是:https://subversion.assembla.com/svn/my_assembla_svn_directory/

回答

40

您可以随时使用-r参数是指一个特定的版本。这样做时,还可以使用@rev版本固定来确保您在特定版本中引用了Subversion版本的布局。下面将从树干上修订577创建一个标签,并把这种标签REV-1.2

$ 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 

如果没有trunkbranchestags目录,你需要为了移动你的工作创建一些:

$ # 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右侧目录
  • 了标签和分支的完整历史记录很容易看到,你可以看到谁做了更改,什么时候,为什么等等。
  • 显示标签或分支的完整历史记录,如果有人更改了标签或分支,你会看到谁清楚了。
  • 当开发人员在各分支机构上选择并选择要分支或标记的内容时,它会阻止您在许多其他版本控制系统中看到的hel sk分流类型。这使得追踪历史非常困难。 Subversion的计划鼓励您将分支和标签视为影响项目中的所有文件。
6

直起SVN documentation

如果你想建立一个/ calc/trunk的,正是因为它看起来 HEAD修订版本的快照,使它的副本:

$ 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目录永远是您制作时在/ HEAD版本中查看/ trunk目录的 的快照 副本。当然,您可能希望更准确地确定您要复制哪个修订版,以防其他人可能在您未查找时承诺对该项目进行更改 。 因此,如果您知道/ calc/trunk的 修订版901正好是您想要的快照,您可以通过将-r 901传递给svn copy命令来指定它。

(重点煤矿)

相关问题