Re: New command/tool: git filter-repo
- Date: Fri, 08 Feb 2019 19:53:32 +0100
- From: Ævar Arnfjörð Bjarmason <avarab@xxxxxxxxx>
- Subject: Re: New command/tool: git filter-repo
On Thu, Jan 31 2019, Elijah Newren wrote:
> What's the future? (Core command of git.git? place it in contrib? keep it
> in a separate repo?) I'm hoping to discuss that at the contributor summit
> today, but feedback on the list is also welcome.
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
* 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
Thanks for working on this!