1

我来自 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”标签,然后(不知何故)检查出来,删除测试和模拟目录并创建客户端发布标签?

更新

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

4

2 回答 2

2

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

A. 标记和删除:

  1. 将您的 /project/libs 目录标记为 project-release-1;
  2. 从 project-release-1 中删除“test”和“mock”目录。或者,首先创建一个包含所有内容的 project-release-1-with-tests 标记,然后将该目录标记(复制)为 project-release-1 并重复上面的#2。

B. 使用“外部”:

  1. 在标签下创建一个空的 project-release-1 目录。不要真正标记,只需创建目录。
  2. 编辑该目录的属性,添加一个名为“svn:externals”的属性。在该属性的值中输入: lib1 -r $REV url:to/project/libs/lib1 lib2 -r $REV url:to/project/libs/lib2

其中 $REV 是标记源代码的修订号。稍后,当您检查“无测试”目录时,您将获得两个“标记”目录。

我相信第一个选项更好,因为分析分支和标签的工具将更好地理解您所做的事情。

在旁注中,我想知道您为什么想要无测试标签;为什么标签中有测试会让您感到困扰?

  • 诺姆。
于 2008-11-20T12:14:01.600 回答
1

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

于 2008-11-22T07:10:54.413 回答