首页 > 解决方案 > SVN 坏文件 *.r52 *.v47

问题描述

我的labview 项目和SVN 有问题。我的 LV 项目由 2 个 cRIO(cRIO1 和 cRIO2)组成,它们将相同的核心代码共享为 svn 中的“common”。发生了什么?如果我在 cRIO1 中更改某些内容并在 SVN 中提交,我会收到一条冲突消息,似乎是由于存在具有相同扩展名(.r52、 .r47)的文件。我的 SVN 项目结构是(在主干下): 在此处输入图像描述

在 cRIO 下,我有经典的 LV 项目结构 在此处输入图像描述

有人对LV,通用代码和SVN有经验吗?

标签: svnlabview

解决方案


发生了什么?

不久前,您将工作副本更新为修订版 47。您和其他人修改了此文件,但其他人将此文件提交给 SVN 的速度更快。

现在,您尝试更新到修订版 52。SVN 不知道如何处理这些更改,并将文件标记为冲突。它创建一个.r52文件,这是来自 SVN 的文件和一个.r47文件,这是您前一段时间从 SVN 获得的文件。

如果文件是二进制文件,那么原始文件就是你更新前的文件。如果文件是文本文件,SVN 将您的更改标记为您的,添加来自修订版 52 的更改,并将它们标记为他们的。也就是SVN修改你的文件!在文件中找到您尝试更新之前的.mine文件内容。

如您所见,您可以手动编辑冲突,但您也可以使用 SVN 使用resolve函数来执行此操作。在 tortoiseSVN 中,右键单击一个目录,然后选择 SVN -> 解决冲突。它将显示所有冲突,您可以选择是否要保留您的修改(我的)或存储库中的修改(他们的)。通常,SVN 会在更新过程中列出冲突的文件,您可以选择要执行的操作。看来你没有这样做...

LabVIEW和版本控制

LV 的版本控制很棘手。大多数文件都是二进制文件,很难将具有不同修改的文件的两个版本合并到包含两者的新文件中。
最大的问题是 LV 在修改文件方面臭名昭著,通常没有明显的原因。这给你留下了很多你没有编辑的文件,但它们被 LV 修改并希望提交给 SVN。最后,你会一直有很多很多冲突,现在不要知道哪个版本是正确的......

您无法完全摆脱这个问题,但您可以通过将编译后的代码与 VI 分开来减少它。默认情况下,VI 包含程序框图(源代码)以及已编译的二进制文件。也就是说,即使框图/前面板没有变化,但必须重新编译,文件被修改。通过分离编译后的代码,将其放入项目目录外的缓存中。这也将文件大小减少了大约 30%。

LV中有一个全局设置来分隔新VI的编译代码,每个VI的属性中都有一个复选框。不幸的是,没有自动的方法可以一次性为整个项目执行此操作。


推荐阅读