在我的开发环境(LabVIEW)中,源文件(称为维斯)是相互链接的。也就是说,每个方法调用都是一个VI调用,因此它们在任何给定项目中都紧密地相互依赖。如果缺少任何相关的VI,则LabVIEW将不会加载需要进行差异的VI。这些维斯不是文本/脚本文件,而是二进制文件。LabVIEW对LabVIEW项目中的所有依赖项使用相对文件路径引用。
我使用LabVIEW自己的diff工具作为sourcetree中的外部diff工具,它对独立的维斯非常有效,它们之间没有调用。
然而,当我对一个有依赖维斯的VI进行Git Diff时,会出现一个问题。由于sourcetree在diff期间只将原始VI复制到临时位置,并且由于sourcetree不会复制repo中的其他依赖文件,因此LabVIEW找不到依赖文件,因此diff失败。
有没有什么方法可以配置这样的东西来克服这个问题?
- 在一个临时的位置做一个完整的repo的克隆,而不是一个单独的文件,这样LabVIEW就可以区分?
- 让sourcetree将远程VI(与之不同)克隆到与本地文件相同的位置,以便所有依赖项仍然完整。
1条答案
按热度按时间6rqinv9w1#
我不熟悉sourcetree,但一般来说,你会想在同一个目录下用不同的名字来区分一个控件/vi。我使用TortoiseSVN/TortoiseGit,它向Windows资源管理器添加了各种右键单击“diff with...”选项。您可能需要configure LVDiff as your diff viewer,之后这些工具将处理临时文件重命名,您将能够以合理的方式下拉和可视化差异。
但是,必须说LabView在源代码控制方面做得不好。默认情况下,它将编译后的目标代码存储为源代码文件(
.vi/.ctl
)的一部分,这可能会导致许多“仅重新编译”的修改使变更集变得混乱。我建议将目标代码存储在源代码树之外(遗憾的是,不是默认的),这将最大限度地减少这个问题。要关闭此功能,请选中Tools -> Options -> Environment -> Separate compiled code from new files
框,它将编译后的目标代码存储在隐藏的本地目录中。这将使新加入团队的工程师的第一次加载速度变慢,但这是非常值得的。由于所有现有代码中可能都有目标代码,因此您需要(在与所有相关人员协调后)将目标代码从所有现有维斯中剥离出来,并对生成的“仅源代码”文件进行大量提交。你可以使用类似这样的代码:
VI snippet containing code to remove object code from LabView source
祝你好运!