我们应该将build_value生成的代码提交给git吗?

时间:2019-03-15 05:07:11

标签: git dart built-value

built_value生成.g.dart代码,但是文档中没有提供任何提示,无论是否应将其添加到git存储库中。

我认为我们应该这样做,这样克隆克隆存储库的开发人员就可以启动并运行,而无需重新生成代码了……但是有些人说,永远不要提交生成的代码,因此,built_value的建议是什么? ?

2 个答案:

答案 0 :(得分:2)

如果要构建要由其他软件包和应用程序重用的库软件包,则应提交它。

代码生成无法在依赖项中生成代码,并且pub publish会忽略.gitignore d个文件。您将发布无效的程序包。同样,在这种情况下,git-dependencies也无效。

有些软件包只能在应用程序项目中生成代码,也可以生成从依赖项导入的代码,例如reflectable。在这种情况下,您无需提交生成的代码。

即使在应用程序项目中,我也始终提交此类生成的代码。这些文件具有特定的扩展名,例如.g.dart,可以从代码审阅中排除这些扩展名,以免引起噪音或类似情况。

答案 1 :(得分:0)

TLDR: 如果您将生成的文件添加到您的 git 提交中,然后遇到任何问题,您需要做的就是运行带有 build_runner 标志的 --delete-conflicting-outputs

flutter packages pub run build_runner build --delete-conflicting-outputs

将生成的文件添加到 Git 提交的问题以及如何处理

提到的 build_runner documentation 不将生成的文件添加到您的 git 提交的观点不是一个好观点。稍后我会说为什么。

添加生成文件的重点不是每次执行拉取请求时都必须运行 build_runner 并且不必处理不将它们添加到 git commits。

但是如果您决定将生成的代码添加到您的 git 提交中会发生什么?以及如何轻松解决这些问题。

第一个问题是您可能会在生成的文件中遇到合并冲突。现在你如何处理这个。 你没有。此时您只需解决源文件(如果有)中的冲突,然后运行 ​​build_runner 将再次生成生成的文件。

另一个问题是在builder_runner docs 中提到的。这是当您运行 build_runner 时,它会给您这个错误

C:\workspace\flutter\projects> flutter pub run build_runner build
[INFO] Generating build script...
[INFO] Generating build script completed, took 336ms

[WARNING] Deleted previous snapshot due to missing asset graph.
[INFO] Creating build script snapshot......
[INFO] Creating build script snapshot... completed, took 12.5s

[INFO] Initializing inputs
[INFO] Building new asset graph...
[INFO] Building new asset graph completed, took 787ms

[INFO] Checking for unexpected pre-existing outputs....
[INFO] Found 13 declared outputs which already exist on disk. This is likely because the`.dart_tool/build` folder was deleted, or you are submitting generated files to your source repository.
[SEVERE] Conflicting outputs were detected and the build is unable to prompt for permission to remove them. These outputs must be removed manually or the build can be run with `--delete-conflicting-outputs`. The outputs are: lib/models/advisory-service-item.g.dart


您可以轻松解决在运行 build_runner 时添加 --delete-conflicting-outputs 标志。就像我们已经做过很多次

flutter packages pub run build_runner build --delete-conflicting-outputs