如何为基于IDE的项目设置一个Git仓库?

5
我主要从事嵌入式应用(FPGA和微控制器)的开发,对于git和版本控制还比较新手。我已经意识到它的强大之处,并希望为与我合作的同事和朋友设置一些项目。这些项目通常在集成开发环境(IDE)中开发,如MPLAB-X、Code Composer Studio、Libero或Quartus,该环境生成二进制文件、提供后台调试以及其他功能。 在将项目设置为一个让别人可以克隆并开始处理的仓库时,我遇到了一些问题。我发现,大多数建议的.gitignore设置要忽略主要项目文件,以及所有额外的二进制文件和副产品,如.tcl脚本和文本报告。通过忽略这些文件,我发现我正在删除协作者设置相同配置的开发环境所需的所有信息。然而,如果我在存储库中跟踪它们,那么我的存储库就会被不重要的额外文件(通常是大文件)拖累。是否有更好的解决方案来解决这个问题?
2个回答

3
我的规则是:
  • 在检出后需要有一个单独的命令来设置环境
  • 版本控制下的文件在设置命令或构建期间不得更改。

较弱的规则是:

  • 版本控制文件中不应存在冗余信息
  • 进行更改会产生最小差异

我已经配置了按文件类型过滤器,以在提交之前对文件进行规范化。对于QuartusII,这些是:

  • .qpf和.qsf去除了日期戳。这些可以正常加载,Quartus只需编写一个新的文件,然后在下次检入时再次删除它。
  • .qsf通过规范化步骤运行(Quartus有一个明确的“保存规范化项目文件”命令)。
  • 包含IP megafunctions的.vhd文件被减少到恢复信息注释,并由设置脚本重新生成。
  • .qip文件被忽略(这些将随着megafunction一起重新生成)

当然,这会带来一些初始开销,并且很难设置,但这使我能够轻松地查看单个提交作为差异。

稍后引入这些过滤器可以通过git filter-branch实现,因此我不会让它阻碍开发,并只检查所有内容,直到过滤器就位。


非常好的答案。我需要学习如何使用这些按文件类型过滤器。如果您能指向任何教程,我将不胜感激。 - kjgregory

0

一般的解决方案是:

  • 包含任何能够重建那些额外大的(通常是二进制)文件的内容
  • 包含对构件库(如Nexus)或其他你想要存储多个版本的大文件的引用

跟踪重建脚本或引用是保持您的仓库作为管理工具的两种方法。


请澄清一下,您是建议我要么A)跟踪最小的项目文件集,以便从新克隆中打开项目,要么B)归档整个项目(例如将其压缩),并将其提供为新设计师的起点,然后他们会通过git同步到最新提交? - kjgregory
@user2635036 绝对没错:对于源代码管理工具来说,zip 格式并不是很兼容。 - VonC
我对于仓储库中的参考文献还不太理解。提供的链接使用了很多我不熟悉的术语,让我感到困惑。 - kjgregory
@user2635036 要了解 Git 与 Nexus 的引用结构(即源代码控制和构件管理),关键的概念是:请参见我之前的回答https://dev59.com/ZGYr5IYBdhLWcg3wq7-I#13490800(以及其相关链接)。 - VonC

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接