从.gitignore中排除.fvm/fvm_config.json

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

在我最近的大多数项目中,我一直在使用 Flutter 版本管理(FVM)来管理 Flutter 版本。我注意到

.fvm
目录通常列在
.gitignore
中,因此不会在 Flutter 项目存储库中进行跟踪,这是有道理的 - 没有必要将整个 Flutter SDK 保留在版本控制中。

排除整个

.fvm
目录也会排除
.fvm/fvm_config.json
文件。我很好奇为什么它不被排除在 .gitignore 之外(例如
!.fvm/fvm_config.json
),考虑到将其纳入源代码控制的明显好处:

  1. 版本一致性:该文件确保项目上的所有开发人员都使用相同的 Flutter 版本,减少兼容性问题和“它可以在我的机器上运行”问题。

  2. 易于设置:新的团队成员或贡献者可以通过运行

    fvm install
    快速设置他们的开发环境,因为将自动安装正确的Flutter版本。

  3. 更新便捷:通过该文件可以轻松管理Flutter版本的更新,保证所有团队成员拉取最新代码时同步更新。

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

考虑到这些好处,将

.fvm/fvm_config.json
包含在源代码管理中似乎是合乎逻辑的。然而,我发现这并不常见。这背后有什么具体原因吗?是否有我忽略的缺点或潜在问题证明将其排除在版本控制之外是合理的?所需版本的 Flutter 也可以包含在文档中(例如 README 文件或项目 Wiki 页面),但我没有看到将其放在配置文件中,只需使用一个命令即可安装的好处。

flutter dart version-control gitignore fvm
1个回答
0
投票

我认为这很大程度上取决于团队/个人的个人喜好。你是对的,如果我们从 gitignore 中排除该文件,那么每个人都会有正确的 FVM 配置。我看到这种方法的问题是,如果你想在自己的分支中添加一个单独的功能,并且这个分支需要特定版本的 Flutter 才能运行,并且你出于某种原因将此版本合并到 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

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