主要内容

设置 SVN 源代码管理

您可以使用 MATLAB® 中的 Subversion® (SVN) 源代码管理来管理您的文件并与其他人协作。有关详细信息,请参阅Work with Files Under SVN in MATLAB

在使用 SVN 之前,请按照以下步骤为 MATLAB 进行设置:

  • (推荐)使用标准 SVN 存储库结构。

  • (所有系统都需要)用 SVN 注册您的二进制文件以避免文件损坏。

  • (可选)强制实施编辑前锁定文件。

使用标准 SVN 存储库结构

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

使用 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. 如果您无法找到 SVN config 文件,请按照创建 SVN 配置文件部分中的步骤创建一个新文件。

  3. 如果找到现有的 SVN config 文件,则您以前已经安装了 SVN。按照更新现有的 SVN 配置文件部分中的步骤编辑 config 文件。

创建 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 配置文件

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

  1. 在文本编辑器中编辑 SVN 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 中使用 svn propset 手动将该文件注册为二进制文件。

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

强制实施编辑前锁定文件

您可以配置 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. 重新创建工作文件夹以使配置生效。

在您强制执行文件锁定后,用户在编辑文件之前必须对文件加锁。有关详细信息,请参阅获取 SVN 文件锁

共享 Subversion 存储库

要共享 subversion 存储库,请使用 Apache™ SVN 模块设置服务器。有关详细信息,请参阅https://svnbook.red-bean.com/en/1.7/svn-book.html#svn.serverconfig.httpd

注意

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

  • MATLAB 不支持使用 svn+ssh:// protocol 与远程存储库交互。

另请参阅

主题