1. 07 Feb, 2014 1 commit
  2. 05 Feb, 2014 1 commit
  3. 30 Jan, 2014 1 commit
  4. 27 Jan, 2014 2 commits
  5. 17 Jan, 2014 1 commit
  6. 15 Jan, 2014 1 commit
  7. 11 Dec, 2013 2 commits
    • Remove converting user error to GIT_EUSER · 25e0b157
      This changes the behavior of callbacks so that the callback error
      code is not converted into GIT_EUSER and instead we propagate the
      return value through to the caller.  Instead of using the
      giterr_capture and giterr_restore functions, we now rely on all
      functions to pass back the return value from a callback.
      
      To avoid having a return value with no error message, the user
      can call the public giterr_set_str or some such function to set
      an error message.  There is a new helper 'giterr_set_callback'
      that functions can invoke after making a callback which ensures
      that some error message was set in case the callback did not set
      one.
      
      In places where the sign of the callback return value is
      meaningful (e.g. positive to skip, negative to abort), only the
      negative values are returned back to the caller, obviously, since
      the other values allow for continuing the loop.
      
      The hardest parts of this were in the checkout code where positive
      return values were overloaded as meaningful values for checkout.
      I fixed this by adding an output parameter to many of the internal
      checkout functions and removing the overload.  This added some
      code, but it is probably a better implementation.
      
      There is some funkiness in the network code where user provided
      callbacks could be returning a positive or a negative value and
      we want to rely on that to cancel the loop.  There are still a
      couple places where an user error might get turned into GIT_EUSER
      there, I think, though none exercised by the tests.
      Russell Belfer committed
    • Add config read fns with controlled error behavior · 9f77b3f6
      This adds `git_config__lookup_entry` which will look up a key in
      a config and return either the entry or NULL if the key was not
      present.  Optionally, it can either suppress all errors or can
      return them (although not finding the key is not an error for this
      function).  Unlike other accessors, this does not normalize the
      config key string, so it must only be used when the key is known
      to be in normalized form (i.e. all lower-case before the first dot
      and after the last dot, with no invalid characters).
      
      This also adds three high-level helper functions to look up config
      values with no errors and a fallback value.  The three functions
      are for string, bool, and int values, and will resort to the
      fallback value for any error that arises.  They are:
      
      * `git_config__get_string_force`
      * `git_config__get_bool_force`
      * `git_config__get_int_force`
      
      None of them normalize the config `key` either, so they can only
      be used for internal cases where the key is known to be in normal
      format.
      Russell Belfer committed
  8. 02 Dec, 2013 1 commit
  9. 08 Nov, 2013 1 commit
  10. 07 Nov, 2013 1 commit
  11. 05 Nov, 2013 1 commit
  12. 08 Oct, 2013 2 commits
    • More filemode cleanups for FAT on MacOS · 14997dc5
      This cleans up some additional issues.  The main change is that
      on a filesystem that doesn't support mode bits, libgit2 will now
      create new blobs with GIT_FILEMODE_BLOB always instead of being
      at the mercy to the filesystem driver to report executable or not.
      This means that if "core.filemode" lies and claims that filemode
      is not supported, then we will ignore the executable bit from the
      filesystem.  Previously we would have allowed it.
      
      This adds an option to the new git_repository_reset_filesystem to
      recurse through submodules if desired.  There may be other types
      of APIs that would like a "recurse submodules" option, but this
      one is particularly useful.
      
      This also has a number of cleanups, etc., for related things
      including trying to give better error messages when problems come
      up from the filesystem.  For example, the FAT filesystem driver on
      MacOS appears to return errno EINVAL if you attempt to write a
      filename with invalid UTF-8 in it.  We try to capture that with a
      better error message now.
      Russell Belfer committed
  13. 04 Oct, 2013 1 commit
    • Add git_repository_reset_filesystem and fix tests · 5173ea92
      When a repository is transferred from one file system to another,
      many of the config settings that represent the properties of the
      file system may be wrong.  This adds a new public API that will
      refresh the config settings of the repository to account for the
      change of file system.  This doesn't do a full "reinitialize" and
      operates on a existing git_repository object refreshing the config
      when done.
      
      This commit then makes use of the new API in clar as each test
      repository is set up.
      
      This commit also has a number of other clar test fixes where we
      were making assumptions about the type of filesystem, either based
      on outdated config data or based on the OS instead of the FS.
      Russell Belfer committed
  14. 03 Oct, 2013 3 commits
    • Update repo init with fewer platform assumptions · 840fb4fc
      The repo init code was assuming Windows == no filemode, and
      Mac or Windows == no case sensitivity.  Those assumptions are not
      consistently true depending on the mounted file system.  This is a
      first step to removing those assumptions.  It focuses on the repo
      init code and the tests of that code.  There are still many other
      tests that are broken when those assumptions don't hold true, but
      this clears up one area of the code.
      
      Also, this moves the core.precomposeunicode logic to be closer to
      the current logic in core Git where it will be set to true on any
      filesystem where composed unicode is decomposed when read back.
      Russell Belfer committed
    • Clean up annoying warnings · af302aca
      The indexer code was generating warnings on Windows 64-bit.  I
      looked closely at the logic and was able to simplify it a bit.
      
      Also this fixes some other Windows and Linux warnings.
      Russell Belfer committed
    • Add check if we need to precompose unicode on Mac · 6b7991e2
      This adds initialization of core.precomposeunicode to repo init
      on Mac.  This is necessary because when a Mac accesses a repo on
      a VFAT or SAMBA file system, it will return directory entries in
      decomposed unicode even if the filesystem entry is precomposed.
      
      This also removes caching of a number of repo properties from the
      repo init pipeline because these are properties of the specific
      filesystem on which the repo is created, not of the system as a
      whole.
      Russell Belfer committed
  15. 24 Sep, 2013 1 commit
    • Clean up newly introduced warnings · 1ca3e49f
      The attempt to "clean up warnings" seems to have introduced some
      new warnings on compliant compilers.  This fixes those in a way
      that I suspect will also be okay for the non-compliant compilers.
      
      Also this fixes what appears to be an extra semicolon in the
      repo initialization template dir handling (and as part of that
      fix, handles the case where an error occurs correctly).
      Russell Belfer committed
  16. 20 Sep, 2013 1 commit
  17. 19 Sep, 2013 1 commit
  18. 17 Sep, 2013 4 commits
    • Add ident filter · 4b11f25a
      This adds the ident filter (that knows how to replace $Id$) and
      tweaks the filter APIs and code so that git_filter_source objects
      actually have the updated OID of the object being filtered when
      it is a known value.
      Russell Belfer committed
    • Create public filter object and use it · 85d54812
      This creates include/sys/filter.h with a basic definition of a
      git_filter and then converts the internal code to use it.  There
      are related internal objects (git_filter_list) that we will want
      to publish at some point, but this is a first step.
      Russell Belfer committed
    • No such thing as an orphan branch · 605da51a
      Unfortunately git-core uses the term "unborn branch" and "orphan
      branch" interchangeably. However, "orphan" is only really there for
      the checkout command, which has the `--orphan` option so it doesn't
      actually create the branch.
      
      Branches never have parents, so the distinction of a branch with no
      parents is odd to begin with. Crucially, the error messages deal with
      unborn branches, so let's use that.
      Carlos Martín Nieto committed
  19. 29 Aug, 2013 3 commits
  20. 15 Jul, 2013 1 commit
  21. 10 Jul, 2013 1 commit
    • Add BARE option to git_repository_open_ext · 3fe046cf
      This adds a BARE option to git_repository_open_ext which allows
      a fast open path that still knows how to read gitlinks and to
      search for the actual .git directory from a subdirectory.
      
      `git_repository_open_bare` is still simpler and faster, but having
      a gitlink aware fast open is very useful for submodules where we
      want to quickly be able to peek at the HEAD and index data without
      doing any other meaningful repo operations.
      Russell Belfer committed
  22. 12 Jun, 2013 1 commit
  23. 10 Jun, 2013 2 commits
    • Reorganize diff and add basic diff driver · 114f5a6c
      This is a significant reorganization of the diff code to break it
      into a set of more clearly distinct files and to document the new
      organization.  Hopefully this will make the diff code easier to
      understand and to extend.
      
      This adds a new `git_diff_driver` object that looks of diff driver
      information from the attributes and the config so that things like
      function content in diff headers can be provided.  The full driver
      spec is not implemented in the commit - this is focused on the
      reorganization of the code and putting the driver hooks in place.
      
      This also removes a few #includes from src/repository.h that were
      overbroad, but as a result required extra #includes in a variety
      of places since including src/repository.h no longer results in
      pulling in the whole world.
      Russell Belfer committed
  24. 07 Jun, 2013 1 commit
  25. 31 May, 2013 1 commit
  26. 29 May, 2013 1 commit
  27. 24 May, 2013 1 commit
  28. 23 May, 2013 1 commit
  29. 15 May, 2013 1 commit