flutter 房扑医生如何知道显示什么样的房扑版本?(版本:0.0.0-未知)

mefy6pfw  于 2022-11-17  发布在  Flutter
关注(0)|答案(1)|浏览(213)

背景与问题

我目前正在开发一个Flutter应用程序,它要求我们对Flutter引擎和框架进行修改。因此,我的系统上有一个定制的Flutter引擎,以及一个快照安装的Flutter环境。为了对Flutter框架进行修改和测试,我将我的远程上游设置为我自己的分支Flutter存储库。现在,我的问题和提出这个问题的原因是,每当我对Flutter代码进行更改时,我都会从forked repo、flutter doctor输出、0.0.0-unknown中挑选一些代码更改作为Flutter版本。

重现步骤

1.使用snap安装flutter(在Ubuntu上):snap install flutter --classic
1.运行flutter doctor以安装Flutter工具
1.在GitHub中派生flutter.git存储库
1.打开终端并运行cd ~/snap/flutter/common/flutter
1.将远程上游设置为派生的存储库:git remote add upstream git@github.com:<YourRepo>/flutter.git

  1. 2.8.1结帐标记:git checkout 2.8.1
    1.运行flutter doctor并查看您的版本;它应该是2.8.1(显然是正确)
  2. checkout 新分支:git checkout -b <your branch>
    1.进行更改
    1.将您的更改推送到派生的存储库(上游)
    1.运行flutter doctor并查看您的版本。对我来说,它是0.0.0-unknown,尽管我所有的代码都与2.8.1相同,除了一些(相当小的)变化。

最终问题

有没有人知道Flutter版本是如何确定的?最初显示为2.8.1的2.8.1标签怎么会在几个小的改动之后就切换到了未知的0.0.0呢?

rqqzpn5f

rqqzpn5f1#

根据我的发现,它使用git的标签系统来确定代码链接到哪个版本。查看flutter_tools/lib/src/version.dart,调用fetchTagsAndUpdate函数,获取当前的git标签和一些其他信息。然后,它将输出字符串解析为片段,并根据片段确定代码的版本。
我用来复制它的命令是git describe --tags。我的标记显然是不可解析的,并抛出了一个未知错误。这也解释了为什么当我切换分支和标记时,它会改变flutter doctor的版本输出

相关问题