1. 26 Apr, 2014 3 commits
  2. 25 Apr, 2014 1 commit
  3. 24 Apr, 2014 2 commits
  4. 23 Apr, 2014 6 commits
  5. 22 Apr, 2014 7 commits
    • 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
    • Use git_diff_get_stats in example/diff + refactor · 8d09efa2
      This takes the `--stat` and related example options in the example
      diff.c program and converts them to use the `git_diff_get_stats`
      API which nicely formats stats for you.
      
      I went to add bar-graph scaling to the stats formatter and noticed
      that the `git_diff_stats` structure was holding on to all of the
      `git_patch` objects.  Unfortunately, each of these objects keeps
      the full text of the diff in memory, so this is very expensive.  I
      ended up modifying `git_diff_stats` to keep just the data that it
      needs to keep and allowed it to release the patches.  Then, I added
      width scaling to the output on top of that.
      
      In making the diff example program match 'git diff' output, I ended
      up removing an newline from the sumamry output which I then had to
      compensate for in the email formatting to match the expectations.
      
      Lastly, I went through and refactored the tests to use a couple of
      helper functions and reduce the overall amount of code there.
      Russell Belfer committed
    • Some doc and examples/diff.c changes · 12e422a0
      I was playing with "git diff-index" and wanted to be able to
      emulate that behavior a little more closely with the diff example.
      
      Also, I wanted to play with running `git_diff_tree_to_workdir`
      directly even though core Git doesn't exactly have the equivalent,
      so I added a command line option for that and tweaked some other
      things in the example code.
      
      This changes a minor output thing in that the "raw" print helper
      function will no longer add ellipses (...) if the OID is not
      actually abbreviated.
      Russell Belfer committed
    • transports: allow the creds callback to say it doesn't exist · bc0a6198
      Allow the credentials callback to return GIT_PASSTHROUGH to make the
      transports code behave as though none was set.
      
      This should make it easier for bindings to behave closer to the C code
      when there is no credentials callback set at their level.
      Carlos Martín Nieto committed
    • remote: provide read access to the callback structure · 2efd7df6
      This should make it easier for bindings to dynamically override their
      own callbacks.
      Carlos Martín Nieto committed
  6. 21 Apr, 2014 10 commits
  7. 20 Apr, 2014 2 commits
  8. 18 Apr, 2014 8 commits
    • Minor fixes · ac16bd0a
      Only apply LEADING_DIR pattern munging to patterns in ignore and
      attribute files, not to pathspecs used to select files to operate
      on.  Also, allow internal macro definitions to be evaluated before
      loading all external ones (important so that external ones can
      make use of internal `binary` definition).
      Russell Belfer committed
    • Fix ignore difference from git with trailing /* · 916fcbd6
      Ignore patterns that ended with a trailing '/*' were still needing
      to match against another actual '/' character in the full path.
      This is not the same behavior as core Git.
      
      Instead, we strip a trailing '/*' off of any patterns that were
      matching and just take it to imply the FNM_LEADING_DIR behavior.
      Russell Belfer committed
    • Preload attribute files that may contain macros · e3a2a04c
      There was a latent bug where files that use macro definitions
      could be parsed before the macro definitions were loaded.  Because
      of attribute file caching, preloading files that are going to be
      used doesn't add a significant amount of overhead, so let's always
      preload any files that could contain macros before we assemble the
      actual vector of files to scan for attributes.
      Russell Belfer committed
    • Pop ignore only if whole relative path matches · 6a0956e5
      When traversing the directory structure, the iterator pushes and
      pops ignore files using a vector.  Some directories don't have
      ignore files, so it uses a path comparison to decide when it is
      right to actually pop the last ignore file.  This was only
      comparing directory suffixes, though, so a subdirectory with the
      same name as a parent could result in the parent's .gitignore
      being popped off the list ignores too early.  This changes the
      logic to compare the entire relative path of the ignore file.
      Russell Belfer committed
    • Introduce git_cred_ssh_interactive_new() · 478408c0
      This allows for keyboard-interactive based SSH authentication
      Jacques Germishuys committed
    • cred: tighten username rules · bd270b70
      The ssh-specific credentials allow the username to be missing. The idea
      being that the ssh transport will then use the username provided in the
      url, if it's available. There are two main issues with this.
      
      The credential callback already knows what username was provided by the
      url and needs to figure out whether it wants to ask the user for it or
      it can reuse it, so passing NULL as the username means the credential
      callback is suspicious.
      
      The username provided in the url is not in fact used by the
      transport. The only time it even considers it is for the user/pass
      credential, which asserts the existence of a username in its
      constructor. For the ssh-specific ones, it passes in the username stored
      in the credential, which is NULL. The libssh2 macro we use runs strlen()
      against this value (which is no different from what we would be doing
      ourselves), so we then crash.
      
      As the documentation doesn't suggest to leave out the username, assert
      the need for a username in the code, which removes this buggy behavior
      and removes implicit state.
      
      git_cred_has_username() becomes a blacklist of credential types that do
      not have a username. The only one at the moment is the 'default' one,
      which is meant to call up some Microsoft magic.
      Carlos Martín Nieto committed
  9. 17 Apr, 2014 1 commit