在我最近的大多数项目中,我一直在使用Flutter 版本管理(FVM)来管理Flutter 版本.我注意到,.fvm目录通常列在.gitignore中,因此不会在Ffltter项目库中进行跟踪,这是有意义的--没有必要将整个Ffltter SDK保持在版本控制中.

排除整个.fvm目录也排除了.fvm/fvm_config.json文件.我很想知道为什么它没有被排除在.gitignore之外(例如!.fvm/fvm_config.json ),考虑到将其包含在源代码控制中的明显好处:

  1. 一百:该文件确保所有在项目中工作的开发人员使用相同的Flutter版本,减少兼容性问题和"它在我的机器上工作"问题.

  2. Ease of Setup:新团队成员或贡献者可以通过运行fvm install来快速设置他们的开发环境,因为将自动安装正确的Flutter 版本.

  3. Convenient Updates:可以通过此文件轻松管理Flutter 版本的更新,确保所有团队成员在获取最新代码时同时进行更新.

  4. Non-Intrusive:对于不使用FVM的开发人员,此文件不会干扰他们现有的工作流程或Flutter 设置.

考虑到这些好处,在源代码控制中包含.fvm/fvm_config.json似乎是合乎逻辑的.然而,我观察到这并不是一种常见的做法.这背后有没有具体的原因?是否存在我忽略的缺点或潜在问题,从而证明将其排除在版本控制之外是合理的?所需的Flutter 版本也可以包括在文档中(例如自述文件或项目维基页面),但我看不出将其放在配置文件中只用一个命令安装有什么好处.

推荐答案

我认为这很大程度上取决于团队/个人的个人喜好.您是对的,如果我们从gitignore中排除该文件,那么每个人都将拥有正确的FVM配置.我认为这种方法的问题是,如果您想要在自己的分支中添加一个单独的功能,而此分支需要运行特定版本的Fwing,而您出于某种原因将此版本合并到dev/main/prod分支中,则会覆盖每个人的运行版本.此外,如果每个人都可以推送自己的版本,那么合并冲突会更多.一些开发人员希望灵活处理他们使用的版本.有些还使用定义Flutter 版本的特定CI/CD管道;在这种情况下,在fvm_config.json中指定什么并不重要.

但是,正如前面提到的,它因团队/项目而异. 做最适合你的事.例如,我发现这本Flutter 翼手册乍一看似乎很好,提供了许多好的最佳实践.在FVM排除类别中,他们还从gitignore中排除了fvm_config.json.

Only commit that json file, the sdk symlink should not be included. To do that add to gitignore:

.fvm/*
!.fvm/fvm_config.json

手册链接:https://infinum.com/handbook/flutter/basics/flutter-version-manager

Flutter相关问答推荐

如何让GridView.builder用另外两个小部件来占据屏幕的剩余部分

Flutter -如何将导航轨道标签靠左对齐?

如何确定Flutter 中的文本 colored颜色 ?

使用Ffltter CREATE创建项目时,androidManifest.xml中缺少包属性

如何将 Flutter 项目迁移到具有多个插件的 Gradle 8?

构建上下文不能跨异步间隙使用

Flutter:如何设置 PersistentFooterButtons 背景?

Flutter 未处理的异常 - 对 null 值使用 Null 判断运算符

如何从flutter连接PostgreSQL数据库?

在Flutter中为容器实现线性渐变背景动画

从所有设备注销,因为用户帐户已从 firebase flutter 中删除

Flutter 自定义对齐

如何使这种相机叠加在Flutter 中?

在向 Google Route API 发送 HTTP Post 请求期间发生错误,

如何在 flutter 中同时使用 ButtonStyle() 和 ElevatedButton.styleFrom() ?

Firebase 中的查询限制 - .orderBy() 错误

如何在Flutter中制作带有波浪边框的圆圈来显示图像?

在 Flutter 中更改高架按钮 OnPressed 的背景 colored颜色

在 flutter 中使用 Firebase 实时数据库数据创建无限滚动效果

Flutter GetX:Get.put 在 Widget 中的什么位置?