Permalink
Commits on May 23, 2008
Commits on May 14, 2008
  1. Merge branch 'maint'

    gitster committed May 14, 2008
    * maint:
      Documentation/git-describe.txt: make description more readable
  2. Merge branch 'maint-1.5.4' into maint

    gitster committed May 14, 2008
    * maint-1.5.4:
      Documentation/git-describe.txt: make description more readable
  3. Merge branch 'sb/committer'

    gitster committed May 14, 2008
    * sb/committer:
      commit: Show committer if automatic
      commit: Show author if different from committer
      Preparation to call determine_author_info from prepare_to_commit
  4. Merge branch 'bd/tests'

    gitster committed May 14, 2008
    * bd/tests:
      Rename the test trash directory to contain spaces.
      Fix tests breaking when checkout path contains shell metacharacters
      Don't use the 'export NAME=value' in the test scripts.
      lib-git-svn.sh: Fix quoting issues with paths containing shell metacharacters
      test-lib.sh: Fix some missing path quoting
      Use test_set_editor in t9001-send-email.sh
      test-lib.sh: Add a test_set_editor function to safely set $VISUAL
      git-send-email.perl: Handle shell metacharacters in $EDITOR properly
      config.c: Escape backslashes in section names properly
      git-rebase.sh: Fix --merge --abort failures when path contains whitespace
    
    Conflicts:
    
    	t/t9115-git-svn-dcommit-funky-renames.sh
  5. Merge branch 'mv/format-cc'

    gitster committed May 14, 2008
    * mv/format-cc:
      Add tests for sendemail.cc configuration variable
      git-send-email: add a new sendemail.cc configuration variable
      git-format-patch: add a new format.cc configuration variable
  6. Merge branch 'cc/hooks-doc'

    gitster committed May 14, 2008
    * cc/hooks-doc:
      Documentation: rename "hooks.txt" to "githooks.txt" and make it a man page
  7. Merge branch 'jk/renamelimit' (early part)

    gitster committed May 14, 2008
    * 'jk/renamelimit' (early part):
      diff: make "too many files" rename warning optional
      bump rename limit defaults
      add merge.renamelimit config option
  8. Documentation/git-describe.txt: make description more readable

    ihilt committed with gitster May 14, 2008
    Signed-off-by: Ian Hilt <ian.hilt@gmail.com>
    Credit-to: Kevin Ballard <kevin@sb.org>
    Signed-off-by: Junio C Hamano <gitster@pobox.com>
  9. filter-branch: fix variable export logic

    peff committed with gitster May 13, 2008
    filter-branch tries to restore "old" copies of some
    environment variables by using the construct:
    
      unset var
      test -z "$old_var" || var="$old_var" && export var
    
    This is just wrong.  AND-list and OR-list operators && and || have equal
    precedence and they bind left to right.  The second term, var="$old"
    assignment always succeeds, so we always end up exporting var.
    
    On bash and dash, exporting an unset variable has no effect. However, on
    some shells (such as FreeBSD's /bin/sh), the shell exports the empty
    value.
    
    This manifested itself in this case as git-filter-branch setting
    GIT_INDEX_FILE to the empty string, which in turn caused its call to
    git-read-tree to fail, leaving the working tree pointing at the original
    HEAD instead of the rewritten one.
    
    To fix this, we change the short-circuit logic to better match the intent:
    
      test -z "$old_var" || {
        var="$old_var" && export var
      }
    
    Signed-off-by: Jeff King <peff@peff.net>
    Signed-off-by: Junio C Hamano <gitster@pobox.com>
  10. clone: bsd shell portability fix

    peff committed with gitster May 13, 2008
    When using /bin/sh from FreeBSD 6.1, the value of $? is lost
    when calling a function inside the 'trap' action. This
    resulted in clone erroneously indicating success when it
    should have reported failure.
    
    As a workaround, we save the value of $? before calling any
    functions.
    
    Signed-off-by: Jeff King <peff@peff.net>
    Signed-off-by: Junio C Hamano <gitster@pobox.com>
  11. t5000: tar portability fix

    peff committed with gitster May 13, 2008
    The output of 'tar tv' varies from system to system. In
    particular, the t5000 was expecting to parse the date from
    something like:
    
      -rw-rw-r-- root/root         0 2008-05-13 04:27 file
    
    but FreeBSD's tar produces this:
    
      -rw-rw-r--  0 root   root        0 May 13 04:27 file
    
    Instead of relying on tar's output, let's just extract the
    file using tar and stat the result using perl.
    
    Signed-off-by: Jeff King <peff@peff.net>
    Signed-off-by: Junio C Hamano <gitster@pobox.com>
  12. fix bsd shell negation

    peff committed with gitster May 14, 2008
    On some shells (notably /bin/sh on FreeBSD 6.1), the
    construct
    
      foo && ! bar | baz
    
    is true if
    
      foo && baz
    
    whereas for most other shells (such as bash) is true if
    
      foo && ! baz
    
    We can work around this by specifying
    
      foo && ! (bar | baz)
    
    which works everywhere.
    
    Signed-off-by: Jeff King <peff@peff.net>
    Signed-off-by: Junio C Hamano <gitster@pobox.com>
Commits on May 13, 2008
  1. Improve reporting of errors in config file routines

    raalkml committed with gitster May 12, 2008
    Signed-off-by: Alex Riesen <raa.lkml@gmail.com>
    Signed-off-by: Junio C Hamano <gitster@pobox.com>
Commits on May 12, 2008
  1. Merge branch 'gp/bisect-fix'

    gitster committed May 12, 2008
    * gp/bisect-fix:
      bisect: print an error message when "git rev-list --bisect-vars" fails
      git-bisect.sh: don't accidentally override existing branch "bisect"
Commits on May 11, 2008
  1. Merge branch 'maint'

    gitster committed May 11, 2008
    * maint:
      wt-status.h: declare global variables as extern
      builtin-commit.c: add -u as short name for --untracked-files
      git-repack: re-enable parsing of -n command line option
  2. Merge branch 'maint-1.5.4' into maint

    gitster committed May 11, 2008
    * maint-1.5.4:
      wt-status.h: declare global variables as extern
      builtin-commit.c: add -u as short name for --untracked-files
      git-repack: re-enable parsing of -n command line option
  3. Merge branch 'lt/core-optim'

    gitster committed May 11, 2008
    * lt/core-optim:
      Optimize symlink/directory detection
      Avoid some unnecessary lstat() calls
      is_racy_timestamp(): do not check timestamp for gitlinks
      diff-lib.c: rename check_work_tree_entity()
      diff: a submodule not checked out is not modified
      Add t7506 to test submodule related functions for git-status
      t4027: test diff for submodule with empty directory
      Make git-add behave more sensibly in a case-insensitive environment
      When adding files to the index, add support for case-independent matches
      Make unpack-tree update removed files before any updated files
      Make branch merging aware of underlying case-insensitive filsystems
      Add 'core.ignorecase' option
      Make hash_name_lookup able to do case-independent lookups
      Make "index_name_exists()" return the cache_entry it found
      Move name hashing functions into a file of its own
      Make unpack_trees_options bit flags actual bitfields
  4. rev-parse --verify: do not output anything on error

    chriscool committed with gitster May 11, 2008
    Before this patch, when "git rev-parse --verify" was passed at least one
    good rev and then anything, it would output something for the good rev
    even if it would latter exit on error.
    
    With this patch, we only output something if everything is ok.
    
    Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
    Signed-off-by: Junio C Hamano <gitster@pobox.com>
  5. rev-parse: fix using "--default" with "--verify"

    chriscool committed with gitster May 11, 2008
    Before this patch, something like:
    
    $ git rev-parse --verify HEAD --default master
    
    did not work, while:
    
    $ git rev-parse --default master --verify HEAD
    
    worked.
    
    This patch fixes that, so that they both work (assuming
    HEAD and master can be parsed).
    
    Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
    Signed-off-by: Junio C Hamano <gitster@pobox.com>
  6. rev-parse: add test script for "--verify"

    chriscool committed with gitster May 11, 2008
    This patch documents the current behavior of "git rev-parse --verify".
    
    This command is tested both with and without the "--quiet" and
    "--default" options.
    
    This shows some problems with the current behavior that will be fixed
    in latter patches:
    
    	- in case of errors, there should be no good rev output on
    	stdout,
    	- with "--default" one test case is broken
    
    Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
    Signed-off-by: Junio C Hamano <gitster@pobox.com>
  7. Add svn-compatible "blame" output format to git-svn

    Steven Grimm committed with gitster May 11, 2008
    git-svn blame produced output in the format of git blame; in environments
    where there are scripts that read the output of svn blame, it's useful
    to be able to use them with the output of git-svn. The git-compatible
    format is still available using the new "--git-format" option.
    
    This also fixes a bug in the initial git-svn blame implementation; it was
    bombing out on uncommitted local changes.
    
    Signed-off-by: Steven Grimm <koreth@midwinter.com>
    Acked-by: Eric Wong <normalperson@yhbt.net>
    Signed-off-by: Junio C Hamano <gitster@pobox.com>
  8. mergetool: Make ECMerge use the settings as specified by the user in …

    Sebastian Schuberth committed with gitster May 6, 2008
    …the GUI
    
    When run from the command line, ECMerge does not automatically use the same
    settings for a merge / diff that it would use when starting the GUI and loading
    files manually. In the first case the built-in factory defaults would be used,
    while in the second case the settings the user has specified in the GUI would
    be used, which can be misleading. Specifying the "--default" command line
    option changes this behavior so that always the user specfified GUI settings
    are used.
    
    Signed-off-by: Sebastian Schuberth <sschuberth@visageimaging.com>
    Tested-by: Steffen Prohaska <prohaska@zib.de>
    Signed-off-by: Junio C Hamano <gitster@pobox.com>
  9. git-format-patch: add --no-binary to omit binary changes in the patch.

    cmarcelo committed with gitster May 9, 2008
    Add a new option --no-binary to git-format-patch so that no binary
    changes are included in the generated patches, only notices that those
    files changed.  This generate patches that cannot be applied, but still
    is useful for generating mails for code review purposes.
    
    See also: commit e47f306, where --binary
    option was turned on by default.
    
    Signed-off-by: Caio Marcelo de Oliveira Filho <cmarcelo@gmail.com>
    Signed-off-by: Junio C Hamano <gitster@pobox.com>
  10. wt-status.h: declare global variables as extern

    Johannes Sixt committed with gitster May 9, 2008
    There are linkers out there that complain if a global non-static variable
    is defined multiple times.
    
    Signed-off-by: Johannes Sixt <johannes.sixt@telecom.at>
    Signed-off-by: Junio C Hamano <gitster@pobox.com>
  11. builtin-commit.c: add -u as short name for --untracked-files

    sitaramc committed with gitster May 9, 2008
    This makes the C code consistent with the documentation and the old shell
    code.
    
    Signed-off-by: Sitaram Chamarty <sitaramc@gmail.com>
    Signed-off-by: Junio C Hamano <gitster@pobox.com>
  12. git-repack: re-enable parsing of -n command line option

    gitzilla committed with gitster May 10, 2008
    In commit 5715d0b (Migrate git-repack.sh to use git-rev-parse --parseopt,
    2007-11-04), parsing of the '-n' command line option was accidentally lost
    when git-repack.sh was migrated to use git-rev-parse --parseopt. This adds
    it back.
    
    Signed-off-by: A Large Angry SCM <gitzilla@gmail.com>
    Signed-off-by: Junio C Hamano <gitster@pobox.com>
  13. Allow tracking branches to set up rebase by default.

    dustin committed with gitster May 10, 2008
    Change cd67e4d introduced a new configuration parameter that told
    pull to automatically perform a rebase instead of a merge.  This
    change provides a configuration option to enable this feature
    automatically when creating a new branch.
    
    If the variable branch.autosetuprebase applies for a branch that's
    being created, that branch will have branch.<name>.rebase set to true.
    
    Signed-off-by: Dustin Sallings <dustin@spy.net>
    Signed-off-by: Junio C Hamano <gitster@pobox.com>
  14. git-svn: fix cloning of HTTP URLs with '+' in their path

    Eric Wong committed with gitster May 11, 2008
    With this, git svn clone -s http://svn.gnome.org/svn/gtk+
    is successful.
    
    Also modified the funky rename test for this, which _does_
    include escaped '+' signs for HTTP URLs.  SVN seems to accept
    either "+" or "%2B" in filenames and directories (just not the
    main URL), so I'll leave it alone for now.
    
    Signed-off-by: Eric Wong <normalperson@yhbt.net>
    Signed-off-by: Junio C Hamano <gitster@pobox.com>
  15. alloc_ref_from_str(): factor out a common pattern of alloc_ref from s…

    kjk committed with gitster May 10, 2008
    …tring
    
    Also fix an underallocation in walker.c::interpret_target().
    
    Signed-off-by: Krzysztof Kowalczyk <kkowalczyk@gmail.com>
    Signed-off-by: Junio C Hamano <gitster@pobox.com>
  16. Optimize symlink/directory detection

    torvalds committed with gitster May 9, 2008
    This is the base for making symlink detection in the middle fo a pathname
    saner and (much) more efficient.
    
    Under various loads, we want to verify that the full path leading up to a
    filename is a real directory tree, and that when we successfully do an
    'lstat()' on a filename, we don't get a false positive due to a symlink in
    the middle of the path that git should have seen as a symlink, not as a
    normal path component.
    
    The 'has_symlink_leading_path()' function already did this, and cached
    a single level of symlink information, but didn't cache the _lack_ of a
    symlink, so the normal behaviour was actually the wrong way around, and we
    ended up doing an 'lstat()' on each path component to check that it was a
    real directory.
    
    This caches the last detected full directory and symlink entries, and
    speeds up especially deep directory structures a lot by avoiding to
    lstat() all the directories leading up to each entry in the index.
    
    [ This can - and should - probably be extended upon so that we eventually
      never do a bare 'lstat()' on any path entries at *all* when checking the
      index, but always check the full path carefully. Right now we do not
      generally check the whole path for all our normal quick index
      revalidation.
    
      We should also make sure that we're careful about all the invalidation,
      ie when we remove a link and replace it by a directory we should
      invalidate the symlink cache if it matches (and vice versa for the
      directory cache).
    
      But regardless, the basic function needs to be sane to do that. The old
      'has_symlink_leading_path()' was not capable enough - or indeed the code
      readable enough - to really do that sanely. So I'm pushing this as not
      just an optimization, but as a base for further work. ]
    
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Junio C Hamano <gitster@pobox.com>
  17. Avoid some unnecessary lstat() calls

    torvalds committed with gitster May 9, 2008
    The commit sequence used to do
    
    	if (file_exists(p->path))
    		add_file_to_cache(p->path, 0);
    
    where both "file_exists()" and "add_file_to_cache()" needed to do a
    lstat() on the path to do their work.
    
    This cuts down 'lstat()' calls for the partial commit case by two
    for each path we know about (because we do this twice per path).
    
    Just move the lstat() to the caller instead (that's all that
    "file_exists()" really does), and pass the stat information down to the
    add_to_cache() function.
    
    This essentially makes 'add_to_index()' the core function that adds a path
    to the index, getting the index pointer, the pathname and the stat
    information as arguments. There are then shorthand helper functions that
    use this core function:
    
     - 'add_to_cache()' is just 'add_to_index()' with the default index
    
     - 'add_file_to_cache/index()' is the same, but does the lstat() call
       itself, so you can pass just the pathname if you don't already have the
       stat information available.
    
    So old users of the 'add_file_to_xyzzy()' are essentially left unchanged,
    and this just exposes the more generic helper function that can take
    existing stat information into account.
    
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Junio C Hamano <gitster@pobox.com>
  18. Merge branch 'py/diff-submodule'

    gitster committed May 11, 2008
    * py/diff-submodule:
      is_racy_timestamp(): do not check timestamp for gitlinks
      diff-lib.c: rename check_work_tree_entity()
      diff: a submodule not checked out is not modified
      Add t7506 to test submodule related functions for git-status
      t4027: test diff for submodule with empty directory
  19. Merge branch 'lt/case-insensitive'

    gitster committed May 11, 2008
    * lt/case-insensitive:
      Make git-add behave more sensibly in a case-insensitive environment
      When adding files to the index, add support for case-independent matches
      Make unpack-tree update removed files before any updated files
      Make branch merging aware of underlying case-insensitive filsystems
      Add 'core.ignorecase' option
      Make hash_name_lookup able to do case-independent lookups
      Make "index_name_exists()" return the cache_entry it found
      Move name hashing functions into a file of its own
      Make unpack_trees_options bit flags actual bitfields
Commits on May 9, 2008
  1. Merge branch 'maint'

    gitster committed May 9, 2008
    * maint:
      Documentation/config.txt: Mention branch.<name>.rebase applies to "git pull"
      doc: clarify definition of "update" for git-add -u