5

我主要使用嵌入式应用程序(FPGA 和微控制器),而且我对 git 和版本控制一般来说还很陌生。我来了解它的力量,并想建立一些我的项目供同事和朋友与我合作。这些项目通常在集成开发环境 (IDE) 中开发,例如 MPLAB-X、Code Composer Studio、Libero 或 Quartus,它们可以生成二进制文件、提供后台调试和其他功能。我在其他人可以克隆它并开始工作的存储库中设置项目时遇到了一些麻烦。我发现大多数推荐的 .gitignore 设置让您忽略主项目文件以及所有额外的二进制文件和副产品,例如 .tcl 脚本和文本报告。忽略这些,我发现我正在删除协作者设置具有相同配置的开发环境所需的所有信息。但是,如果我在存储库中跟踪它们,那么我的存储库就会陷入不重要的额外文件(通常是大文件)中。这个问题有更好的解决方案吗?

4

2 回答 2

2

我的规则是:

  • 结帐后需要一个命令来设置环境
  • 在执行 setup 命令或构建期间,版本控制下的文件可能不会更改。

较弱的规则是:

  • 版本控制文件中不应有冗余信息
  • 做出改变会导致最小的差异

我配置了每个文件类型的过滤器,在签入前对文件进行规范化。对于 QuartusII,这些是:

  • .qpf 和 .qsf 已删除日期戳。这些加载很好,Quartus 只是写一个新的,然后在下次签入时再次删除。
  • .qsf 通过规范化步骤运行(Quartus 有一个明确的“保存规范化项目文件”命令)。
  • 包含 IP 宏功能的 .vhd 文件被简化为恢复信息注释,并由安装脚本重新生成。
  • .qip 文件被忽略(这些文件与宏功能一起重新生成)

诚然,有一个初始开销,这很难设置,但这让我可以轻松地查看单个提交作为差异。

稍后引入这些过滤器是可能的git filter-branch,所以我不会让它阻碍开发,只需检查所有内容,直到过滤器到位。

于 2014-04-11T12:53:24.303 回答
0

一般的解决方案是:

  • 包括任何能够重建那些超大(通常是二进制)文件的东西
  • 包括对工件存储库(如 Nexus)的引用或您希望能够存储这些大文件的多个版本的任何其他引用

跟踪重建脚本或引用是使您的存储库成为管理工具的两种方法。

于 2014-04-09T05:32:16.670 回答