1. 05 Dec, 2010 1 commit
  2. 23 Nov, 2010 1 commit
  3. 02 Nov, 2010 1 commit
    • Change git_repository initialization to use a path · 6fd195d7
      The constructor to git_repository is now called
      
      	'git_repository_open(path)'
      
      and takes a path to a git repository instead of an existing ODB object.
      Unit tests have been updated accordingly and the two test repositories
      have been merged into one.
      
      Signed-off-by: Vicent Marti <tanoku@gmail.com>
      Vicent Marti committed
  4. 30 Apr, 2010 1 commit
  5. 20 Jan, 2010 3 commits
  6. 05 Jun, 2009 3 commits
  7. 20 Mar, 2009 1 commit
    • win32: Add routines to abstract memory-mapped file functions · 79ca2edc
      In particular, the git__mmap() and git__munmap() routines provide
      the interface to platform specific memory-mapped file facilities.
      We provide implementations for unix and win32, which can be found
      in their own sub-directories.
      
      Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
      Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
      Ramsay Jones committed
  8. 18 Mar, 2009 4 commits
    • win32: Open or create files in binary mode · 7a6cf815
      On windows, unless we use the O_BINARY flag in the open()
      call, the file I/O routines will perform line ending
      conversion (\r\n => \n on input, \n => \r\n on output).
      In addition to the performance penalty, most files in the
      object database are binary and will, therefore, become
      corrupted by this conversion.
      
      Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
      Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
      Ramsay Jones committed
    • win32: fixup some headers to improve win32 compilation · 840fb8b7
      Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
      Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
      Ramsay Jones committed
    • Fix some (digital-mars) compiler warnings · a9984a4e
      In particular, conditional expressions which contain an
      assignment statement, where the expression type is not
      explicitly made to be boolean, elicits the following
      message:
          warning 2: possible unintended assignment
      
      Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
      Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
      Ramsay Jones committed
    • Avoid using a gcc compiler language extension · fc3c3a20
      In particular, using pointer arithmetic on void pointers,
      despite being quite useful, is not legal in standard C.
      Avoiding non-standard C constructs will help in porting
      the library to other compilers/platforms.
      
      Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
      Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
      Ramsay Jones committed
  9. 03 Jan, 2009 1 commit
    • Add a simple mmap wrapper for cross-platform mmap usage · 20e7f426
      Win32 has a variant of mmap that is harder to use than POSIX, but
      to run natively and efficiently on Win32 we need some form of it.
      
      gitfo_map_ro() provides a basic mmap function for use in locations
      where we need read-only random data access to large ranges of a file,
      such as a pack-*.idx.
      
      Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
      Shawn O. Pearce committed
  10. 01 Jan, 2009 1 commit
  11. 31 Dec, 2008 4 commits
    • Rewrite git_foreach_dirent into gitfo_dirent · 5690f02e
      Our fileops API is currently private.  We aren't planning on supplying
      a cross-platform file API to applications that link to us.  If we did,
      we'd probably whole-sale publish fileops, not just the dirent code.
      
      By moving it to be private we can also change the call signature to
      permit the buffer to be passed down through the call chain.  This is
      very helpful when we are doing a recursive scan as we can reuse just
      one buffer in all stack frames, reducing the impact the recursion has
      on the stack frames in the data cache.
      
      Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
      Shawn O. Pearce committed
    • Set GIT_EOSERR when the OS errno should be consulted · 7dd8a9f7
      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>
      Shawn O. Pearce committed
    • Wrap malloc and friends and report out of memory as GIT_ENOMEM · 64a47c01
      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>
      Shawn O. Pearce committed
    • Change usages of static inline to GIT_INLINE · 213e720c
      Signed-off-by: Julio Espinoza-Sokal <julioes@gmail.com>
      Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
      Julio Espinoza-Sokal committed
  12. 30 Dec, 2008 1 commit
    • Fix a bug in gitfo_read_file() · 42fd40db
      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>
      Ramsay Jones committed
  13. 19 Dec, 2008 1 commit
    • Add a file reading routine along with an io buffer type · 75d58430
      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>
      Ramsay Jones committed
  14. 09 Dec, 2008 1 commit
    • Add a GIT_PATH_MAX constant · 5ee2fe77
      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>
      Ramsay Jones committed
  15. 02 Dec, 2008 3 commits
    • Add a dirent walker to the fileops API · ea790f33
      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>
      Andreas Ericsson committed
    • Add an io caching layer to the gitfo api · 4188d28f
      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>
      Andreas Ericsson committed
    • Remove config.h and make fileops an internal API · ec250c6e
      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>
      Andreas Ericsson committed