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

Svn 如何对非编译语言使用Subversion?,svn,build,interpreted-language,Svn,Build,Interpreted Language,我想将Subversion与基于脚本的开发系统结合使用,我想知道与我通常的情况(C#/.NET)有什么不同 正常的日常更新/提交周期可以正常工作,修订的更改跟踪和比较也可以正常工作。我想要一些关于部署处理的建议 使用此脚本系统,不需要任何明确的构建步骤—相反,部署需要将所选脚本直接上载到主机应用程序中 对脚本的更改不一定包含在下一个版本中,它们可能会在下一个版本中发布,或者在下一个版本中发布 在理想的情况下,我希望能够将一个脚本分配到一个给定的版本中,比如说“2009年9月”版本,一旦测试完成,

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

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

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

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

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

更新

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

变更列表不是持久性的(在存储库中不存在),我需要一个解决方案,它将允许以后进行审查

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

我希望有一种方法可以从一个空的分支开始,在这个分支中可以根据需要放置特定的文件修订

更新2

两个示例,展示了如何使用其他工具中的功能来满足这种情况。请注意,我根本不想推广这些工具,因为我想使用subversion,我只是想弄清楚如何使用

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

类似地,使用,我可以将标签应用于文件修订,并仅检出具有该标签的文件

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

这正是我们设计的目的。

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

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


有关更多信息,请参阅Subversion手册的一节。特别是,“功能分支”部分听起来最适合您的情况。

一种解决方案是使用
svn mkdir
(而不是
svn copy
)启动新分支,然后通过
svn copy

有选择地从您的主分支复制所需的文件。我相信,使用svn 1.6,您可以将外部文件指向单个文件。 因此,如果您愿意,您可以创建一个空的树结构,并在其上定义一组外部元素,将您想要的文件引入到该结构中。这将为您提供一种分支的“实时视图”

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

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


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


就这么简单。您根本不需要变更列表、标签或任何复杂的东西,而且任何subversion系统都无法猜出您想要哪些文件。就我个人而言,我会选择branch+delete选项,因为如果您决定要回文件,您可以在以后撤消删除操作。

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

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

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


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

标记是特定修订版的“友好名称”。只有当op正在寻找一种很好的方法来识别添加脚本的版本时,它才会在这种情况下起作用。阅读我的答案中链接到的文章的“创建复杂标记”部分,纳德。+1是的,这是使用复杂标记的一个很好的示例。这样做时使用变更列表可能会证明