代码之家  ›  专栏  ›  技术社区  ›  Bevan

如何对非编译语言使用Subversion?

  •  2
  • Bevan  · 技术社区  · 15 年前

    我想将Subversion与基于脚本的开发系统结合使用,我想知道与我通常的情况(C#/.NET)有什么不同。

    正常的日常更新/提交周期可以正常工作,修订的更改跟踪和比较也可以正常工作。我想要一些关于部署处理的建议。

    使用此脚本系统,不需要任何明确的构建步骤—相反,部署需要将所选脚本直接上载到主机应用程序中。

    对脚本的更改不一定包含在下一个版本中,它们可能会在下一个版本中发布,或者在下一个版本中发布。

    在理想的情况下,我希望能够将一个脚本分配到一个给定的版本中,比如说“2009年9月”版本,一旦测试完成,然后用一个命令取出该版本的所有脚本。

    就我所知,标签和变更列表都不是答案。

    标记实际上与分支相同-它们包含 全部的 默认情况下,您只需选择修订版本即可。

    我希望能有一个从 可以根据需要将特定的文件修订放入其中。

    更新2

    具有 QVCS ,我可以通过将标签应用于文件的特定修订版来实现所需的结果。该标签将保持不变,并附在该文件的修订版上。在任何时候,我都可以执行干净的签出操作,将其放入一个空目录中,并指定只复制具有指定标签的文件。

    同样地 StarTeam ,我可以将标签应用于文件修订,并仅检出具有该标签的文件。

    6 回复  |  直到 6 年前
        1
  •  6
  •   Greg Hewgill    15 年前

    您可以使用Subversion分支管理“未来”版本。当您进行了一项预定于未来版本的更改时,请将其提交到相应的分支。当需要将所有这些将来的特性拉入主干时,合并分支。

    这与将Subversion与编译语言结合使用或用于任何其他目的的工作流并没有太大区别。

    Common Branching Patterns 有关详细信息,请参阅Subversion手册的第节。特别是,“功能分支”部分听起来最适合您的情况。

        2
  •  4
  •   Amber    15 年前

    “在理想的情况下,我希望能够将一个脚本分配到给定的版本中,比如“2009年9月”版本,一旦测试完成,然后用一个命令取出该版本的所有脚本。”

    这正是我想要的 tags 都是为你而设计的。

        3
  •  4
  •   Anders Johannsen    15 年前

    svn mkdir (而不是 svn copy

        4
  •  2
  •   gbjbaanb    15 年前

    我看到了问题-这与SVN无关。您希望将一些文件存储在发布分支中,但不希望将其他文件存储在发布分支中。因此,要么分支整个发布目录,然后删除您不想在其中显示的文件;或者创建一个新的空目录,只复制您想要的文件。

        5
  •  1
  •   Jim T    15 年前

    我相信有了SVN1.6,您可以使用指向单个文件的外部命令。 因此,如果您愿意,您可以创建一个空的树结构,并在其上定义一组外部元素,将您想要的文件引入到该结构中。这将为您提供一种分支的“实时视图”。

    您可以直接从主干引用文件版本,或者您可以分层您的方法并使用发布分支合并特定的修订,然后在“实时视图”的外部引用该发布分支。通过这种方式,您可以通过合并修订来发布功能—保持正常的修订控制和合并历史记录,然后服务器上的svn更新会将这些文件拉入活动结构。

    缺点是很难切换到不同的分支(比如旧标记,因为新版本中存在问题)——您必须手动编辑所有外部定义。如果它们都在同一个目录上,这可能不是一个问题,但是如果你不得不四处寻找它们,这可能是一个痛苦。

    svn中提供了一些关于文件外部的信息 1.6 release notes

        6
  •  0
  •   Nader Shirazie    15 年前

    听起来您正在寻找有关特定脚本的元数据。因此,一种选择是将脚本存储为单独的文件,并使用 svn properties . Svn属性允许您存储与文件关联的键值对。

    例如,要镜像“标签”示例,可以为决定包含在特定版本中的每个文件创建一个属性。在本例中,创建一个值为“true”的“2009年9月”属性。

    然后,在生成部署包时,只能选择具有“2009年9月”属性的文件。

    当您希望跟踪存储库随时间发生的更改,并生成差异以查看这些更改时,使用标记和分支非常有用--但这只是整个存储库的快照。。。