如何更改 diff 源文件在 sourcetree 或 git 中的位置?

问题描述 投票:0回答:1

在我的开发环境 (LabVIEW) 中,源文件(称为 VI)是相互链接的。即,每个方法调用都是一个 VI 调用,因此它们在任何给定项目中都紧密依赖于彼此。如果缺少任何依赖VI,则LabVIEW将不会加载需要比较的VI。这些VI不是文本/脚本文件,而是二进制文件。 LabVIEW 对 LabVIEW 项目中的所有依赖项使用相对文件路径引用。

我使用 LabVIEW 自己的 diff 工具作为源代码树中的外部 diff 工具,它对于独立且相互之间没有调用的 VI 非常有用。

但是,当我对具有依赖 VI 的 VI 进行 Git Diff 时,会出现问题。由于sourcetree在diff期间仅将原始VI复制到临时位置,并且sourcetree不会复制存储库中的其他相关文件,因此LabVIEW找不到相关文件,因此diff失败。

有什么方法可以配置类似的东西来解决这个问题?

  • 在临时位置对存储库进行完整克隆,而不仅仅是单个文件,以便 LabVIEW 可以比较?
  • 让 sourcetree 将远程 VI(经过比较)克隆到与本地文件相同的位置,以便所有依赖项仍然完好无损。
git version-control atlassian-sourcetree labview git-diff
1个回答
0
投票

我不熟悉 sourcetree,但一般来说,您会希望在同一目录中使用不同的名称来比较 control/vi。我使用 TortoiseSVN / TortoiseGit,它向 Windows 资源管理器添加了各种右键单击“与...比较”选项。您需要将 LVDiff 配置为您的差异查看器,之后这些工具将处理临时文件重命名,您将能够以合理的方式下拉和可视化差异。

但是,必须指出的是,LabView 与源代码控制的配合不太好。默认情况下,它将编译后的目标代码存储为源代码文件的一部分 (

.vi/.ctl
),这可能会导致许多“仅重新编译”修改使变更集变得混乱。我建议将目标代码存储在源代码树之外(遗憾的是,不是默认值),这将最大限度地减少此问题。要继续关闭此功能,请选中
Tools -> Options -> Environment -> Separate compiled code from new files
框,该框会将编译后的目标代码存储在隐藏的本地目录中。对于加入团队的新工程师来说,这将使首次加载速度变慢,但这是非常值得的。

由于所有现有代码中可能都包含目标代码,因此您需要(在与所有相关人员协调后)从所有现有 VI 中删除目标代码,并对生成的“仅源代码”文件进行大量提交。您可以使用类似这样的代码:

VI snippet containing code to remove object code from LabView source

祝你好运!

© www.soinside.com 2019 - 2024. All rights reserved.