Some of this I may have mentioned at the summit, but here for the list:
* I think it should be a candidate for a core (not "just contrib")
git.git command, given that we have someone willing to maintain it &
deal with bugs etc. I'm not worried about that given the author.
* It's unfortunate in terms of API we need to support going forward that
this obligates us to support a fairly intricate python API going
forward, so it's similar (but more detailed) to Git.pm (which I also
tried to get rid of as an external API a while ago).
However, as you correctly note that's the only way a command like this
can be really fast, we already have the "no special API" command with
git-filter-branch, and that's horribly slow.
But perhaps there's ways we can in advance deal with a potential
future breaking API change. E.g. some Pythonic way of versioning the
API, or just prominently documenting whatever (low?) stability
guarantees we're making.
I imagine if we need to make breaking changes in the future that'll
less big of a deal than in other cases, since we'd expect the API use
to be one-off migration scripts, although maybe it'll get used for
all-the-time exports (e.g. mirroring internal->external repos with
filtering).
* The rest of our commands are hooked up to the i18n framework. I don't
think this should be a blocker, but it's worth thinking about what the
plan for this is.
Are we going to need the equivalent of Git::I18N for Python (which
presumably will be a run-time dependency on something needing the
Python API that links to gettext).
Or perhaps we could do the translated strings in C, by making the
program you're invoking be a C command, invoking the Python part as a
helper (which would need to re-invoke a helper if it prints its own
messages).
Thanks for working on this!