Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/libgit2.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'README.md')
-rw-r--r--README.md213
1 files changed, 213 insertions, 0 deletions
diff --git a/README.md b/README.md
new file mode 100644
index 000000000..c0416f638
--- /dev/null
+++ b/README.md
@@ -0,0 +1,213 @@
+libgit2 - the Git linkable library
+======================
+
+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 with bindings.
+
+Why Do We Need It
+=======================
+
+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.
+
+Though it would be nice to use the same library that Git itself uses,
+Git actually has a pretty simple storage format and just having native
+access to that is pretty useful. Eventually we would like to have most
+of the functionality of the core Git tools or even get the library
+integrated into Git itself, but in the meantime having a cleanly designed
+and maintained linkable Git library with a public API will likely be helpful
+to lots of people.
+
+What It Can Do
+==================================
+
+libgit2 is already very usable.
+
+* raw <-> hex SHA conversions
+* raw object reading (loose and packed)
+* raw object writing (loose)
+* revlist walker
+* commit, tag and tree object parsing and write-back
+* tree traversal
+* basic index file (staging area) operations
+
+Building libgit2 - Unix systems
+==================================
+
+In Unix-like systems, like Linux, *BSD and Mac OS X, libgit2 has
+the following dependencies:
+
+* Python 2.5-3.1 <http://www.python.org>
+ Used by run the build system; no extra libraries required.
+ Should probably ship installed with your OS.
+
+* zlib 1.2+ <http://www.zlib.net/>
+
+* LibSSL <http://www.openssl.org/>
+ Only needed if you want to re-use OpenSSL's SHA1 routines;
+ libgit2 compiles its own routines by default.
+
+To build it, first configure the build system by running:
+
+ $ ./waf configure
+
+Then build the library, either in its shared (libgit2.so) or static form (libgit2.a)
+
+ $ ./waf build-static
+ $ ./waf build-shared
+
+You can then test the library with:
+
+ $ ./waf test
+
+And finally you can install it with (you may need to sudo):
+
+ $ ./waf install
+
+Building libgit2 - Windows MSVC++
+==================================
+
+When building under Windows using the MSVC compiler, libgit2 has
+the following dependencies:
+
+* Python 2.5-3.1 <http://www.python.org>
+ Used by run the build system; no extra libraries required.
+
+* zlib 1.2+ (Windows API Version) <http://www.zlib.net/>
+ Make sure you compile the ZLib library using the MSVC solution
+ that ships in its source distribution.
+ Alternatively, you may download precompiled binaries from:
+ http://www.winimage.com/zLibDll/
+
+* LibSSL <http://www.openssl.org/>
+ Only needed if you want to re-use OpenSSL's SHA1 routines;
+ libgit2 compiles its own routines by default.
+
+To build it, first configure the build system by running:
+
+ $ ./waf configure
+
+Then build the library, either in its shared (libgit2.dll) or static form (libgit2.lib)
+
+ $ ./waf build-static
+ $ ./waf build-shared
+
+You can then test the library with:
+
+ $ ./waf test
+
+Lastly, you can manually install the generated *.lib and *.dll files, depending on
+your preferences.
+
+Building libgit2 - Windows MinGW
+==================================
+
+When building under Windows using the GCC compiler that ships with MinGW,
+libgit2 has the following dependencies:
+
+* Python 2.5-3.1 <http://www.python.org>
+ Used by run the build system; no extra libraries required.
+
+* zlib 1.2+ <http://www.zlib.net/>
+
+* pthreads-w32 <http://sourceware.org/pthreads-win32/>
+ Or an equivalent pthreads implementation for non-POSIX systems
+
+* LibSSL <http://www.openssl.org/>
+ Only needed if you want to re-use OpenSSL's SHA1 routines;
+ libgit2 compiles its own routines by default.
+
+To build it, first configure the build system and force GCC as the compiler,
+instead of the default MSVC:
+
+ $ ./waf configure --check-c-compiler=gcc
+
+Then build the library, either in its shared (libgit2.so) or static form (libgit2.a)
+
+ $ ./waf build-static
+ $ ./waf build-shared
+
+You can then test the library with:
+
+ $ ./waf test
+
+And finally you can install it with:
+
+ $ ./waf install
+
+
+Configuration settings
+==================================
+
+The waf build system for libgit2 accepts the following flags:
+
+ --debug
+ build the library with debug symbols.
+ Defaults to off.
+
+ --sha1=[builtin|ppc|openssl]
+ use the builtin SHA1 functions, the optimized PPC versions
+ or the SHA1 functions from LibCrypto (OpenSSL).
+ Defaults to 'builtin'.
+
+You can run `./waf --help` to see a full list of install options and
+targets.
+
+Language Bindings
+==================================
+
+So you want to use Git from your favorite programming language. Here are
+the bindings to libgit2 that are currently available:
+
+Ruby
+--------------------
+
+Rugged is the reference library used to make sure the
+libgit2 API is sane. This should be mostly up to date.
+
+[[https://github.com/libgit2/rugged]]
+
+
+Python
+--------------------
+
+Pygit2 is a Python binding to libgit2.
+
+[[https://github.com/libgit2/pygit2]]
+
+Erlang
+--------------------
+
+Geef is an example of an Erlang NIF binding to libgit2. A bit out of
+date, but basically works. Best as a proof of concept of what you could
+do with Erlang and NIFs with libgit2.
+
+[[https://github.com/schacon/geef]]
+
+If you start another language binding to libgit2, please let us know so
+we can add it to the list.
+
+How Can I Contribute
+==================================
+
+Fork libgit2/libgit2 on GitHub, add your improvement, push it to a branch
+in your fork named for the topic, send a pull request.
+
+You can also file bugs or feature requests under the libgit2 project on
+GitHub, or join us on the mailing list by sending an email to:
+
+libgit2@librelist.com
+
+
+License
+==================================
+libgit2 is under GPL2 with linking exemption, which basically means you
+can link to the library with any program, commercial, open source or
+other. However, you cannot modify libgit2 and distribute it without
+supplying the source.
+
+See the COPYING file for the full license text.