1. 12 Aug, 2016 1 commit
    • ignore: allow unignoring basenames in subdirectories · fcb2c1c8
      The .gitignore file allows for patterns which unignore previous
      ignore patterns. When unignoring a previous pattern, there are
      basically three cases how this is matched when no globbing is
      used:
      
      1. when a previous file has been ignored, it can be unignored by
         using its exact name, e.g.
      
         foo/bar
         !foo/bar
      
      2. when a file in a subdirectory has been ignored, it can be
         unignored by using its basename, e.g.
      
         foo/bar
         !bar
      
      3. when all files with a basename are ignored, a specific file
         can be unignored again by specifying its path in a
         subdirectory, e.g.
      
         bar
         !foo/bar
      
      The first problem in libgit2 is that we did not correctly treat
      the second case. While we verified that the negative pattern
      matches the tail of the positive one, we did not verify if it
      only matches the basename of the positive pattern. So e.g. we
      would have also negated a pattern like
      
          foo/fruz_bar
          !bar
      
      Furthermore, we did not check for the third case, where a
      basename is being unignored in a certain subdirectory again.
      
      Both issues are fixed with this commit.
      Patrick Steinhardt committed
  2. 04 Aug, 2016 10 commits
  3. 03 Aug, 2016 1 commit
  4. 02 Aug, 2016 1 commit
  5. 24 Jul, 2016 13 commits
  6. 23 Jul, 2016 3 commits
  7. 15 Jul, 2016 1 commit
    • remote: Handle missing config values when deleting a remote · d81cb2e4
      Somehow I ended up with the following in my ~/.gitconfig:
      [branch "master"]
      remote = origin
      merge = master
      rebase = true
      
      I assume something went crazy while I was running the git.git tests
      some time ago, and that I never noticed until now.
      
      This is not a good configuration, but it shouldn't cause problems. But
      it does. Specifically, if you have this in your config, and you
      perform the following set of actions:
      
      create a remote
      fetch from that remote
      create a branch off of the remote master branch called "master"
      delete the branch
      delete the remote
      
      The remote delete fails with the message "Could not find key
      'branch.master.rebase' to delete". This is because it's iterating over
      the config entries (including the ones in the global config) and
      believes that there is a master branch which must therefore have these
      config keys.
      
      https://github.com/libgit2/libgit2/issues/3856
      David Turner committed
  8. 06 Jul, 2016 1 commit
  9. 05 Jul, 2016 3 commits
  10. 01 Jul, 2016 2 commits
  11. 30 Jun, 2016 3 commits
  12. 29 Jun, 2016 1 commit