1. 23 Mar, 2015 1 commit
  2. 03 Mar, 2015 1 commit
    • config: borrow refcounted references · 9a97f49e
      This changes the get_entry() method to return a refcounted version of
      the config entry, which you have to free when you're done.
      
      This allows us to avoid freeing the memory in which the entry is stored
      on a refresh, which may happen at any time for a live config.
      
      For this reason, get_string() has been forbidden on live configs and a
      new function get_string_buf() has been added, which stores the string in
      a git_buf which the user then owns.
      
      The functions which parse the string value takea advantage of the
      borrowing to parse safely and then release the entry.
      Carlos Martín Nieto committed
  3. 27 Feb, 2015 2 commits
  4. 19 Feb, 2015 3 commits
  5. 18 Feb, 2015 2 commits
  6. 17 Feb, 2015 2 commits
  7. 15 Feb, 2015 1 commit
  8. 14 Feb, 2015 1 commit
  9. 04 Feb, 2015 1 commit
  10. 03 Feb, 2015 1 commit
    • attrcache: don't re-read attrs during checkout · 9f779aac
      During checkout, assume that the .gitattributes files aren't
      modified during the checkout.  Instead, create an "attribute session"
      during checkout.  Assume that attribute data read in the same
      checkout "session" hasn't been modified since the checkout started.
      (But allow subsequent checkouts to invalidate the cache.)
      
      Further, cache nonexistent git_attr_file data even when .gitattributes
      files are not found to prevent re-scanning for nonexistent files.
      Edward Thomson committed
  11. 23 Jan, 2015 1 commit
  12. 20 Jan, 2015 5 commits
  13. 23 Dec, 2014 1 commit
    • Always checkout with case sensitive iterator · 40d79154
      On a case-insensitive filesystem, we need to deal with case-changing
      renames (eg, foo -> FOO) by removing the old and adding the new,
      exactly as if we were on a case-sensitive filesystem.
      
      Update the `checkout::tree::can_cancel_checkout_from_notify` test, now
      that notifications are always sent case sensitively.
      Edward Thomson committed
  14. 16 Dec, 2014 1 commit
    • checkout: disallow bad paths on win32 · a64119e3
      Disallow:
       1. paths with trailing dot
       2. paths with trailing space
       3. paths with trailing colon
       4. paths that are 8.3 short names of .git folders ("GIT~1")
       5. paths that are reserved path names (COM1, LPT1, etc).
       6. paths with reserved DOS characters (colons, asterisks, etc)
      
      These paths would (without \\?\ syntax) be elided to other paths - for
      example, ".git." would be written as ".git".  As a result, writing these
      paths literally (using \\?\ syntax) makes them hard to operate with from
      the shell, Windows Explorer or other tools.  Disallow these.
      Edward Thomson committed
  15. 09 Nov, 2014 1 commit
  16. 07 Nov, 2014 1 commit
    • iterator: submodules are determined by an index or tree · 62a617dc
      We cannot know from looking at .gitmodules whether a directory is a
      submodule or not. We need the index or tree we are comparing against to
      tell us. Otherwise we have to assume the entry in .gitmodules is stale
      or otherwise invalid.
      
      Thus we pass the index of the repository into the workdir iterator, even
      if we do not want to compare against it. This follows what git does,
      which even for `git diff <tree>`, it will consider staged submodules as
      such.
      Carlos Martín Nieto committed
  17. 06 Nov, 2014 2 commits
  18. 23 Oct, 2014 1 commit
  19. 13 Oct, 2014 2 commits
  20. 01 Jul, 2014 1 commit
    • git_checkout_index: checkout other indexes · 967f5a76
      git_checkout_index can now check out other git_index's (that are not
      necessarily the repository index).  This allows checkout_index to use
      the repository's index for stat cache information instead of the index
      data being checked out.  git_merge and friends now check out their
      indexes directly instead of trying to blend it into the running index.
      Edward Thomson committed
  21. 20 May, 2014 1 commit
  22. 06 May, 2014 1 commit
    • Add filter options and ALLOW_UNSAFE · 5269008c
      Diff and status do not want core.safecrlf to actually raise an
      error regardless of the setting, so this extends the filter API
      with an additional options flags parameter and adds a flag so that
      filters can be applied with GIT_FILTER_OPT_ALLOW_UNSAFE, indicating
      that unsafe filter application should be downgraded from a failure
      to a warning.
      Russell Belfer committed
  23. 02 May, 2014 4 commits
  24. 23 Apr, 2014 2 commits
    • Treat ignored, empty, and untracked dirs different · 219c89d1
      In the iterator, distinguish between ignores and empty directories
      so that diff and status can ignore empty directories, but checkout
      and stash can treat them as untracked items.
      Russell Belfer committed
    • Make checkout match diff for untracked/ignored dir · 37da3685
      When diff finds an untracked directory, it emulates Git behavior
      by looking inside the directory to see if there are any untracked
      items inside it. If there are only ignored items inside the dir,
      then diff considers it ignored, even if there is no direct ignore
      rule for it.
      
      Checkout was not copying this behavior - when it found an untracked
      directory, it just treated it as untracked.  Unfortunately, when
      combined with GIT_CHECKOUT_REMOVE_UNTRACKED, this made is seem that
      checkout (and stash, which uses checkout) was removing ignored
      items when you had only asked it to remove untracked ones.
      
      This commit moves the logic for advancing past an untracked dir
      while scanning for non-ignored items into an iterator helper fn,
      and uses that for both diff and checkout.
      Russell Belfer committed
  25. 22 Apr, 2014 1 commit
    • Make stash and checkout ignore contained repos · 24d17de2
      To emulate git, stash should not remove untracked git repositories
      inside the parent repo, and checkout's REMOVE_UNTRACKED should
      also skip over these items.
      
      `git stash` actually prints a warning message for these items.
      That should be possible with a checkout notify callback if you
      wanted to, although it would require a bit of extra logic as things
      are at the moment.
      Russell Belfer committed