[ANN] GitCommand.jl: use command-line Git in your Julia packages

I’m pleased to announce the new package GitCommand.jl.

GitCommand allows you to use command-line Git in your Julia packages. You do not need to have Git installed on your computer, and neither do the users of your packages!

GitCommand requires at least Julia 1.3.


Awesome. This could help on Windows quite a bit!


Oh, very nice! Hmm … could there even be a Git REPL mode?

Nice to see Git_jll in use!

Should this perhaps replace Git.jl? The latter has a premium name but is barely maintained. AFAIR it’s old git functionality that has been in Base at some point (please correct me if I’m wrong here).


Also, could someone point out in which cases one should use this (i.e. full git) rather than the LibGit2 stdlib? I guess I’m only asking what the limitiations of LibGit2 are compared to regular git.


Very nice!

For anybody who has the same minor problem of additional output at the end of a git call:

Calling e.g.

julia> run(git`status`)
On branch master
Your branch is up to date with 'origin/master'.

nothing to commit, working tree clean
Process(setenv(`'C:\Users\oheil\.julia\artifacts\08d6d8573a69feabe698828070d44081361f4bcd\bin\git.exe' status`,[...
...]), ProcessExited(0))

it can easily be suppressed by a trainling ; :

julia> run(git`status`);
On branch master
Your branch is up to date with 'origin/master'.

nothing to commit, working tree clean


Thanks again to OP, who pointed this triviality out to me, after I opened an issue about it :flushed:

I am doubling this question. We use LibGit2 quite heavily in DrWatson. So the question is, what are the reasons for us to switch to this new package (if any)?

I think that should be possible. Issue opened

The following PR adds a Git REPL mode to GitCommand.jl:


My feeling is that GitCommand.jl can be more useful for interactive use, and maybe in cases where LibGit2 is slow or not ideal.

Here’s one example: LibGit2 has no support for signing commits with your GPG key.

The Git REPL mode is now available in the latest version of GitCommand.jl.