Hi Ludo, Ludovic Courtès writes: > Surely you’d agree that it would suck though: depending on two Git > implementations because one doesn’t have a proper API and the other one > lacks a bunch of features. Right, although I wouldn't necessarily say that the former doesn't have a proper API, but rather that it has a Unix-oriented API. That leads to performance issues on e.g. Windows but on Linux I'm not sure there's much of a difference. > It would also be pretty bad for closure size: > > --8<---------------cut here---------------start------------->8--- > $ guix size guile-git | tail -1 > total: 106.6 MiB > $ guix size guile-git git-minimal | tail -1 > total: 169.8 MiB > --8<---------------cut here---------------end--------------->8--- > > It’s also not clear concretely how we’d add that dependency. Try > invoking ‘git’ from $PATH and print a warning if it doesn’t work? > But then, what about applications like Cuirass and hpcguix-web? > > Tricky, tricky. We could consider replacing the guile-git dependency with another library built directly on top of git-minimal, and have this be a dependency of Guix. Not ideal though, and not really scalable either: we can't just add every VCS as direct dependencies. From what I've seen, people are now scaling back on their use of libgit2 because of the impedence mismatch and are resorting more and more to git plumbing. From a pragmatic point of view, I'd prefer the latter, since it is more stable and feature-complete. Best, -- Josselin Poiret