# Regarding GIT API

6 messages from 2011-02-15 to 2011-02-15. Participants: Abhinav Goyal, Erik Faye-Lund, Marc Weber, Dmitry Potapov, Michael J Gruber.
Thread: https://gitlist.dev/t/26507

## Abhinav Goyal, 2011-02-15 11:08

Subject: Regarding GIT API
Message-ID: <loom.20110215T120434-373@post.gmane.org>
URL: https://gitlist.dev/e/loom.20110215T120434-373%40post.gmane.org

```
hello All,

I searched a lot but all in vain to find GIT API from which I can call 
git commands from my C++ Application. I tried my hands on libgit2 but found that
it deals with very low level git functionality .I just need the git command
support for my C++ application. I have my own reason for not using command
prompt system call. Please help me if you have any idea regarding API that I can
use.


thanks and regrads
Abhinav Goyal

```

## Erik Faye-Lund, 2011-02-15 11:21

Subject: Re: Regarding GIT API
Message-ID: <AANLkTi=eSsxTj4V25a9Lk75NfDZ5S5Ag8A-_mLUQ8dEF@mail.gmail.com>
URL: https://gitlist.dev/e/AANLkTi%3DeSsxTj4V25a9Lk75NfDZ5S5Ag8A-_mLUQ8dEF%40mail.gmail.com
In-Reply-To: <loom.20110215T120434-373@post.gmane.org>

```
On Tue, Feb 15, 2011 at 12:08 PM, Abhinav Goyal <honeykool23@gmail.com> wrote:
> hello All,
>
> I searched a lot but all in vain to find GIT API from which I can call
> git commands from my C++ Application. I tried my hands on libgit2 but found that
> it deals with very low level git functionality .I just need the git command
> support for my C++ application. I have my own reason for not using command
> prompt system call. Please help me if you have any idea regarding API that I can
> use.
>

Git's API is constructed through calling the plumbing commands, not by
calling C/C++ functions. If you want an example of how to do that, you
could look at the git-cheetah source code:
http://repo.or.cz/w/git-cheetah.git

LibGit2 is the most complete alternative for C/C++ to my knowledge.

```

## Marc Weber, 2011-02-15 11:22

Subject: Re: Regarding GIT API
Message-ID: <1297768932-sup-7106@localhost.localdomain>
URL: https://gitlist.dev/e/1297768932-sup-7106%40localhost.localdomain
In-Reply-To: <loom.20110215T120434-373@post.gmane.org>

```
Excerpts from Abhinav Goyal's message of Tue Feb 15 12:08:14 +0100 2011:
> prompt system call. Please help me if you have any idea regarding API that I can
> use.
I've no clue but I'd look into qgit or the like which I'd expect to do
what you want if such an API exists.

Marc Weber

```

## Dmitry Potapov, 2011-02-15 11:49

Subject: Re: Regarding GIT API
Message-ID: <AANLkTim4ucYtoyNEM2+=-dJTmpBtqy1zJOEX3k3Wk+XU@mail.gmail.com>
URL: https://gitlist.dev/e/AANLkTim4ucYtoyNEM2%2B%3D-dJTmpBtqy1zJOEX3k3Wk%2BXU%40mail.gmail.com
In-Reply-To: <loom.20110215T120434-373@post.gmane.org>

```
On Tue, Feb 15, 2011 at 11:08:14AM +0000, Abhinav Goyal wrote:
> I just need the git command
> support for my C++ application. I have my own reason for not using command
> prompt system call.

If you need full git functionality, currently the only proper way is to
use git porcelain command, i.e. run commands using system() and parse
their output. Git porcelain commands are designed to be used in this way,
so their output is easy to parse. Also, their output should not change
between different versions, in contrast to front-end git commands, which
provide more human oriented output.

NOTE: There are libraries for some other languages such as Java and Ruby
(jGit and Grit correspondingly), but they contain re-implementation of
most git functionality. No one has bothered to write anything like that
in C. So, libgit2 provides only low-level and very limited functionality.

More information about git interfaces to different languages, you can
find here:

https://git.wiki.kernel.org/index.php/Interfaces,_frontends,_and_tools#Interfaces_to_other_programming_languages


Dmitry

```

## Michael J Gruber, 2011-02-15 12:40

Subject: Re: Regarding GIT API
Message-ID: <4D5A744F.5000208@drmicha.warpmail.net>
URL: https://gitlist.dev/e/4D5A744F.5000208%40drmicha.warpmail.net
In-Reply-To: <AANLkTim4ucYtoyNEM2+=-dJTmpBtqy1zJOEX3k3Wk+XU@mail.gmail.com>

```
Dmitry Potapov venit, vidit, dixit 15.02.2011 12:49:
> On Tue, Feb 15, 2011 at 11:08:14AM +0000, Abhinav Goyal wrote:
>> I just need the git command
>> support for my C++ application. I have my own reason for not using command
>> prompt system call.
> 
> If you need full git functionality, currently the only proper way is to
> use git porcelain command, i.e. run commands using system() and parse
> their output. Git porcelain commands are designed to be used in this way,
> so their output is easy to parse. Also, their output should not change
> between different versions, in contrast to front-end git commands, which
> provide more human oriented output.

You mean "plumbing" for the commands with robust interface.

The front-end commands are "porcelain": they may break when used for
heavy (scripting) work...

> 
> NOTE: There are libraries for some other languages such as Java and Ruby
> (jGit and Grit correspondingly), but they contain re-implementation of
> most git functionality. No one has bothered to write anything like that
> in C. So, libgit2 provides only low-level and very limited functionality.
> 
> More information about git interfaces to different languages, you can
> find here:
> 
> https://git.wiki.kernel.org/index.php/Interfaces,_frontends,_and_tools#Interfaces_to_other_programming_languages
> 
> 
> Dmitry

```

## Dmitry Potapov, 2011-02-15 17:09

Subject: Re: Regarding GIT API
Message-ID: <AANLkTimtiXN5EpejfCSVERCHhc1F7bKQiRNuf7GxbvaR@mail.gmail.com>
URL: https://gitlist.dev/e/AANLkTimtiXN5EpejfCSVERCHhc1F7bKQiRNuf7GxbvaR%40mail.gmail.com
In-Reply-To: <4D5A744F.5000208@drmicha.warpmail.net>

```
On Tue, Feb 15, 2011 at 3:40 PM, Michael J Gruber
<git@drmicha.warpmail.net> wrote:
>
> You mean "plumbing" for the commands with robust interface.
>
> The front-end commands are "porcelain": they may break when used for
> heavy (scripting) work...

Thank you for correction...


Dmitry

```
