1. 07 Dec, 2012 1 commit
    • tree: relax the filemode parser · f1c75b94
      There are many different broken filemodes in the wild so we need to
      protect against them and give something useful up the chain. Don't
      fail when reading a tree from the ODB but normalize the mode as best
      we can.
      
      As 664 is no longer a mode that we consider to be valid and gets
      normalized to 644, we can stop accepting it in the treebuilder. The
      library won't expose it to the user, so any invalid modes are a bug.
      Carlos Martín Nieto committed
  2. 29 Nov, 2012 3 commits
  3. 28 Nov, 2012 2 commits
  4. 13 Nov, 2012 1 commit
  5. 09 Nov, 2012 1 commit
  6. 08 Nov, 2012 1 commit
  7. 05 Nov, 2012 1 commit
  8. 02 Nov, 2012 1 commit
    • tags: Fixed the tag parser to correctly treat the message field as optional. · 6bb9fea1
      This fix makes libgit2 capable of parsing annotated tag objects that lack
      the optional message/description field.
      Previously, libgit2 treated this field as mandatory and raised a tag_error on
      such tags. However, the message field is optional.
      
      An example of such a tag is refs/tags/v2.6.16.31-rc1 in Linux:
      
      $ git cat-file tag refs/tags/v2.6.16.31-rc1
      object afaa018cefb6af63befef1df7d8febaae904434f
      type commit
      tag v2.6.16.31-rc1
      tagger Adrian Bunk <bunk@stusta.de> 1162716505 +0100
      $
      Erik van Zijst committed
  9. 30 Oct, 2012 1 commit
  10. 23 Oct, 2012 3 commits
    • Initial implementation of diff rename detection · b4f5bb07
      This implements the basis for diff rename and copy detection,
      although it is based on simple SHA comparison right now instead
      of using a matching algortihm.  Just as `git_diff_merge` can be
      used as a post-pass on diffs to emulate certain command line
      behaviors, there is a new API `git_diff_detect` which will
      update a diff list in-place, adjusting some deltas to RENAMED
      or COPIED state (and also, eventually, splitting MODIFIED deltas
      where the change is too large into DELETED/ADDED pairs).
      
      This also adds a new test repo that will hold rename/copy/split
      scenarios.  Right now, it just has exact-match rename and copy,
      but the tests are written to use tree diffs, so we should be able
      to add new test scenarios easily without breaking tests.
      Russell Belfer committed
    • Add config level support in the config API · a1abe66a
      Added `struct git_config_entry`: a git_config_entry contains the key, the value, and the config file level from which a config element was found.
      Added `git_config_open_level`: build a single-level focused config object from a multi-level one.
      
      We are now storing `git_config_entry`s in the khash of the config_file
      yorah committed
    • Fix adding variable to config file with no trailing newline · f8ede948
      This can occur after a manual modification of a config file.
      yorah committed
  11. 15 Oct, 2012 2 commits
    • Fix single-file ignore checks · 52032ae5
      To answer if a single given file should be ignored, the path to
      that file has to be processed progressively checking that there
      are no intermediate ignored directories in getting to the file
      in question.  This enables that, fixing the broken old behavior,
      and adds tests to exercise various ignore situations.
      Russell Belfer committed
    • refs: loosen the OID parsing · 47f44b6e
      We used to require loose references to contain only an OID (possibly
      after trimming the string). This is however not enough for letting us
      lookup FETCH_HEAD, which can have a lot of content after the initial
      OID.
      
      Change the parsing rules so that a loose refernce must e at least 40
      bytes long and the 41st (if it's there) must be accepted by
      isspace(3). This makes the trim unnecessary, so only do it for
      symrefs. This fixes #977.
      Carlos Martín Nieto committed
  12. 09 Oct, 2012 2 commits
    • Add complex checkout test and then fix checkout · 0d64bef9
      This started as a complex new test for checkout going through the
      "typechanges" test repository, but that revealed numerous issues
      with checkout, including:
      
      * complete failure with submodules
      * failure to create blobs with exec bits
      * problems when replacing a tree with a blob because the tree
        "example/" sorts after the blob "example" so the delete was
        being processed after the single file blob was created
      
      This fixes most of those problems and includes a number of other
      minor changes that made it easier to do that, including improving
      the TYPECHANGE support in diff/status, etc.
      Russell Belfer committed
  13. 27 Sep, 2012 1 commit
  14. 25 Sep, 2012 1 commit
  15. 22 Sep, 2012 1 commit
  16. 13 Sep, 2012 2 commits
  17. 05 Sep, 2012 2 commits
    • Test for gitmodules only submodule def · fed886d9
      This should confirm that issue #835 is fixed where a submodule that
      is only declared in the .gitmodules file was not accessible via the
      submodule APIs.
      Russell Belfer committed
    • Diff iterators · f335ecd6
      This refactors the diff output code so that an iterator object
      can be used to traverse and generate the diffs, instead of just
      the `foreach()` style with callbacks.  The code has been rearranged
      so that the two styles can still share most functions.
      
      This also replaces `GIT_REVWALKOVER` with `GIT_ITEROVER` and uses
      that as a common error code for marking the end of iteration when
      using a iterator style of object.
      Russell Belfer committed
  18. 24 Aug, 2012 1 commit
  19. 22 Aug, 2012 1 commit
    • Add template dir and set gid to repo init · ca1b6e54
      This extends git_repository_init_ext further with support for
      initializing the repository from an external template directory
      and with support for the "create shared" type flags that make a
      set GID repository directory.
      
      This also adds tests for much of the new functionality to the
      existing `repo/init.c` test suite.
      
      Also, this adds a bunch of new utility functions including a
      very general purpose `git_futils_mkdir` (with the ability to
      make paths and to chmod the paths post-creation) and a file
      tree copying function `git_futils_cp_r`.  Also, this includes
      some new path functions that were useful to keep the code
      simple.
      Russell Belfer committed
  20. 19 Aug, 2012 1 commit
  21. 12 Aug, 2012 1 commit
  22. 09 Aug, 2012 2 commits
  23. 31 Jul, 2012 1 commit
  24. 28 Jul, 2012 1 commit
  25. 26 Jul, 2012 1 commit
  26. 24 Jul, 2012 1 commit
  27. 16 Jul, 2012 1 commit
  28. 15 Jul, 2012 1 commit
  29. 13 Jul, 2012 1 commit
  30. 11 Jul, 2012 1 commit