Signing commits
Flutter repositories require that your commits are signed (as of Nov 17, 2021, this is not enabled in all repos, but it's best to be prepared). To get started follow the GitHub instructions in Signing Commits.
If a git
command fails with a complaint about gpg
, run the same command again with GIT_TRACE=1
. For example, if the failing command is:
git commit -S -m 'some message'
Run this instead:
GIT_TRACE=1 git commit -S -m 'some message'
With tracing enabled git
will provide more information about the failure.
If you see the following output from git commit -S
:
error: gpg failed to sign the data
fatal: failed to write commit object
This error may indicate that your GPG name, comment, and email do not match those of git
. To fix this issue, add user.signingkey
to your git configuration referring to the GPG key by its hash rather than by name. To find out the GPG key hash run:
gpg --list-secret-keys --keyid-format=long
In the list of keys printed to the console find the one you want to use (the one you registered with GitHub) and copy its hash from the line that begins with sec
. For example, the key hash in the following line is XYZ
:
sec rsa4096/XYZ 20201-11-16
To add it to your git configuration run:
git config --global user.signingkey XYZ
- Home of the Wiki
- Roadmap
- API Reference (stable)
- API Reference (main)
- Glossary
- Contributor Guide
- Chat on Discord
- Design documents
- Code of Conduct
- Issue triage reports (latest)
- Our Values
- Tree hygiene
- Issue hygiene and Triage
- Style guide for Flutter repo
- Project teams
- Contributor access
- What should I work on?
- Popular issues
- Running and writing tests
- Release process
- Flutter Framework Gardener Rotation
- Rolling Dart
- Manual Engine Roll with Breaking Commits
- Updating Material Design Fonts & Icons
- Postmortems and Retrospectives
- Hotfix Documentation Best Practices
- In case of emergency
- Landing Changes With Autosubmit
- Setting up the Framework development environment
- The Framework architecture
- API Docs code block generation
- Running examples
- Using the Dart analyzer
- The flutter run variants
- Test coverage for package:flutter
- Writing a golden-file test for package:flutter
- Managing template image assets
- Setting up the Engine development environment
- Compiling the engine
- Debugging the engine
- Using Sanitizers with the Flutter Engine
- Testing the engine
- The Engine architecture
- Flutter's modes
- Crashes
- more...
- Setting up the Packages development environment
- Plugins and Packages repository structure
- Contributing to Plugins and Packages
- Understanding Packages tests
- Plugin Tests
- Releasing a Plugin or Package
- more...