复杂的SVN结账程序?

时间:2010-01-22 14:46:34

标签: eclipse svn subversive

我有一个像这样配置的存储库:

+---CollectionA
|   \---project1
|       \---trunk
|           \---sourcecode
|       \---tags
|           \---rel-1
|   \---project2
|       \---trunk
|           \---sourcecode
|       \---tags
|   \---project3
|       \---trunk
|           \---sourcecode
|       \---tags
|           \---rel-1

我想检查标记为rel-1的任何项目作为该项目。在这种情况下,我会在工作区中获得project1project3,但不会project2

所有projectN都是Eclipse Java项目。

我正在使用Eclipse / Subversive,但如果需要,我可以使用Tortoise或命令行(windows)。

编辑:目前,为了做到这一点,我将不得不通过我的30个项目并分别检查每个标签。有没有办法在不经过每个项目的情况下这样做?

4 个答案:

答案 0 :(得分:2)

我认为您需要编写命令行脚本才能执行此操作。使用Tortoise或集成的IDE / SVN工具我无法做到这一点,因为这是一种不常见的(根据我的经验)类型的结账操作。

您可以在命令行上询问svn是否存在使用 svn list 命令存在的目录。

然后你可以检查输出(如果找不到目录,它可能返回一个非零值,或者你可以解析输出流)以确定标记是否存在。将包含标记的项目添加到列表中,然后签出这些项目。

这样的事情:

For each project in myProjects:
   exec "svn list " myRepositoryPath + "/" + myProject + "/tags/directory"

答案 1 :(得分:1)

我们使用脚本来实现您正在寻找的效率。创建一个通用签出脚本,该脚本查找包含要为每个模块签出的标记/分支/主干名称的第二个清单文件。

我已经玩弄了创建一个包含“项目”目录的模块的想法,这个目录带有项目模块组合的特定标签/分支/中继的外部,但我从来没有去做过。

答案 2 :(得分:1)

如果您打算这么做,可以在存储库中创建另一个目录,并为其提供svn:externals属性。将所有相关项目列为外部。然后,当您签出新目录时,您将在其中检出所有项目。

答案 3 :(得分:0)

为了补充以前的答案,您可以使用脚本创建Eclipse Team Project Set文件,以便一次直接导入所有项目。 无法找到对“psf文件格式”的直接引用,但您将获得this example的想法并检查eclipse帮助。