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

**URL:** https://discourse.julialang.org/t/ann-gitcommand-jl-use-command-line-git-in-your-julia-packages/32330
**Category:** Package Announcements
**Tags:** package, announcement, git
**Created:** [December 16, 2019, 11:59am UTC](https://discourse.julialang.org/t/ann-gitcommand-jl-use-command-line-git-in-your-julia-packages/32330 "2019-12-16T11:59:20Z")
**Posts on this page:** 12
**Page:** 1

<div class="post-metadata">

### Author: ![dilumaluthge](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dilumaluthge/32/29283_2.png) [@dilumaluthge](https://discourse.julialang.org/u/dilumaluthge)
#### Post date: [December 16, 2019, 11:59am UTC](https://discourse.julialang.org/t/ann-gitcommand-jl-use-command-line-git-in-your-julia-packages/32330/1 "2019-12-16T11:59:20Z")

</div>

I’m pleased to announce the new package [GitCommand.jl](https://github.com/bcbi/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.

> **[GitHub - JuliaVersionControl/GitCommand.jl: Deprecated. Please use Git.jl...](https://github.com/JuliaVersionControl/GitCommand.jl)**
>
> Deprecated. Please use Git.jl instead: https://github.com/JuliaVersionControl/Git.jl - GitHub - JuliaVersionControl/GitCommand.jl: Deprecated. Please use Git.jl instead: https://github.com/JuliaVer...

---

<div class="post-metadata">

### Author: ![ChrisRackauckas](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/chrisrackauckas/32/77_2.png) [@ChrisRackauckas](https://discourse.julialang.org/u/ChrisRackauckas)
#### Post date: [December 16, 2019, 12:41pm UTC](https://discourse.julialang.org/t/ann-gitcommand-jl-use-command-line-git-in-your-julia-packages/32330/2 "2019-12-16T12:41:01Z")

</div>

Awesome. This could help on Windows quite a bit!

---

<div class="post-metadata">

### Author: ![oschulz](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/oschulz/32/2998_2.png) [@oschulz](https://discourse.julialang.org/u/oschulz)
#### Post date: [December 16, 2019, 12:41pm UTC](https://discourse.julialang.org/t/ann-gitcommand-jl-use-command-line-git-in-your-julia-packages/32330/3 "2019-12-16T12:41:26Z")

</div>

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

---

<div class="post-metadata">

### Author: ![carstenbauer](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/carstenbauer/32/4981_2.png) [@carstenbauer](https://discourse.julialang.org/u/carstenbauer)
#### Post date: [December 16, 2019, 1:15pm UTC](https://discourse.julialang.org/t/ann-gitcommand-jl-use-command-line-git-in-your-julia-packages/32330/4 "2019-12-16T13:15:52Z")

</div>

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).

---

<div class="post-metadata">

### Author: ![carstenbauer](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/carstenbauer/32/4981_2.png) [@carstenbauer](https://discourse.julialang.org/u/carstenbauer)
#### Post date: [December 16, 2019, 1:18pm UTC](https://discourse.julialang.org/t/ann-gitcommand-jl-use-command-line-git-in-your-julia-packages/32330/5 "2019-12-16T13:18:05Z")

</div>

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.

---

<div class="post-metadata">

### Author: ![oheil](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/oheil/32/220745_2.png) [@oheil](https://discourse.julialang.org/u/oheil)
#### Post date: [December 16, 2019, 3:28pm UTC](https://discourse.julialang.org/t/ann-gitcommand-jl-use-command-line-git-in-your-julia-packages/32330/6 "2019-12-16T15:28:04Z")

</div>

Very nice!

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

Calling e.g.

```julia
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`,[...
LONG ANNOYING ENVIRONMENT HERE
...]), ProcessExited(0))

```

it can easily be suppressed by a trainling `;` :

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

nothing to commit, working tree clean

julia>

```

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

---

<div class="post-metadata">

### Author: ![Datseris](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/datseris/32/13406_2.png) [@Datseris](https://discourse.julialang.org/u/Datseris)
#### Post date: [December 16, 2019, 3:34pm UTC](https://discourse.julialang.org/t/ann-gitcommand-jl-use-command-line-git-in-your-julia-packages/32330/7 "2019-12-16T15:34:04Z")

</div>

> [@carstenbauer](#):
>
> 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.

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)?

---

<div class="post-metadata">

### Author: ![giordano](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/giordano/32/2166_2.png) [@giordano](https://discourse.julialang.org/u/giordano)
#### Post date: [December 16, 2019, 5:50pm UTC](https://discourse.julialang.org/t/ann-gitcommand-jl-use-command-line-git-in-your-julia-packages/32330/8 "2019-12-16T17:50:31Z")

</div>

> [@oschulz](#):
>
> Oh, very nice! Hmm … could there even be a Git REPL mode?

I think that should be possible. [Issue opened](https://github.com/bcbi/GitCommand.jl/issues/21)

---

<div class="post-metadata">

### Author: ![dilumaluthge](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dilumaluthge/32/29283_2.png) [@dilumaluthge](https://discourse.julialang.org/u/dilumaluthge)
#### Post date: [December 18, 2019, 6:54am UTC](https://discourse.julialang.org/t/ann-gitcommand-jl-use-command-line-git-in-your-julia-packages/32330/9 "2019-12-18T06:54:42Z")

</div>

> [@oschulz](#):
>
> Oh, very nice! Hmm … could there even be a Git REPL mode?

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

> <https://github.com/JuliaVersionControl/GitCommand.jl/pull/26>
>
> Fixes #21 
> Fixes #27

---

<div class="post-metadata">

### Author: ![giordano](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/giordano/32/2166_2.png) [@giordano](https://discourse.julialang.org/u/giordano)
#### Post date: [December 18, 2019, 11:35am UTC](https://discourse.julialang.org/t/ann-gitcommand-jl-use-command-line-git-in-your-julia-packages/32330/10 "2019-12-18T11:35:12Z")

</div>

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

---

<div class="post-metadata">

### Author: ![dilumaluthge](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dilumaluthge/32/29283_2.png) [@dilumaluthge](https://discourse.julialang.org/u/dilumaluthge)
#### Post date: [December 18, 2019, 12:59pm UTC](https://discourse.julialang.org/t/ann-gitcommand-jl-use-command-line-git-in-your-julia-packages/32330/11 "2019-12-18T12:59:47Z")

</div>

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

---

<div class="post-metadata">

### Author: ![dilumaluthge](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dilumaluthge/32/29283_2.png) [@dilumaluthge](https://discourse.julialang.org/u/dilumaluthge)
#### Post date: [December 18, 2019, 1:57pm UTC](https://discourse.julialang.org/t/ann-gitcommand-jl-use-command-line-git-in-your-julia-packages/32330/12 "2019-12-18T13:57:21Z")

</div>

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