forked from libgit2/www.libgit2.org
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.html
238 lines (207 loc) · 10.5 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>libgit2: a linkable library for Git</title>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<link href="stylesheets/application.css" media="all" rel="stylesheet" type="text/css"/>
<link href="stylesheets/sunburst.css" media="all" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="body"><div id="contents">
<div id="header">
<a href="/"><img alt="a linkable library for Git" src="logo.png" width="725"/></a>
</div>
<div id="intro">
libgit2 is a portable, pure C implementation of the Git core methods provided as a
re-entrant linkable library with a solid API, allowing you to write native
speed custom Git applications in any language which supports C bindings.
</div>
<div class="contents">
<ul class="bullet">
<a class="button" href="#started">Getting started</a>
<a class="button" href="#cando">Features</a>
<a class="button" href="#install">Compiling</a>
<a class="button" href="#bindings">Bindings</a>
<a class="button" href="api.html">Usage Guide</a>
</ul>
</div>
<h2 id="started">Getting started</h2>
<div class="contents"><div class="bullet">
<div class="description">
In the current Git project, though a libgit.a file is produced it is
not re-entrant (it will call <code>die()</code> on basically any error)
and it has no stable or well-designed public API. As there is no good
way to link to this effectively, a new library was needed that fulfilled
these requirements. Thus libgit2.
</div>
<div class="description">
<h3>libgit2 is...</h3>
<ul>
<li>licensed under a <b>very permissive license</b> so you can use it anywhere</li>
<li><b>faster</b> than any other Git library</li>
<li>written in standards compilant <b>C99</b></li>
<li>completely <b>multi-platform</b>: Windows, Linux, Mac OS X, xBSD</li>
<li>compiled <b>natively</b> under all platforms (yes, even MSVC on Windows)</li>
<li><b>re-entrant</b>, with sane error handling</li>
<li>designed with a solid and <b>consistent API</b></li>
<li>available as bindings for <b>all major scripting languages</b></li>
<li>compiled with <b>minimal external dependencies</b> (currently only zlib)</li>
</ul>
</div>
<div class="bullet"><div class="description">
<p>libgit2 is still in early development, and although it's already <a href="#cando">quite feature complete</a>, there are no official binary releases available yet. Interested early adopters must <a href="#install" class="link">compile the library</a> by hand -- which is easy enough to do.</p>
<a class="button" href="https://github.com/libgit2/libgit2">Get the code at GitHub</a>
</div>
</div></div>
<h2 id="cando">What it can do</h2>
<div class="contents"><div class="bullet">
<div class="description">
libgit2 is already very usable:
<ul>
<li><a href="api.html#sha">SHA conversions, formatting and shortening</a></li>
<li><a href="api.html#rawread">object reading (loose and packed)</a></li>
<li><a href="api.html#rawwrite">object writing (loose)</a></li>
<li><a href="api.html#parsing">commit, tag, tree and blob parsing and write-back</a></li>
<li><a href="api.html#trees">tree traversal</a></li>
<li><a href="api.html#revwalk">revision walking</a></li>
<li><a href="api.html#index">index file (staging area) manipulation</a></li>
<li><a href="api.html#backends">custom ODB backends</a></li>
<li><a href="api.html">reference management (including packed references)</a></li>
<li>...and more</li>
</ul>
<p>For full API documentation see the generated <a href="http://libgit2.github.com/libgit2">docs</a> or the <a href="api.html">usage guide</a>.
</div>
</div></div>
<h2 id="install">Building the library</h2>
<div class="contents"><div class="bullet">
<div class="description">
libgit2 uses <a href="http://code.google.com/p/waf/">waf</a> as its buildsystem,
and hence requires <a href="http://www.python.org">Python 2.4 or better</a> to
configure the build. The library can be built under the following platforms:
<b>Linux</b>, <b>Mac OS X</b>, <b>xBSD</b>, <b>Windows (MSVC)</b> and <b>Windows (MinGW)</b>.
</div>
<div id="build_unix">
<div class="description">Start by configuring the build system by running:</div>
<pre class="sunburst">$ mkdir build && cd build
$ cmake .. </pre>
<div class="description">Then build the library</div>
<pre class="sunburst">$ make</pre>
<div class="description">You can then test the library with:</div>
<pre class="sunburst">$ make test test</pre>
<div class="description">And finally you can install it with (you may need to sudo):</div>
<pre class="sunburst">$ make install</pre>
<div class="description">
Once that is done, you should be able to link the library to your program
with a normal <code>-lgit2</code>.</div>
</div>
<div class="description">
Detailed build instructions for different platforms can be found in libgit2's
<a href="https://github.com/libgit2/libgit2/blob/master/README.md">readme file</a>.
</div>
</div></div>
<h2 id="bindings">Language bindings</h2>
<div class="contents"><div class="bullet">
<div class="description">
There are already a number of language bindings in the works, so you can
use Git at native speed from your favorite programming language.
</div>
</div>
<div class="bullet">
<div class="description">
<h3>Rugged (Ruby bindings)</h3>
<p>
Rugged (previously known as Ribbit) is the reference binding implementation for libgit2, used to make sure the
C API is sane and functional. Rugged is always in sync with the libgit2 master branch. It also has the
best name for any Ruby project. Ever.
</p>
<a class="button" href="https://github.com/libgit2/rugged">Get Rugged</a>
</div>
</div>
<div class="bullet">
<div class="description">
<h3>objective-git (Objective-C bindings)</h3>
<p>Objective-git is another set of reference bindings for libgit2. It's always in sync with the libgit2
master branch, well tested, and tastes like Cocoa.</p>
<a class="button" href="https://github.com/libgit2/objective-git">Get objective-git</a>
</div>
</div>
<div class="bullet">
<div class="description">
<h3>pygit2 (Python bindings)</h3>
<p>pygit2 are the Python 2.6+ bindings for libgit2 mantained by J. David Ibáñez. They
make extensive use of common Python idioms, and also make programming Git applications fun again.
They should be (mostly) up to date with the library changes.</p>
</div>
<a class="button" href="https://github.com/libgit2/pygit2">Get pygit2</a>
</div>
<div class="bullet">
<div class="description">
<h3>libgit2sharp (.NET bindings)</h3>
<p>libgit2sharp is a set of bindings for .NET, maintained by Emeric Fermas. They should be usable
from any language that runs on the .NET runtime, including IronPython and IronRuby. How cool is
that?</p>
<a class="button" href="https://github.com/libgit2/libgit2sharp">Get libgit2sharp</a>
</div>
</div>
<div class="bullet">
<div class="description">
<h3>php-git (PHP bindings)</h3>
<p>libgit2 bindings for PHP5, maintained by Shuhei Tanuma.</p>
<a class="button" href="https://github.com/libgit2/php-git">Get php-git</a>
</div>
</div>
<div class="bullet">
<div class="description">
<h3>luagit2 (Lua bindings)</h3>
<p>libgit2 bindings for Lua, maintained by Robert G. Jakabosky</p>
<a class="button" href="https://github.com/libgit2/luagit2">Get luagit2</a>
</div>
</div>
<div class="bullet">
<div class="description">
<h3>GitForDelphi (Delphi bindings)</h3>
<p>libgit2 bindings for Delphi, maintained by Jason Penny</p>
<a class="button" href="https://github.com/libgit2/GitForDelphi">Get GitForDelphi</a>
</div>
</div>
<div class="bullet">
<div class="description">
<h3>node-gitteh (Node.js bindings)</h3>
<p>libgit2 bindings for Node.js, maintained by samcday. It's like Git, but more asynchronous.</p>
<a class="button" href="https://github.com/libgit2/node-gitteh">Get node-gitteh</a>
</div>
</div>
<div class="bullet">
<div class="description">
<h3>go-git (Go bindings)</h3>
<p>libgit2 bindings for Go, maintained by Mike Rosset</p>
<a class="button" href="https://github.com/str1ngs/go-git">Get go-git</a>
</div>
</div>
<div class="bullet">
<div class="description">
<h3>libqgit2 (C++ Qt bindings)</h3>
<p>libgit2 bindings for C++, tweaked to interact with the Qt library. Maintained by Laszlo Papp.</p>
<a class="button" href="https://projects.kde.org/projects/playground/libs/libqgit2/">Get libqgit2</a>
</div>
</div>
<div class="bullet">
<div class="description">
<h3>Geef (Erlang bindings)</h3>
<p>
Geef is an example of an Erlang NIF binding to libgit2. Outdated.
</p>
<a class="button" href="https://github.com/schacon/geef">Get Geef</a>
</div>
</div>
</div>
</div></div>
<div id="credits">
<p>Thanks to the folks at <a href="http://gembundler.com">Bundler</a> for letting us steal their awesome CSS</p>
</div>
<a href="https://github.com/libgit2/libgit2" id="github">
<img alt="Fork me on GitHub" src="http://s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png" />
</a>
</body>
</html>