Main Content

设置 SVN 源代码管理

MATLAB® 提供了配合 Subversion® (SVN) 沙盒和存储库使用的内置 SVN 集成。由于该实现已内置到 MATLAB,因此无需安装 SVN。内置的 SVN 集成支持安全登录。该集成忽略任何现有的 SVN 安装。

SVN 源代码管理选项

如果要使用随 MATLAB 提供的 SVN 版本,请在从源代码管理中检索文件时,选择源代码管理集成列表中的 SVN。有关说明,请参阅从 SVN 存储库签出。当您使用 MATLAB 内置的 SVN 集成创建新的沙盒时,新沙盒会使用由 MATLAB 提供的 SVN 最新版本。

小心

在使用源代码管理之前,您必须在您的源代码管理工具中注册二进制文件以避免损坏。请参阅使用 SVN 注册二进制文件

如果您需要使用内置版本以外的其他 SVN 版本,您可以使用命令行 SVN 集成(兼容模式) 源代码管理集成选项来创建一个存储库,但是您还必须安装一个命令行 SVN 客户端。

命令行 SVN 集成可与支持命令行界面的任何 Subversion (SVN) 客户端通信。在命令行 SVN 集成(兼容模式)中,如果您尝试将文件或文件夹重命名为包含 @ 字符的名称,会发生错误,这是因为命令行 SVN 将 @ 符号后的所有字符视为 peg 修订版本值。

使用 SVN 注册二进制文件

如果您使用第三方源代码管理工具,则必须将 .mlx.mat.fig.mlapp.mdl.slx.mdlp.slxp.sldd.p 等 MATLAB 和 Simulink® 文件扩展名注册为二进制格式。还要注册 MEX 文件的扩展名,例如 .mexa64.mexmaci64.mexmaca64.mexw64。如果不注册这些扩展名,则当您通过更改行尾字符、扩展标记、替换关键字或尝试自动合并来提交文件时,这些工具可能会损坏您的文件。不论您是在 MATLAB 外部使用该源代码管理工具,还是在未先注册文件格式的前提下尝试从 MATLAB 提交文件,都可能发生损坏。

还要检查其他文件扩展名是否已注册为二进制文件,以避免在签入时损坏。检查并注册文件扩展名,例如 .xlsx.jpg.pdf.docx 等。

如果您使用任何 SVN 版本,包括由 MATLAB 提供的内置 SVN 集成,则必须注册二进制文件。如果未将扩展名注册为二进制,则 SVN 可能向存在冲突的 MATLAB 文件中添加注释并尝试自动合并。为了避免在使用 SVN 时出现此问题,请注册文件扩展名。

  1. 定位您的 SVN config 文件。在以下这些位置中查找文件:

    • Windows® 上的 C:\Users\myusername\AppData\Roaming\Subversion\configC:\Documents and Settings\myusername\Application Data\Subversion\config

    • Linux®macOS 上的 ~/.subversion

  2. 如果您未找到 config 文件,请创建一个新文件。请参阅创建 SVN 配置文件

  3. 如果找到现有的 config 文件,则您以前已经安装了 SVN。编辑 config 文件。请参阅更新现有的 SVN 配置文件

创建 SVN 配置文件

  1. 如果未找到 SVN config 文件,则创建一个包含以下各行的文本文件:

    [miscellany]
    enable-auto-props = yes
    [auto-props]
    *.mlx = svn:mime-type=application/octet-stream
    *.mat = svn:mime-type=application/octet-stream
    *.fig = svn:mime-type=application/octet-stream
    *.mdl = svn:mime-type=application/octet-stream
    *.slx = svn:mime-type= application/octet-stream
    *.mlapp = svn:mime-type= application/octet-stream
    *.p = svn:mime-type=application/octet-stream
    *.mdlp = svn:mime-type=application/octet-stream
    *.slxp = svn:mime-type=application/octet-stream
    *.sldd = svn:mime-type=application/octet-stream
    *.slxc = svn:mime-type=application/octet-stream
    *.mlproj = svn:mime-type=application/octet-stream
    *.mldatx = svn:mime-type=application/octet-stream
    *.slreqx = svn:mime-type=application/octet-stream
    *.sfx = svn:mime-type=application/octet-stream
    *.sltx = svn:mime-type=application/octet-stream
  2. 检查配置文件中是否有您使用的其他文件类型需要注册为二进制,以免签入时遭到损坏。检查 MEX 文件(.mexa64.mexmaci64.mexw64)、.xlsx.jpg.pdf.docx 等文件。在 config 文件中为您需要的每个文件类型添加一行。示例:

    *.mexa64 = svn:mime-type=application/octet-stream
    *.mexw64 = svn:mime-type=application/octet-stream
    *.mexmaci64 = svn:mime-type=application/octet-stream
    *.xlsx = svn:mime-type=application/octet-stream
    *.docx = svn:mime-type=application/octet-stream
    *.pdf = svn:mime-type=application/octet-stream
    *.jpg = svn:mime-type=application/octet-stream
    *.png = svn:mime-type=application/octet-stream
  3. 为文件 config 命名并将其保存到恰当的位置:

    • Windows 上的 C:\Users\myusername\AppData\Roaming\Subversion\configC:\Documents and Settings\myusername\Application Data\Subversion\config

    • Linux 或 macOS 上的 ~/.subversion

当您创建 SVN config 文件后,SVN 将带有这些扩展名的新文件视为二进制文件。如果存储库中已经有二进制文件,请参阅注册存储库中已经拥有的文件

更新现有的 SVN 配置文件

如果找到现有的 config 文件,则您以前已经安装了 SVN。编辑 config 文件以便将文件注册为二进制。

  1. 在文本编辑器中编辑 config 文件。

  2. 找到 [miscellany] 部分,并确认在下行中通过 yes 启用了 auto-props

    enable-auto-props = yes 
    确保此行未被注释掉(也即:此行的开头没有 # 符号)。配置文件中可能含有被注释掉的示例行。如果在此行的开头有 # 字符,请将其删除。

  3. 找到 [auto-props] 部分。确保 [auto-props] 未被注释掉。如果在此行的开头有 # 字符,请将其删除。

  4. [auto-props] 部分的末尾添加以下各行:

    *.mlx = svn:mime-type=application/octet-stream
    *.mat = svn:mime-type=application/octet-stream
    *.fig = svn:mime-type=application/octet-stream
    *.mdl = svn:mime-type=application/octet-stream
    *.slx = svn:mime-type= application/octet-stream
    *.mlapp = svn:mime-type= application/octet-stream
    *.p = svn:mime-type=application/octet-stream
    *.mdlp = svn:mime-type=application/octet-stream
    *.slxp = svn:mime-type=application/octet-stream
    *.sldd = svn:mime-type=application/octet-stream
    *.slxc = svn:mime-type=application/octet-stream
    *.mlproj = svn:mime-type=application/octet-stream
    *.mldatx = svn:mime-type=application/octet-stream
    *.slreqx = svn:mime-type=application/octet-stream
    *.sfx = svn:mime-type=application/octet-stream
    *.sltx = svn:mime-type=application/octet-stream
    
    上述各行将阻止 SVN 向存在冲突的 MATLAB 和 Simulink 文件中添加注释,并阻止其自动合并。

  5. 检查配置文件中是否有您使用的其他文件类型需要注册为二进制,以免签入时遭到损坏。检查 MEX 文件(.mexa64.mexmaci64.mexw64)、.xlsx.jpg.pdf.docx 等文件。在 config 文件中为您使用的每个文件类型添加一行。示例:

    *.mexa64 = svn:mime-type=application/octet-stream
    *.mexw64 = svn:mime-type=application/octet-stream
    *.mexmaci64 = svn:mime-type=application/octet-stream
    *.xlsx = svn:mime-type=application/octet-stream
    *.docx = svn:mime-type=application/octet-stream
    *.pdf = svn:mime-type=application/octet-stream
    *.jpg = svn:mime-type=application/octet-stream
    *.png = svn:mime-type=application/octet-stream
  6. 保存 config 文件。

当您创建或更新了 SVN config 文件后,SVN 会将新文件视为二进制文件。如果存储库中已经拥有文件,请按照注册存储库中已经拥有的文件中介绍的方法为其注册。

注册存储库中已经拥有的文件

小心

更改您的 SVN config 文件不会影响已经提交到 SVN 存储库的文件。如果文件未注册为二进制,请使用 svn propset 将这些文件手动注册为二进制文件。

要将存储库中的文件手动注册为二进制,请通过命令行 SVN 使用以下命令:

svn propset svn:mime-type application/octet-stream binaryfilename

标准存储库结构

使用标准的 tagstrunkbranches 文件夹来创建您的存储库,并从 trunk 签出文件。Subversion 工程推荐使用此结构。请参阅 https://svn.apache.org/repos/asf/subversion/trunk/doc/user/svn-best-practices.html

使用此结构创建存储库后,您可以通过点击源代码管理上下文菜单中的添加标签,向您的所有文件中添加标签。有关详细信息,请参阅文件的标签版本

文件的标签版本

在 SVN 中,您可以使用标签来标识所有文件的特定修订版本。要在 SVN 中使用标签,您需要在存储库中使用标准的文件夹结构,并需要从 trunk 签出您的文件。请参阅标准存储库结构

  1. 在当前文件夹浏览器中点击右键,然后选择源代码管理 > 标记

  2. 指定标签文本并点击提交。标签被添加到文件夹中的每个文件。如果您的存储库中没有 tags 文件夹,则会显示错误。

注意

您可以从源代码管理中检索文件的标记版本,但无法用新的标签来再次对其进行标记。您必须从 trunk 签出以创建新的标签。

强制实施编辑前锁定文件

如果要求用户在编辑文件前记得获取文件锁,请配置 SVN 将带有指定扩展名的文件设置为只读。当您的文件为只读时,您需要在当前文件夹浏览器中点击右键,并选择源代码管理 > 获取文件锁,然后才能对文件进行编辑。此设置将阻止用户在未获取文件锁的情况下编辑文件。当文件有锁时,其他用户就知道该文件正在被编辑,并且您可以避免合并问题。

要强制锁定文件,请修改 SVN config 文件中的条目。要定位您的 SVN config 文件,请参阅使用 SVN 注册二进制文件

  1. 要将带有 .m 扩展名的文件设置为只读,请在 SVN config 文件的 [auto-props] 部分中添加一个属性。如果带有 .m 扩展名的文件不存在条目,请使用 needs-lock 属性进行添加。

    *.m = svn:needs-lock=yes

    如果存在条目,则可以按任意顺序组合属性,但多个条目必须位于一行上并用分号分隔。

  2. 要将带有 .mlx 扩展名的文件设置为只读,请在 SVN config 文件的 [auto-props] 部分中添加一个属性。由于您必须将带有 .mlx 扩展名的文件注册为二进制文件,因此存在此文件类型的条目。按任意顺序将 needs-lock 属性添加到该条目,但必须位于同一行上并用分号分隔。

    *.mlx = svn:mime-type=application/octet-stream;svn:needs-lock=yes 
  3. 重新创建沙盒使配置生效。

在此设置下,您需要选择获取文件锁后才能编辑带有 .m 扩展名的文件。请参阅获取 SVN 文件锁

共享 Subversion 存储库

当您要共享存储库时,需要设置一台服务器。您可以使用 svnserve 或 Apache™ SVN 模块。请参阅网页参考内容:

注意

在生产环境中,不要使用 file:/// protocol 通过文件系统来访问远程存储库。文件协议不安全。并发访问可能会损坏存储库。

相关主题