在subversion中标记存储库的一部分

时间:2008-11-20 11:40:43

标签: svn cvs

我来自CVS背景。我目前正在调查使用SVN进行项目。我处理的代码往往位于以下目录结构中。

  

项目\林达\ LIB1

     

项目\林达\ LIB1 \测试

     

项目\林达\ LIB1 \模拟

     

项目\林达\ LIB2

当我标记版本时,在CVS中,我倾向于创建两个标签,一个是“project-release-1”,另一个是“project-release-1-with-tests”。 “project-release-1”标签排除了测试目录和模拟目录以及可能的其他一些文件。我们的想法是,我们经常不将测试源发送给客户端,并通过导出“project-release-1”标签,我们得到客户端的一组源,我们可以发送给他们并通过检查“project-release-1-with-tests”标签,如果需要进行持续开发,我们可以使用它们进行分支。

我如何使用SVN做类似的事情?理想情况下采用可编写脚本的形式;使用SVN我们每个项目都有一个脚本,它将应用这两个标签并通过简单地从测试和模拟目录中删除标签等来创建客户端标签......

我猜测在SVN中我会创建“with tests”标签,然后(不知何故)检查出来,删除测试和模拟目录并创建客户端发布标签?

更新

我决定改变我的工作方式......而不是每个项目设置一个脚本来设置我的旧式双标签我现在每个项目都有一个脚本,它带有标记版本(包括我的东西)不发送给客户)并删除我不发送给客户的东西。完成工作,只需要一个标签。

2 个答案:

答案 0 :(得分:1)

我不知道这是否是“正确”答案,但我可以想到两个选择。

一个。标记和删除:

  1. 将您的/ project / libs目录标记为project-release-1;
  2. 从project-release-1中删除“test”和“mock”目录。 或者,首先使用所有内容创建一个project-release-1-with-tests标记,然后标记(复制)那个目录作为项目发布-1并重复上面的#2。
  3. B中。使用“外部”:

    1. 在标记下创建一个空的project-release-1目录。不要真正标记,只需创建目录。
    2. 编辑该目录的属性,添加名为“svn:externals”的属性。在该属性的值中输入: lib1 -r $ REV url:to / project / libs / lib1 lib2 -r $ REV url:to / project / libs / lib2
    3. 其中$ REV是标记源代码的修订号。 稍后,当您查看“无测试”目录时,您将获得两个“已标记”的目录。

      我认为第一种选择更好,因为分析分支和标签的工具可以更好地理解你所做的事情。

      在旁注中,我想知道为什么你想要无测试标签;为什么打扰你在标签中进行测试呢?

      • 诺姆。

答案 1 :(得分:1)

标签只是一个副本,就像任何其他副本一样。因此,您可以在标记中创建一个空目录,以标记该版本,然后在其中创建两个目录 - 一个用于发布测试,另一个用于没有测试的发布。