代码之家  ›  专栏  ›  技术社区  ›  Jonathan Parker

模板文件和源代码管理

  •  1
  • Jonathan Parker  · 技术社区  · 16 年前

    对于存储在源代码管理中的文件,是否有任何方法可以使用SVN Externals(最好是Subversion,但如果其他SCM系统可能或更容易使用,我会感兴趣)。

    这就是我的意思。假设我有一大堆SQL脚本,这些脚本必须合并成一个大的脚本来打包每个版本。如果我可以为整个脚本创建一个文件,然后只链接到其他文件,那么当任何引用的文件在Subversion中发生更改时,该文件将自动得到更新(在SVN更新之后)。我想连接的文件必须是只读的。

    考虑到这一点,更多地拥有太多的文件可能会更容易。一个用于模板定义,另一个用于文件本身。

    可能看起来像这样。

    模板文件(可能是.sql.svntemplate扩展名或其他文件):

    <external file="relative/repository/url/Script1.sql"/>
    <external file="relative/repository/url/Script2.sql"/>
    <external file="relative/repository/url/Script3.sql"/>
    <external file="relative/repository/url/Script4.sql"/>
    

    当然,它不必是XML。

    然后,添加并提交.sql.svntemplate文件时,Subversion将自动生成一个同名的只读文件,但不包含.svntemplate扩展名。

    例如。

    DBScripts.sql.svntemplate
    

    将生成一个只读文件,名为:

    DBScripts.sql
    

    它将包含所有脚本的内容。

    1 回复  |  直到 16 年前
        1
  •  3
  •   Jiri Klouda    16 年前

    你所描述的通常被称为 Derived Object 许多源代码管理系统有不同的处理方法。在最常见的情况下,派生对象是在构建阶段集成新标签时创建的。常见的其他派生对象包括编译对象文件、存档文件和数据库文件。处理派生对象的源代码管理系统的一个例子是IBMRationalClearCase。

    SVN不能很好地处理已实现的派生对象。我建议为预提交操作创建一个make文件。所以以前 Svn签入 您运行“make-f makefile.commit”,它创建/更新所有相关的派生对象。您可以将一个特定的makefile放到每个目录中,并使它们包含子目录中的makefile,因此每当您提交子树时,只要在其目录中运行一个makefile,它就会更新您修改的整个子树中的偏差对象。可以将规则添加到makefile,以便在生成派生对象之后将其设置为只读。

    关于makefile状态,请参见GNU用户 manual . make是一个专门设计用于处理基于源文件修改和依赖项的派生对象创建的工具。