It's strange, but this widget routinely gets constructed twice. So
performing a long async operation (generating the ssh key + adding it as
a deploy key) from initState, results in it being called twice. I'm not
sure where the state is initialized twice.
Even adding a unique key to the widget did not help. In the end, I've
just moved the code to its parent widget.
It's easier if there is always at least 1 commit in a repo. Creating a
commit with a .gitignore file was a simple way to ensure that. However,
we can also just check for the presence of any other file. This way, we
avoid the extra commit.