Main Content

设置 SVN 源代码管理

设置随工程提供的 SVN

工程提供了配合 1.9 版 Subversion® (SVN) 沙盒和存储库使用的 SVN。不需要安装 SVN 即可使用此集成,因为它包括了 SVN 的实现。

注意

此集成将忽略任何现有的 SVN 安装。

工程 SVN 支持安全登录。

要使用随工程提供的 SVN 版本,请执行以下操作之一:

  • 在 MATLAB® 的“主页”选项卡上,选择新建 > 工程 > 从 SVN

  • 您也可以在起始页中选择从 SVN 新建工程以从源代码管理进行检索,或者当您向源代码管理添加工程时,在源代码管理工具列表中选择 SVN

有关说明,请参阅:

小心

请将您的工程沙盒文件夹放在本地硬盘上,因为使用网络文件夹存储 SVN 既慢又不可靠。如果使用 Windows® 网络驱动器,SVN 移动操作可能会导致文件浏览器中可见的文件显示不正确的“not existing”状态。

当您使用工程 SVN 创建新的沙盒时,新沙盒会使用工程提供的最新版本的 SVN。

当您的工程处于源代码管理下时,可以使用以下工程功能:

您可以从分支签出,但工程的 SVN 不支持分支合并。可以使用 TortoiseSVN 等外部工具执行分支合并。您可以通过配置 TortoiseSVN 来使用工程工具进行比较和合并,在对模型文件执行差异比较时生成比较报告。请参阅从比较报告合并 Simulink 模型

MATLAB Online™ 不支持 Subversion。

为已安装的 SVN 版本设置工程 SVN

要将工程用于已经安装的早期版本的 SVN,请在已经处于 SVN 源代码管理下的文件夹中创建一个新工程。此工程会检测 SVN。

例如:

  1. Windows 资源管理器中使用 TortoiseSVN 创建沙盒。

  2. 在 MATLAB 中,在该文件夹下创建一个新工程。此工程会检测现有的源代码管理。如果沙盒的版本是 1.6,它将保持为 1.6 版的沙盒。

注意

在使用源代码管理之前,您必须在工具中注册模型文件。请参阅在 Subversion 中注册模型文件

为工程尚未提供的 SVN 版本设置工程 SVN

如果您需要使用高于 SVN 1.9 的版本,可以使用命令行 SVN 集成(兼容模式),但还必须安装一个命令行 SVN 客户端。

注意

仅当您需要使用高于 SVN 1.9 的版本时,才需要选择命令行 SVN 集成(兼容模式)。否则,请使用 SVN 以便获得更多功能、更高的性能,并且不需要安装额外的命令行 SVN 客户端。

命令行 SVN 集成可与支持命令行界面的任何 Subversion (SVN) 客户端通信。

  1. 安装支持命令行界面的 SVN 客户端。

    注意

    TortoiseSVN 不支持命令行界面,除非您选择安装命令行工具的选项。您也可以在安装另一个支持命令行界面的 SVN 客户端后,继续从 Windows 资源管理器中使用 TortoiseSVN。请确保主版本号匹配,比如说,两个客户端都是 SVN 1.7 版。

    您可以从以下网页找到 Subversion 客户端:

  2. 在工程中,选择命令行 SVN 集成(兼容模式)

命令行 SVN 集成(兼容模式) 中,如果您尝试重命名工程中的某个文件,而文件夹名称中包含 @ 字符,则会发生错误,因为命令行 SVN 将 @ 符号之后的所有字符都视为 peg 修订版值。

提示

您可以在工程网页上检查是否有更新的源代码管理集成下载,网址为:https://www.mathworks.com/products/simulink/projects.html

Subversion 中注册模型文件

如果您使用 SVN,包括工程提供的 SVN 集成,则必须注册模型文件。

如果您不将模型文件扩展名注册为二进制,SVN 可能会向存在冲突的 Simulink® 文件中添加注释并尝试自动合并。这样会损坏模型文件,使您不能在 Simulink 中加载模型。

为了避免在使用 SVN 时出现此问题,请注册文件扩展名。

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

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

    • Linux®Mac OS X 上的 ~/.subversion

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

  3. 如果找到现有的 config 文件,则您以前已经安装了 SVN。编辑 config 文件。请参阅更新现有的 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 等文件。在属性文件中为您需要的每个文件类型添加一行。示例:

    *.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 或 Mac OS X 上的 ~/.subversion

当您创建 SVN config 文件后,SVN 会将新模型文件视为二进制文件。

如果模型已经在存储库中,请参阅注册已经在存储库中的模型

更新现有的 SVN config 文件

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

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

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

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

  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 modelfilename
如果您需要安装命令行 SVN 客户端,请参阅为工程尚未提供的 SVN 版本设置工程 SVN

强制 SVN 在编辑之前锁定模型文件

要保证用户在编辑模型文件之前记得获取文件锁,可以配置 SVN 将带有指定扩展名的文件设置为只读。要找到您的 SVN config 文件,请参阅在 Subversion 中注册模型文件

完成此设置之后,仅当您打开工程时 SVN 才将模型文件设置为只读。因此,您需要首先选择源代码管理 > 获取文件锁,才能编辑这些文件。这样做有助于防止用户在未获取文件锁的情况下编辑模型。当文件上带有锁时,其他用户就知道该文件正在被编辑,从而可以避免合并问题。

  1. 要将 SLX 文件设置为只读文件,请在您的 SVN 配置文件中添加一个属性。在将 SLX 文件注册为二进制的 [auto-props] 部分找到以下行:

    *.slx = svn:mime-type= application/octet-stream
    

  2. 在现有 slx 行的末尾添加一个 needs-lock 属性并以分号分隔,如下所示:

    *.slx = svn:mime-type=application/octet-stream;svn:needs-lock=yes 
    您可以按任意顺序组合属性,但多个条目(例如,对于 slx)必须在同一行并用分号分隔。

  3. 重新创建沙盒以使配置生效。

  4. 您需要先选择获取文件锁才能编辑模型文件。请参阅Get SVN File Locks

如果需要解决有关合并的问题,请参阅Resolve Conflicts

共享 Subversion 存储库

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

标准存储库结构

使用标准的 tagstrunkbranches 文件夹来创建您的存储库,并从 trunk 签出文件。Subversion 工程推荐使用此结构。请参阅以下网页:

注意

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

创建具有此结构的存储库后,要为所有工程文件添加标签,请在“工程”选项卡上的“源代码管理”部分点击标记。请参阅Tag and Retrieve Versions of Project Files

管理 SVN 外部引用

要在您的工程中使用位于另一个存储库或同一个存储库的不同部分的文件,请使用 SVN 外部引用。

  1. 在工程中,右键点击工程文件夹并选择源代码管理 > 管理外部引用

  2. 在“管理外部引用”对话框中,点击添加条目。您可以浏览并验证存储库位置、指定相对引用格式、指定子文件夹、选择修订版本(例如 HEAD 节点)等。

  3. 指定外部引用后,点击确定。该工程将在“管理外部引用”对话框中显示外部引用定义。

    也可以在“管理外部引用”对话框中输入或粘贴 svn:external 定义。该工程将应用与 SVN 1.6 版兼容的外部引用定义。

  4. 点击设置验证并应用所做的更改。

  5. 要检索外部文件,请点击更新以更新沙盒。

如果有两个用户修改一个文件夹的 svn:external,可能会发生冲突。要解决冲突,请在“所有文件”视图中找到 .prej 文件并检查冲突详细信息。打开“管理外部引用”对话框并指定所需的 svn:external,标记文件夹冲突已解决,然后提交所做的更改。

相关示例

详细信息