我使用Assembla来管理我的Subversion存储库。我已经开始对我的代码库进行一些重大修改,并希望创建一个我最近的生产版本的标签(几周前我将这个版本推向生产时我忘记了这一点。)
我目前正在使用修订版588,并且想要创建修订版577的标记。如何在Assembla中使用Subversion从命令行执行此操作?
假设我的Assembla SVN网址为:https://subversion.assembla.com/svn/my_assembla_svn_directory/
答案 0 :(得分:47)
您始终可以使用-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
如果您没有trunk
,branches
和tags
目录,则需要移动您的工作才能创建一些:
$ # 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/my_assembla_svn_directory@557 \
https://subversion.assembla.com/svn/my_assembla_svn_directory/tags/REL-1.2
除非作为副本,否则Subversion不会实现标记和分支。这并不罕见。 Perforce以相同的方式实现分支。事实上,一旦你习惯它,它就会很好用:
svn ls
答案 1 :(得分: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创建它。)复制后 完成后,新的release-1.0目录永远是一个如何的快照 / trunk目录在您创建时查看了HEAD修订版 副本。当然,您可能希望更精确地确切地说 您复制的修订版,以防其他人可能已提交 你不看时改变项目。 所以如果你知道的话 / calc / trunk的修订版901正好是你想要的快照,你可以 通过将-r 901传递给svn复制命令来指定它。
(强调我的)