threads / discuss / 26507

Regarding GIT API

Subject: Regarding GIT API

## tl;dr

6 messages between Feb 15, 2011 and Feb 15, 2011.

replies: 5people: 5as markdown or json

Abhinav Goyal· Feb 15, 2011, 11:08 UTC · lore
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· Feb 15, 2011, 11:21 UTC · re: Abhinav Goyal · lore

Re: Regarding GIT API

On Tue, Feb 15, 2011 at 12:08 PM, Abhinav Goyal <honeykool23@gmail.com> wrote:
Show 9 quoted lines
> 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· Feb 15, 2011, 11:22 UTC · re: Abhinav Goyal · lore

Re: Regarding GIT API

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· Feb 15, 2011, 11:49 UTC · re: Abhinav Goyal · lore

Re: Regarding GIT API

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· Feb 15, 2011, 12:40 UTC · re: Dmitry Potapov · lore

Re: Regarding GIT API

Dmitry Potapov venit, vidit, dixit 15.02.2011 12:49:
Show 11 quoted lines
> 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...

Show 13 quoted lines
> 
> 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· Feb 15, 2011, 17:09 UTC · re: Michael J Gruber · lore

Re: Regarding GIT API

On Tue, Feb 15, 2011 at 3:40 PM, Michael J Gruber <git@drmicha.warpmail.net> wrote:

Show 5 quoted lines
>
> 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

← back to recent threads