diff options
author | Vicent Marti <tanoku@gmail.com> | 2010-12-12 00:01:26 +0200 |
---|---|---|
committer | Vicent Marti <tanoku@gmail.com> | 2010-12-12 00:23:19 +0200 |
commit | e0d9e12e502582d33f3e54bd77b274aaadbd60c6 (patch) | |
tree | 2fce0d6711b86696be0fe427a0e2d6a7d4b2f17f | |
parent | 2619dee4300cc0ef74b10cdee3d0f07eae1f6e65 (diff) | |
download | libgit2-e0d9e12e502582d33f3e54bd77b274aaadbd60c6.tar.gz |
Update README.md
Add info on libgit2sharp, new build system, and usage guide.
Signed-off-by: Vicent Marti <tanoku@gmail.com>
-rw-r--r-- | README.md | 193 |
1 files changed, 40 insertions, 153 deletions
@@ -5,22 +5,9 @@ libgit2 is a portable, pure C implementation of the Git core methods provided as 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. +* Website: <http://libgit2.github.com> +* API documentation: <http://libgit2.github.com/libgit2/modules.html> +* Usage guide: <http://libgit2.github.com/api.html> What It Can Do ================================== @@ -35,144 +22,43 @@ libgit2 is already very usable. * tree traversal * basic index file (staging area) operations -Building libgit2 - Using CMake -============================== - -When building using CMake the following dependencies are required: +Building libgit2 - External dependencies +======================================== -* CMake 2.6+ <http://www.cmake.org> - -Required dependency: +The following libraries are required to manually build the libgit2 library: * zlib 1.2+ <http://www.zlib.net/> -Optional dependency: - -* LibSSL <http://www.openssl.org/> - -On most systems you can build the library using the following commands - - $ mkdir build && cd build - $ cmake .. - $ cmake --build . - -Alternatively you can point the CMake GUI tool to the CMakeLists.txt file and generate platform specific build project or IDE workspace. - -To install the library you can specify the install prefix by setting: - - $ cmake .. -DCMAKE_INSTALL_PREFIX=/install/prefix - $ cmake --build . --target install - -For more advanced use or questions about CMake please read <http://www.cmake.org/Wiki/CMake_FAQ>. - -Building libgit2 - Unix systems -================================== - -In Unix-like systems, like Linux, xBSD and Mac OS X, libgit2 has -the following dependencies: - -* Python 2.5-3.1 <http://www.python.org> - -Used to 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 to 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. +When building in Windows using MSVC, make sure you compile ZLib 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 to run the build system; no extra libraries required. - -* zlib 1.2+ <http://www.zlib.net/> +* LibSSL **(optional)** <http://www.openssl.org/> -* pthreads-w32 <http://sourceware.org/pthreads-win32/> +libgit2 can be built using the SHA1 implementation of LibSSL-Crypto, instead of the built-in custom implementations. Performance wise, they are quite similar. -Or an equivalent pthreads implementation for non-POSIX systems +* pthreads-w32 **(required on MinGW)** <http://sourceware.org/pthreads-win32/> -* LibSSL <http://www.openssl.org/> +Building libgit2 - Using waf +====================== -Only needed if you want to re-use OpenSSL's SHA1 routines; libgit2 compiles its own routines by default. +Waf is a minimalist build system which only requires a Python 2.5+ interpreter to run. This is the default build system for libgit2. -To build it, first configure the build system and force GCC as the compiler, -instead of the default MSVC: +To build libgit2 using waf, first configure the build system by running: - $ ./waf configure --check-c-compiler=gcc + $ ./waf configure -Then build the library, either in its shared (libgit2.so) or static form (libgit2.a) +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: +You can then run the full test suite with: $ ./waf test -And finally you can install it with: - - $ ./waf install +And finally you can install the library with (you may need to sudo): - -Configuration settings -================================== + $ sudo ./waf install The waf build system for libgit2 accepts the following flags: @@ -195,36 +81,37 @@ The waf build system for libgit2 accepts the following flags: 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: +Building libgit2 - Using CMake +============================== -Ruby --------------------- +The libgit2 library can also be built using CMake 2.6+ (<http://www.cmake.org>) on all platforms. -Rugged is the reference library used to make sure the -libgit2 API is sane. This should be mostly up to date. +On most systems you can build the library using the following commands -<https://github.com/libgit2/rugged> + $ mkdir build && cd build + $ cmake .. + $ cmake --build . +Alternatively you can point the CMake GUI tool to the CMakeLists.txt file and generate platform specific build project or IDE workspace. + +To install the library you can specify the install prefix by setting: -Python --------------------- + $ cmake .. -DCMAKE_INSTALL_PREFIX=/install/prefix + $ cmake --build . --target install -Pygit2 is a Python binding to libgit2. +For more advanced use or questions about CMake please read <http://www.cmake.org/Wiki/CMake_FAQ>. -<https://github.com/libgit2/pygit2> -Erlang --------------------- +Language Bindings +================================== -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. +Here are the bindings to libgit2 that are currently available: -<https://github.com/schacon/geef> +* Rugged (Ruby bindings) <https://github.com/libgit2/rugged> +* pygit2 (Python bindings) <https://github.com/libgit2/pygit2> +* libgit2sharp (.NET bindings) <https://github.com/nulltoken/libgit2sharp> +* Geef (Erlang bindings) <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. @@ -243,7 +130,7 @@ libgit2@librelist.com License ================================== -libgit2 is under GPL2 with linking exemption, which basically means you +libgit2 is under GPL2 **with linking exemption**. This 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. |