]> git.proxmox.com Git - libgit2.git/log
libgit2.git
15 years agoAdd basic locking to the git_odb structure
Shawn O. Pearce [Wed, 31 Dec 2008 21:27:51 +0000 (13:27 -0800)]
Add basic locking to the git_odb structure

We grab the lock while accessing the alternates list, ensuring that
we only initialize it once for the given git_odb.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agoAdd a mutex and atomic counter abstraction and implementations
Shawn O. Pearce [Wed, 31 Dec 2008 21:20:21 +0000 (13:20 -0800)]
Add a mutex and atomic counter abstraction and implementations

These abstractions can be used to implement an efficient resource
reference counter and simple mutual exclusion.  On pthreads we use
pthread_mutex_t, except when we are also on glibc and can directly
use its asm/atomic.h definitions.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agoCleanup our header inclusion order to ensure pthread.h is early
Shawn O. Pearce [Wed, 31 Dec 2008 21:16:31 +0000 (13:16 -0800)]
Cleanup our header inclusion order to ensure pthread.h is early

If we are using threads we need to make sure pthread.h comes
in before just about anything else.  Some platforms enable
macros that alter what other headers define.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agoRename the test cases to run in specific orders
Shawn O. Pearce [Wed, 31 Dec 2008 19:16:41 +0000 (11:16 -0800)]
Rename the test cases to run in specific orders

This way we can be fairly certain we run tests of lower-level
parts of the library before we run tests of higher-level more
complex parts.  If there is any problem in a lower-level part
of the library, the earlier test will identify it and stop,
making it easire to troubleshoot the failure.

A rough naming guide has been added for the test suite to
explain the current category structure.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agoUndefine malloc,strdup,calloc before redefining them
Shawn O. Pearce [Wed, 31 Dec 2008 15:34:43 +0000 (07:34 -0800)]
Undefine malloc,strdup,calloc before redefining them

Some systems may use cpp macros to define these functions, glibc
appears to be one of them.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agoSet GIT_EOSERR when the OS errno should be consulted
Shawn O. Pearce [Wed, 31 Dec 2008 07:26:38 +0000 (23:26 -0800)]
Set GIT_EOSERR when the OS errno should be consulted

This error code indicates the OS error code has a better value
describing the last error, as it is likely a network or local
file IO problem identified by a C library function call.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agoWrap malloc and friends and report out of memory as GIT_ENOMEM
Shawn O. Pearce [Wed, 31 Dec 2008 07:21:36 +0000 (23:21 -0800)]
Wrap malloc and friends and report out of memory as GIT_ENOMEM

We now forbid direct use of malloc, strdup or calloc within the
library and instead use wrapper functions git__malloc, etc. to
invoke the underlying library malloc and set git_errno to a no
memory error code if the allocation fails.

In the future once we have pack objects in memory we are likely
to enhance these routines with garbage collection logic to purge
cached pack data when allocations fail.  Because the size of the
function will grow somewhat large, we don't want to mark them for
inline as gcc tends to aggressively inline, creating larger than
expected executables.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agoRename the path of the objects directory to be more specific
Shawn O. Pearce [Wed, 31 Dec 2008 06:29:04 +0000 (22:29 -0800)]
Rename the path of the objects directory to be more specific

We're likely to add additional path data, like the path of the
refs or the path to the config file into the git_odb structure,
as it may grow into the repository wrapper.  Changing the name
of the objects directory reference makes it more clear should
we later add something else.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agoChange git_odb__read_packed to return ENOTFOUND until implemented
Shawn O. Pearce [Wed, 31 Dec 2008 06:25:30 +0000 (22:25 -0800)]
Change git_odb__read_packed to return ENOTFOUND until implemented

We didn't search for the object, so we cannot possibly promise it
to the caller of git_odb_read().

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agoFix size_t snprintf warning by using PRIuPTR format macro
Shawn O. Pearce [Wed, 31 Dec 2008 06:07:56 +0000 (22:07 -0800)]
Fix size_t snprintf warning by using PRIuPTR format macro

This is the correct C99 format code for the size_t type when passed
as an argument to the *printf family.  If the platform doesn't
define it, we assume %lu and just cross our fingers that its the
proper setting for a size_t on this system.  On most sane platforms,
"unsigned long" is the underlying type of "size_t".

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agoSupport building on Mac OS X by using pthread_getspecific for TLS
Shawn O. Pearce [Wed, 31 Dec 2008 05:49:38 +0000 (21:49 -0800)]
Support building on Mac OS X by using pthread_getspecific for TLS

The Mach-O format does not permit gcc to implement the __thread
TLS specification, so we must instead emulate it using a single
int cell allocated from memory and stored inside of the thread
specific data associated with the current pthread.

What makes this tricky is git_errno must be a valid lvalue, so
we really need to return a pointer to the caller and deference it
as part of the git_errno macro.

The GCC-specific __attribute__((constructor)) extension is used
to ensure the pthread_key_t is allocated before any Git functions
are executed in the library, as this is necessary to access our
thread specific storage.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agoRemove unnecessary import of stdlib.h from revwalk.h
Shawn O. Pearce [Wed, 31 Dec 2008 05:50:10 +0000 (21:50 -0800)]
Remove unnecessary import of stdlib.h from revwalk.h

OS headers are best imported from a more central location anyway.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agoCleanup formatting in our head files to be more consistent
Shawn O. Pearce [Wed, 31 Dec 2008 05:25:13 +0000 (21:25 -0800)]
Cleanup formatting in our head files to be more consistent

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agoChange usages of static inline to GIT_INLINE
Julio Espinoza-Sokal [Sun, 21 Dec 2008 01:47:41 +0000 (20:47 -0500)]
Change usages of static inline to GIT_INLINE

Signed-off-by: Julio Espinoza-Sokal <julioes@gmail.com>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agoFix pkgconfig file wrt last added dependencies
Steve Frécinaux [Wed, 31 Dec 2008 00:48:36 +0000 (01:48 +0100)]
Fix pkgconfig file wrt last added dependencies

libz and libcrypto dependencies were added recently while libgit2.pc
did not get updated.

Signed-off-by: Steve Frécinaux <code@istique.net>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agoAdd a routine to determine a git_oid given an git_obj
Ramsay Jones [Sat, 27 Dec 2008 18:59:43 +0000 (18:59 +0000)]
Add a routine to determine a git_oid given an git_obj

Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agoAdd some routines for SHA1 hash computation
Ramsay Jones [Sat, 27 Dec 2008 18:58:25 +0000 (18:58 +0000)]
Add some routines for SHA1 hash computation

[sp: Changed signature for output to use git_oid, and added
     a test case to verify an allocated git_hash_ctx can be
     reinitialized and reused.]

Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agoFix a bug in gitfo_read_file()
Ramsay Jones [Sat, 27 Dec 2008 18:56:16 +0000 (18:56 +0000)]
Fix a bug in gitfo_read_file()

In particular, when asked to read an empty file, this function
calls malloc() with a zero size allocation request. Standard C
says that the behaviour of malloc() in this case is implementation
defined.

[C99, 7.20.3 says "... If the size of the space requested is zero,
the behavior is implementation-defined: either a null pointer is
returned, or the behavior is as if the size were some nonzero
value, except that the returned pointer shall not be used to
access an object."]

Finesse the issue by over-allocating by one byte. Setting the extra
byte to '\0' may also provide a useful sentinel for text files.

Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agoAdd pkg-config support.
Steve Frécinaux [Tue, 30 Dec 2008 11:10:01 +0000 (12:10 +0100)]
Add pkg-config support.

The libgit2.pc is generated on make install and installed, to allow
using the lib through the pkg-config helper.

Signed-off-by: Steve Frécinaux <code@istique.net>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agoAdd make install and uninstall targets.
Steve Frécinaux [Tue, 30 Dec 2008 11:10:00 +0000 (12:10 +0100)]
Add make install and uninstall targets.

It accepts a prefix= parameter (default: /usr/local).

Signed-off-by: Steve Frécinaux <code@istique.net>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agoImplement git_odb__read_loose()
Ramsay Jones [Thu, 18 Dec 2008 22:58:10 +0000 (22:58 +0000)]
Implement git_odb__read_loose()

Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agoAdd a file reading routine along with an io buffer type
Ramsay Jones [Thu, 18 Dec 2008 22:56:14 +0000 (22:56 +0000)]
Add a file reading routine along with an io buffer type

In particular, the gitfo_read_file() routine can be used to slurp
the complete file contents into an gitfo_buf structure. The buffer
content will be allocated by malloc() and may be released by the
gitfo_free_buf() routine. The io buffer type can be initialised
on the stack with the GITFO_BUF_INIT macro.

Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agoRemove references to src/git/config.h
Shawn O. Pearce [Thu, 18 Dec 2008 16:20:50 +0000 (08:20 -0800)]
Remove references to src/git/config.h

It was removed in ec250c6e18e56d12714f9010e1b15e5feec5f473.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agoRun tests in their own subdirectory
Shawn O. Pearce [Thu, 18 Dec 2008 16:17:05 +0000 (08:17 -0800)]
Run tests in their own subdirectory

This way tests can run in parallel without stepping on each other's
temporary work files.  If a test passes the directory is removed
completely; if a test fails only empty directories are removed.
This permits inspection of the failed test's left behind state.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agoAdd some git_otype string conversion and testing routines
Ramsay Jones [Wed, 10 Dec 2008 18:31:28 +0000 (18:31 +0000)]
Add some git_otype string conversion and testing routines

Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agoFix an "implicit function definition" warning on cygwin
Ramsay Jones [Wed, 3 Dec 2008 23:54:47 +0000 (23:54 +0000)]
Fix an "implicit function definition" warning on cygwin

In particular, the warning relates to malloc(), which is
declared in <stdlib.h>.  This header is now included,
indirectly, via the "common.h" header.

Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agoAdd a GIT_PATH_MAX constant
Ramsay Jones [Wed, 3 Dec 2008 23:53:55 +0000 (23:53 +0000)]
Add a GIT_PATH_MAX constant

The PATH_MAX symbol is often, but not always, defined
in the <limits.h> header.  In particular, on cygwin you
need to include this header to avoid a compilation error.

However, some systems define PATH_MAX to be something as
small as 256, which POSIX is happy to allow, while others
allow much larger values.  In general it can vary from
one filesystem to another.

In order to avoid the vagaries of different systems, define
our own symbol.

Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agoFix some doxygen warnings and errors
Ramsay Jones [Wed, 3 Dec 2008 23:52:57 +0000 (23:52 +0000)]
Fix some doxygen warnings and errors

Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agoAdd Adam Simpkins to list of consenting authors
Andreas Ericsson [Wed, 3 Dec 2008 09:27:48 +0000 (10:27 +0100)]
Add Adam Simpkins to list of consenting authors

Signed-off-by: Andreas Ericsson <ae@op5.se>
15 years agoAdd routines to convert git_oid to hex strings
Shawn O. Pearce [Tue, 2 Dec 2008 17:56:23 +0000 (09:56 -0800)]
Add routines to convert git_oid to hex strings

[sp: Credit for some of this implementation goes to Pieter, I
     started off a patch he proposed for libgit2 but reworked
     enough of it that I don't want to blame him for any bugs.]

Suggested-by: Pieter de Bie <pdebie@ai.rug.nl>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agoDiasble TLS on cygwin
Ramsay Jones [Sat, 29 Nov 2008 19:21:24 +0000 (19:21 +0000)]
Diasble TLS on cygwin

Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Acked-by: Andreas Ericsson <ae@op5.se>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agoUse __CHECKER__ to detect when sparse is running
Ramsay Jones [Sat, 29 Nov 2008 19:20:07 +0000 (19:20 +0000)]
Use __CHECKER__ to detect when sparse is running

Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Acked-by: Andreas Ericsson <ae@op5.se>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agoUse cgcc in the sparse target
Ramsay Jones [Sat, 29 Nov 2008 19:19:31 +0000 (19:19 +0000)]
Use cgcc in the sparse target

cgcc is the recommended way to run sparse, since it provides
many -Defines suitable to the given gcc platform. For example,
on some Ubuntu/glibc versions, a plain sparse invocation gives
the following warning:

    "warning: This machine appears to be neither x86_64 nor i386."

Using "cgcc -no-compile" instead eliminates this warning.

Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Acked-by: Andreas Ericsson <ae@op5.se>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agoFixup documentation to reflect the "git_obj" rename
Ramsay Jones [Sat, 29 Nov 2008 19:18:43 +0000 (19:18 +0000)]
Fixup documentation to reflect the "git_obj" rename

commit dff79e27d3d2cdc09790ded80fe2ea8ff5d61034 renamed
the (small object) "git_sobj" to a plain "git_obj", but
neglected to update some of the documentation to reflect
that change.

Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agoAdd a dirent walker to the fileops API
Andreas Ericsson [Sat, 29 Nov 2008 14:34:20 +0000 (15:34 +0100)]
Add a dirent walker to the fileops API

Since at least MS have something like GetFirstDirEnt() and
GetNextDirEnt() (presumably with superior performance), we
can let MS hackers add support for a dirent walker using
that API instead, while we stick with the posix-style
readdir() calls.

Signed-off-by: Andreas Ericsson <ae@op5.se>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agoAdd an io caching layer to the gitfo api
Andreas Ericsson [Sat, 29 Nov 2008 14:28:12 +0000 (15:28 +0100)]
Add an io caching layer to the gitfo api

The idea is taken from Junio's work in read-cache.c, where
it's used for writing out the index without tap-dancing on
the poor harddrive. Since it's almost certainly useful for
cached writing of packfiles too, we turn it into a generic
API, making it perfectly simple to reuse it later.

gitfo_write_cached() has the same contract as gitfo_write(), it
returns GIT_SUCCESS if all bytes are successfully written (or were
at least buffered for later writing), and <0 if an error occurs
during buffer writing.

Signed-off-by: Andreas Ericsson <ae@op5.se>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agoRemove config.h and make fileops an internal API
Andreas Ericsson [Sun, 23 Nov 2008 21:37:55 +0000 (22:37 +0100)]
Remove config.h and make fileops an internal API

Since it doesn't make sense to make the disk access stuff
portable *AND* public (that's a job for each application
imo), we can take a shortcut and just support unixy stuff
for now and get away with coding most of it as macros.

Since we go with an internal API for starters and only
provide higher-level API's to the libgit users, we'll be
ok with this approach.

Signed-off-by: Andreas Ericsson <ae@op5.se>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agodoxygen config: Update path to public headers
Andreas Ericsson [Thu, 27 Nov 2008 08:26:52 +0000 (09:26 +0100)]
doxygen config: Update path to public headers

In d4043ee9d97031e94f205110996d2381dd26c540, public headers
were moved from include/git to src/git, but the doxygen
configuration wasn't updated to reflect this. This patch
amends that slippage, making documentation generation once
again work as intended.

Signed-off-by: Andreas Ericsson <ae@op5.se>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agoAdd a new author state "ign" to git.git-authors
Andreas Ericsson [Sat, 22 Nov 2008 13:04:25 +0000 (14:04 +0100)]
Add a new author state "ign" to git.git-authors

This is to be used for application code that currently
resides in git, but only for authors whose only not
insignificant contributions are for that code (such as
"imap-send").

Presently, this is used for Mike McCormack and Robert
Shearman.

Signed-off-by: Andreas Ericsson <ae@op5.se>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agoAdd Kristian Høgsberg to the list of consenting authors
Andreas Ericsson [Tue, 25 Nov 2008 15:28:51 +0000 (16:28 +0100)]
Add Kristian Høgsberg to the list of consenting authors

Signed-off-by: Andreas Ericsson <ae@op5.se>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agoAdd Adam Simpkins as ??? to git.git-authors
Andreas Ericsson [Sat, 22 Nov 2008 13:03:06 +0000 (14:03 +0100)]
Add Adam Simpkins as ??? to git.git-authors

Adam has made significant contributions to the http
transport code, but his listed email address is no longer
valid.

Signed-off-by: Andreas Ericsson <ae@op5.se>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agoAdd René Scharfe to git.git-authors
Andreas Ericsson [Sat, 22 Nov 2008 13:02:07 +0000 (14:02 +0100)]
Add René Scharfe to git.git-authors

Signed-off-by: Andreas Ericsson <ae@op5.se>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agoAdd Matthieu Moy and Steffen Prohaska to git.git-authors
Andreas Ericsson [Fri, 21 Nov 2008 08:26:57 +0000 (09:26 +0100)]
Add Matthieu Moy and Steffen Prohaska to git.git-authors

Signed-off-by: Andreas Ericsson <ae@op5.se>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agoAdd Sven Verdoolaege to git.git-authors
Andreas Ericsson [Thu, 20 Nov 2008 15:25:41 +0000 (16:25 +0100)]
Add Sven Verdoolaege to git.git-authors

Signed-off-by: Andreas Ericsson <ae@op5.se>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agoMake using CFLAGS a bit simpler
Andreas Ericsson [Sat, 22 Nov 2008 14:35:31 +0000 (15:35 +0100)]
Make using CFLAGS a bit simpler

This patch introduces the $(ALL_CFLAGS) variable, which holds
$(BASIC_CFLAGS) as well as userdefined $(CFLAGS) and then
consistently uses that variable where both were used anyway.

Since we're in the area, we optimize the sparse running a
bit, getting rid of the shell and just letting sparse iterate
over the files.

Signed-off-by: Andreas Ericsson <ae@op5.se>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agoAdd $(CONFIG_H) as a build-dependency for sparse
Andreas Ericsson [Sat, 22 Nov 2008 14:33:15 +0000 (15:33 +0100)]
Add $(CONFIG_H) as a build-dependency for sparse

Signed-off-by: Andreas Ericsson <ae@op5.se>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agoMake src/git/config.h a macro in Makefile
Andreas Ericsson [Sat, 22 Nov 2008 14:25:59 +0000 (15:25 +0100)]
Make src/git/config.h a macro in Makefile

This makes it far more convenient to reference as a dependency
for other targets.

Signed-off-by: Andreas Ericsson <ae@op5.se>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agoRemove license top-comment from public header files
Andreas Ericsson [Sat, 22 Nov 2008 14:17:17 +0000 (15:17 +0100)]
Remove license top-comment from public header files

Since it's being added when we install the headers anyway,
we might as well get rid of it. If anything, we should point
coders to the COPYING file in the project's root directory
instead of duplicating the same (large-ish) text everywhere.

Signed-off-by: Andreas Ericsson <ae@op5.se>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agoAdd an embryo of a TLS-aware error handling system
Andreas Ericsson [Tue, 18 Nov 2008 21:20:15 +0000 (22:20 +0100)]
Add an embryo of a TLS-aware error handling system

This adds the per-thread global variable git_errno to the
system, which callers can examine to get information about
an error.

Two helper functions are added to reduce LoC-count for the
library code itself.

Also, some exceptions are made for running sparse on GIT_TLS
definitions, since it doesn't grok thread-local variables at
all.

Signed-off-by: Andreas Ericsson <ae@op5.se>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agoAdd util.h - utility macros
Andreas Ericsson [Sat, 22 Nov 2008 13:44:47 +0000 (14:44 +0100)]
Add util.h - utility macros

ARRAY_SIZE() et al go in util.h, included from common.h

Signed-off-by: Andreas Ericsson <ae@op5.se>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agoAdd internal common.h file
Andreas Ericsson [Sat, 22 Nov 2008 13:42:12 +0000 (14:42 +0100)]
Add internal common.h file

This one pulls in compiler compatibility macros, some
common header files, and also the public common.h header.

C source files are modified to use the private common.h
in favour of the public one.

Signed-off-by: Andreas Ericsson <ae@op5.se>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agoAdd cc-compat.h - C compiler compat macros for internal use
Andreas Ericsson [Sat, 22 Nov 2008 13:40:51 +0000 (14:40 +0100)]
Add cc-compat.h - C compiler compat macros for internal use

Holds things such as FLEX_ARRAY and whatnot.

Signed-off-by: Andreas Ericsson <ae@op5.se>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agoRename git_revpool_* functions gitrp_*
Andreas Ericsson [Sat, 22 Nov 2008 13:57:40 +0000 (14:57 +0100)]
Rename git_revpool_* functions gitrp_*

Otherwise their prototypes don't match their declarations.

Detected by 'sparse', which is obviously good to run
before each commit.

Signed-off-by: Andreas Ericsson <ae@op5.se>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agoAdd a 'sparse' make target
Andreas Ericsson [Tue, 18 Nov 2008 21:17:40 +0000 (22:17 +0100)]
Add a 'sparse' make target

Given the confusion on git@vger, we'd better not name
this target "check" or (worse) "test", but it's still
useful to have. As "sparse", noone should have problems
understanding what it does.

Signed-off-by: Andreas Ericsson <ae@op5.se>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agos/COPYING/.HEADER/ for install-headers target
Andreas Ericsson [Sat, 22 Nov 2008 12:05:32 +0000 (13:05 +0100)]
s/COPYING/.HEADER/ for install-headers target

We don't want to prepend the entire license; Only the
file header part of it.

Signed-off-by: Andreas Ericsson <ae@op5.se>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agoGet rid of GIT__PRIVATE macro
Andreas Ericsson [Tue, 18 Nov 2008 20:28:55 +0000 (21:28 +0100)]
Get rid of GIT__PRIVATE macro

Using it in the first place means something's wrong.
This patch replaces it with an internal header which
carries the previously "protected" code instead.

Internal source-files simply include "commit.h" and
they're done. The internal header includes the public
one to make sure we always use the proper prototype.

Signed-off-by: Andreas Ericsson <ae@op5.se>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agoAdd compiler/platform agnostic thread-local storage
Andreas Ericsson [Tue, 18 Nov 2008 18:06:25 +0000 (19:06 +0100)]
Add compiler/platform agnostic thread-local storage

It doesn't cover all cases, but we can work on those as
we go along. For now, gcc, MSVC++, Intel C/C++, IBM XL C/C++,
Sun Studio C/C++ and Borland C++ Builder are the supported
compilers (although we boldly assume that they all are of
a recent enough version to support thread-local storage).

This is intended to be used in upcoming patches that implement
graceful (but TLS-dependant) error-handling in the library.

As an added bonus, we also bring the online_cpus() function
from git.git to detect the number of usable cpu's.

Signed-off-by: Andreas Ericsson <ae@op5.se>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agoAdd a fake and phony install-headers target
Andreas Ericsson [Tue, 18 Nov 2008 00:27:29 +0000 (01:27 +0100)]
Add a fake and phony install-headers target

It actually does what it's supposed to (more or less),
but not very portably and not to the correct directory.

Signed-off-by: Andreas Ericsson <ae@op5.se>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agoMove public headers to src/git
Andreas Ericsson [Tue, 18 Nov 2008 00:18:52 +0000 (01:18 +0100)]
Move public headers to src/git

It's arguably smoother to keep them close to the source,
as that's where one's working when modifying them. More
importantly, though, is the ability to use private headers
in the src/ dir that simply include "git/$samename.h" to
get to the public API at the same time.

Signed-off-by: Andreas Ericsson <ae@op5.se>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agos/git_revp/git_revpool/
Andreas Ericsson [Tue, 18 Nov 2008 00:02:27 +0000 (01:02 +0100)]
s/git_revp/git_revpool/

git_revp is something I personally can't stop pronouncing
"rev pointer". I'm sure others would suffer the same
problem.

Also, rename the git_revp_ sub-api "gitrp_". This is the
first of many such renames, primarily done to prevent
extreme inflation in the "git_" namespace, which we'd like
to reserve for a higher-level API.

While we're at it, we remove the noise-char "c" from a lot
of functions. Since revision walking is all about commits,
the common case should be that we're dealing with commits.
Exceptions can get a more mnemonic description as needed.

Signed-off-by: Andreas Ericsson <ae@op5.se>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agoRename "git_sobj" "git_obj"
Andreas Ericsson [Mon, 17 Nov 2008 23:59:36 +0000 (00:59 +0100)]
Rename "git_sobj" "git_obj"

The 's' never really made sense, since it's not a "small"
object at all, but rather a plain object. As such, it should
have a "plain" object name.

Signed-off-by: Andreas Ericsson <ae@op5.se>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agoUse same-directory include for public headers
Andreas Ericsson [Mon, 17 Nov 2008 23:58:02 +0000 (00:58 +0100)]
Use same-directory include for public headers

It doesn't make sense to use "git/somefile.h" in the
public git headers, as it's quite likely that projects
using them will have a git directory themselves. This
alters it, making the public headers look for headers
in the same directory they themselves are in.

Signed-off-by: Andreas Ericsson <ae@op5.se>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agoList git.git authors consenting to relicense their code
Andreas Ericsson [Mon, 17 Nov 2008 22:15:30 +0000 (23:15 +0100)]
List git.git authors consenting to relicense their code

Since re-using code from git.git proper is the quick way
forward, we need to list those who have given their consent
to do just that. The relicense permission is only valid for
use with libgit2, and only for GPLv2 + gcc-exception (as
specified by 'COPYING'.

Signed-off-by: Andreas Ericsson <ae@op5.se>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agoAdd a zlib support shell
Shawn O. Pearce [Tue, 4 Nov 2008 02:53:09 +0000 (18:53 -0800)]
Add a zlib support shell

Some versions of zlib don't have a deflateBound defined, so
we define it ourselves after including zlib.h.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agoImplement some of the basic git_odb open and close API
Shawn O. Pearce [Tue, 4 Nov 2008 02:39:37 +0000 (18:39 -0800)]
Implement some of the basic git_odb open and close API

Far from being complete, but its a good start.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agoAdd git_fsize to the os file API
Shawn O. Pearce [Tue, 4 Nov 2008 02:38:57 +0000 (18:38 -0800)]
Add git_fsize to the os file API

This permits us to get the size of an opened file.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agoRedefine git_fread, git_fwrite to transfer the whole unit
Shawn O. Pearce [Tue, 4 Nov 2008 01:14:25 +0000 (17:14 -0800)]
Redefine git_fread, git_fwrite to transfer the whole unit

We never want to accept a short read or a short write when
transferring data to or from a local file.

Either the entire read (or write) completes or the operation
failed and we will not recover gracefully from it.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agoAdd git_oid_cpy, git_oid_cmp as inline functions
Shawn O. Pearce [Tue, 4 Nov 2008 01:31:16 +0000 (17:31 -0800)]
Add git_oid_cpy, git_oid_cmp as inline functions

These are easily built off the standard C library functions memcpy
and memcmp.  By marking these inline we stand a good chance of
the C compiler replacing the entire thing with tight machine code,
because many compilers will actually inline a memcmp or memcpy when
the 3rd argument (the size) is a constant value.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agoAdd an extra oid test to verify control characters aren't read
Shawn O. Pearce [Tue, 4 Nov 2008 02:19:02 +0000 (18:19 -0800)]
Add an extra oid test to verify control characters aren't read

We only want hex digits to be read, any other character in the 8-bit
character set is invalid within an id string.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agoChange test_main to run a single test case out of the suite
Shawn O. Pearce [Tue, 4 Nov 2008 02:38:12 +0000 (18:38 -0800)]
Change test_main to run a single test case out of the suite

By passing the name of the test function on the command line
we execute exactly that one test, and then exit successfully
if the test did not fail.  This permits multiple functions in
the same .c file, so they could be called from a shell script
or debugged independently externally.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agoFix Makefile to correctly handle 'make -j4 test'
Shawn O. Pearce [Tue, 4 Nov 2008 01:00:54 +0000 (17:00 -0800)]
Fix Makefile to correctly handle 'make -j4 test'

If we have more than one test build running we cannot use the same
file for each test case; instead we need to use a per-test path so
there aren't any collisions.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agoFix GIT_EXTERN to actually mark the prototype as extern
Shawn O. Pearce [Tue, 4 Nov 2008 00:29:03 +0000 (16:29 -0800)]
Fix GIT_EXTERN to actually mark the prototype as extern

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agoMove GIT_NORETURN into test_lib.h only
Shawn O. Pearce [Tue, 4 Nov 2008 00:29:56 +0000 (16:29 -0800)]
Move GIT_NORETURN into test_lib.h only

We should never have a noreturn style function in the library
itself, as such a function would prevent the calling application
from handling error conditions the way it wants.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agoEnable warnings by default and fix warning in oid.c
Shawn O. Pearce [Tue, 4 Nov 2008 02:00:49 +0000 (18:00 -0800)]
Enable warnings by default and fix warning in oid.c

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agoCorrect indentation in git/odb.h
Shawn O. Pearce [Tue, 4 Nov 2008 01:52:59 +0000 (17:52 -0800)]
Correct indentation in git/odb.h

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agoCreate a basic test suite for the library and test oid functions
Shawn O. Pearce [Sun, 2 Nov 2008 01:14:22 +0000 (18:14 -0700)]
Create a basic test suite for the library and test oid functions

This is a horribly simple test suite that makes it fairly easy to
put together some basic function level unit tests on the library.
Its patterned somewhat after the test suite in git.git, but also
after the "Check" test library.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agoCreate a micro abstraction around the POSIX file APIs
Shawn O. Pearce [Sat, 1 Nov 2008 23:53:06 +0000 (16:53 -0700)]
Create a micro abstraction around the POSIX file APIs

This way we can start to write IO code to read and write files in the
Git object database, but provide a hook to inject native Win32 APIs
instead so libgit2 can be ported to run natively on that platform.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agoSwitch the license from BSD to GPL+libgcc exception
Shawn O. Pearce [Sat, 1 Nov 2008 22:55:01 +0000 (15:55 -0700)]
Switch the license from BSD to GPL+libgcc exception

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agoMove include files to include/git/, drop git_ prefix from file names
Shawn O. Pearce [Sat, 1 Nov 2008 22:42:23 +0000 (15:42 -0700)]
Move include files to include/git/, drop git_ prefix from file names

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agoScratch the git_revp_attr configuration of a git_revp
Shawn O. Pearce [Sat, 1 Nov 2008 01:34:02 +0000 (18:34 -0700)]
Scratch the git_revp_attr configuration of a git_revp

This isn't the best idea I've head.  Pierre Habouzit was suggesting
a technique of assigning a unique integer to each commit and then
allocating storage out of auxiliary pools, using the commit's unique
integer to index into any auxiliary pool in constant time.  This way
both applications and the library can efficiently attach arbitrary
data onto a commit, such as rewritten parents, or flags, and have
them disconnected from the main object hash table.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agoDocument the return NULL style of calling convention
Shawn O. Pearce [Sat, 1 Nov 2008 01:30:22 +0000 (18:30 -0700)]
Document the return NULL style of calling convention

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agoDrop the _t suffix as it is a POSIX reserved namespace
Shawn O. Pearce [Sat, 1 Nov 2008 01:23:01 +0000 (18:23 -0700)]
Drop the _t suffix as it is a POSIX reserved namespace

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agoReplace git_result_t with int
Shawn O. Pearce [Sat, 1 Nov 2008 01:16:26 +0000 (18:16 -0700)]
Replace git_result_t with int

This seems to be preferred on the mailing list.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agoHide non-exported symbols when linking the library
Pierre Habouzit [Fri, 31 Oct 2008 22:10:51 +0000 (15:10 -0700)]
Hide non-exported symbols when linking the library

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agoTake the first stab at defining revision traversal
Shawn O. Pearce [Fri, 31 Oct 2008 19:30:28 +0000 (12:30 -0700)]
Take the first stab at defining revision traversal

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agoNote that comments should be doxygen javadoc style
Shawn O. Pearce [Fri, 31 Oct 2008 19:30:04 +0000 (12:30 -0700)]
Note that comments should be doxygen javadoc style

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agoFix Makefile targets to correctly depend on *.h files
Shawn O. Pearce [Fri, 31 Oct 2008 19:28:49 +0000 (12:28 -0700)]
Fix Makefile targets to correctly depend on *.h files

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agoCorrect group name of the git_odb module
Shawn O. Pearce [Fri, 31 Oct 2008 18:46:51 +0000 (11:46 -0700)]
Correct group name of the git_odb module

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agoUse wildcard to avoid listing out all source files by hand
Shawn O. Pearce [Fri, 31 Oct 2008 18:44:00 +0000 (11:44 -0700)]
Use wildcard to avoid listing out all source files by hand

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agoBegin a description of our naming and coding conventions
Shawn O. Pearce [Fri, 31 Oct 2008 18:37:58 +0000 (11:37 -0700)]
Begin a description of our naming and coding conventions

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agoAdd _t suffix to all data types
Shawn O. Pearce [Fri, 31 Oct 2008 18:04:48 +0000 (11:04 -0700)]
Add _t suffix to all data types

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agoAdd a GIT_ prefix to OBJ_ constants to scope them better
Shawn O. Pearce [Fri, 31 Oct 2008 18:01:28 +0000 (11:01 -0700)]
Add a GIT_ prefix to OBJ_ constants to scope them better

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agoHide git_odb's internal structure from applcation code
Shawn O. Pearce [Fri, 31 Oct 2008 17:57:04 +0000 (10:57 -0700)]
Hide git_odb's internal structure from applcation code

This way only structures we ask the caller to allocate on their
call stack or which we want to allow them to use members from
are shown in the API docs.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agoAdd a git_sobj_close to release the git_sobj data
Shawn O. Pearce [Fri, 31 Oct 2008 17:56:18 +0000 (10:56 -0700)]
Add a git_sobj_close to release the git_sobj data

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agoCleanup git_odb documentation formatting
Shawn O. Pearce [Fri, 31 Oct 2008 17:55:58 +0000 (10:55 -0700)]
Cleanup git_odb documentation formatting

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agoHide GIT_{BEGIN,END}_DECL from doxygen as its not part of our API
Shawn O. Pearce [Fri, 31 Oct 2008 17:55:12 +0000 (10:55 -0700)]
Hide GIT_{BEGIN,END}_DECL from doxygen as its not part of our API

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agoRename git_odb_sread to just git_odb_read
Shawn O. Pearce [Fri, 31 Oct 2008 17:43:20 +0000 (10:43 -0700)]
Rename git_odb_sread to just git_odb_read

Most read calls will use the small object format, as the
majority of the content within the database is very small
objects (under 20 KB when inflated).

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agoMark git_oid parameters const when they shouldn't be modified
Shawn O. Pearce [Fri, 31 Oct 2008 17:42:32 +0000 (10:42 -0700)]
Mark git_oid parameters const when they shouldn't be modified

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
15 years agoInitial draft of libgit2
Shawn O. Pearce [Fri, 31 Oct 2008 16:57:29 +0000 (09:57 -0700)]
Initial draft of libgit2

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>