Permalink
Commits on Jan 27, 2012
  1. Git 1.7.9

    gitster committed Jan 27, 2012
    Signed-off-by: Junio C Hamano <gitster@pobox.com>
  2. INSTALL: warn about recent Fedora breakage

    gitster committed Jan 27, 2012
    Recent releases of Redhat/Fedora are reported to ship Perl binary package
    with some core modules stripped away (see http://lwn.net/Articles/477234/)
    against the upstream Perl5 people's wishes. The Time::HiRes module used by
    gitweb one of them.
    
    Signed-off-by: Junio C Hamano <gitster@pobox.com>
Commits on Jan 26, 2012
  1. git-completion: workaround zsh COMPREPLY bug

    felipec authored and gitster committed Jan 25, 2012
    zsh adds a backslash (foo\ ) for each item in the COMPREPLY array if IFS
    doesn't contain spaces. This issue has been reported[1], but there is no
    solution yet.
    
    This wasn't a problem due to another bug[2], which was fixed in zsh
    version 4.3.12. After this change, 'git checkout ma<tab>' would resolve
    to 'git checkout master\ '.
    
    Aditionally, the introduction of __gitcomp_nl in commit a31e626
    (completion: optimize refs completion) in git also made the problem
    apparent, as Matthieu Moy reported.
    
    The simplest and most generic solution is to hide all the changes we do
    to IFS, so that "foo \nbar " is recognized by zsh as "foo bar". This
    works on versions of git before and after the introduction of
    __gitcomp_nl (a31e626), and versions of zsh before and after 4.3.12.
    
    Once zsh is fixed, we should conditionally disable this workaround to
    have the same benefits as bash users.
    
    [1] http://www.zsh.org/mla/workers/2012/msg00053.html
    [2] http://zsh.git.sourceforge.net/git/gitweb.cgi?p=zsh/zsh;a=commitdiff;h=2e25dfb8fd38dbef0a306282ffab1d343ce3ad8d
    
    Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
    Signed-off-by: Junio C Hamano <gitster@pobox.com>
  2. docs: minor grammar fixes for v1.7.9 release notes

    peff authored and gitster committed Jan 25, 2012
    Signed-off-by: Jeff King <peff@peff.net>
    Signed-off-by: Junio C Hamano <gitster@pobox.com>
Commits on Jan 23, 2012
  1. Fix typo in 1.7.9 release notes

    mhagger authored and gitster committed Jan 23, 2012
    Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
    Signed-off-by: Junio C Hamano <gitster@pobox.com>
Commits on Jan 18, 2012
  1. Git 1.7.9-rc2

    gitster committed Jan 18, 2012
    Signed-off-by: Junio C Hamano <gitster@pobox.com>
  2. Merge branch 'maint'

    gitster committed Jan 18, 2012
    * maint:
      Git 1.7.8.4
      Git 1.7.7.6
      diff-index: enable recursive pathspec matching in unpack_trees
    
    Conflicts:
    	GIT-VERSION-GEN
  3. Git 1.7.8.4

    gitster committed Jan 18, 2012
    Signed-off-by: Junio C Hamano <gitster@pobox.com>
  4. Merge branch 'maint-1.7.7' into maint

    gitster committed Jan 18, 2012
    * maint-1.7.7:
      Git 1.7.7.6
      diff-index: enable recursive pathspec matching in unpack_trees
    
    Conflicts:
    	GIT-VERSION-GEN
  5. Git 1.7.7.6

    gitster committed Jan 18, 2012
    Signed-off-by: Junio C Hamano <gitster@pobox.com>
  6. diff-index: enable recursive pathspec matching in unpack_trees

    pclouds authored and gitster committed Jan 15, 2012
    The pathspec structure has a few bits of data to drive various operation
    modes after we unified the pathspec matching logic in various codepaths.
    For example, max_depth field is there so that "git grep" can limit the
    output for files found in limited depth of tree traversal. Also in order
    to show just the surface level differences in "git diff-tree", recursive
    field stops us from descending into deeper level of the tree structure
    when it is set to false, and this also affects pathspec matching when
    we have wildcards in the pathspec.
    
    The diff-index has always wanted the recursive behaviour, and wanted to
    match pathspecs without any depth limit. But we forgot to do so when we
    updated tree_entry_interesting() logic to unify the pathspec matching
    logic.
    
    Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
    Signed-off-by: Junio C Hamano <gitster@pobox.com>
  7. Merge branch 'jc/pull-signed-tag-doc'

    gitster committed Jan 18, 2012
    * jc/pull-signed-tag-doc:
      pulling signed tag: add howto document
  8. pulling signed tag: add howto document

    gitster committed Jan 17, 2012
    Signed-off-by: Junio C Hamano <gitster@pobox.com>
  9. Merge branch 'jk/credentials'

    gitster committed Jan 18, 2012
    * jk/credentials:
      credential-cache: ignore "connection refused" errors
      unix-socket: do not let close() or chdir() clobber errno during cleanup
      credential-cache: report more daemon connection errors
      unix-socket: handle long socket pathnames
  10. Merge branch 'nd/pathspec-recursion-cleanup'

    gitster committed Jan 18, 2012
    * nd/pathspec-recursion-cleanup:
      diff-index: enable recursive pathspec matching in unpack_trees
      Document limited recursion pathspec matching with wildcards
  11. Merge branch 'mh/maint-show-ref-doc'

    gitster committed Jan 18, 2012
    * mh/maint-show-ref-doc:
      git-show-ref doc: typeset regexp in fixed width font
      git-show-ref: fix escaping in asciidoc source
  12. Merge branch 'tr/maint-word-diff-incomplete-line'

    gitster committed Jan 18, 2012
    * tr/maint-word-diff-incomplete-line:
      word-diff: ignore '\ No newline at eof' marker
Commits on Jan 17, 2012
  1. credential-cache: ignore "connection refused" errors

    peff authored and gitster committed Jan 17, 2012
    The credential-cache helper will try to connect to its
    daemon over a unix socket. Originally, a failure to do so
    was silently ignored, and we would either give up (if
    performing a "get" or "erase" operation), or spawn a new
    daemon (for a "store" operation).
    
    But since 8ec6c8d, we try to report more errors. We detect a
    missing daemon by checking for ENOENT on our connection
    attempt.  If the daemon is missing, we continue as before
    (giving up or spawning a new daemon). For any other error,
    we die and report the problem.
    
    However, checking for ENOENT is not sufficient for a missing
    daemon. We might also get ECONNREFUSED if a dead daemon
    process left a stale socket. This generally shouldn't
    happen, as the daemon cleans up after itself, but the daemon
    may not always be given a chance to do so (e.g., power loss,
    "kill -9").
    
    The resulting state is annoying not just because the helper
    outputs an extra useless message, but because it actually
    blocks the helper from spawning a new daemon to replace the
    stale socket.
    
    Fix it by checking for ECONNREFUSED.
    
    Signed-off-by: Jeff King <peff@peff.net>
    Signed-off-by: Junio C Hamano <gitster@pobox.com>
  2. Merge branch 'jn/maint-gitweb-grep-fix'

    gitster committed Jan 17, 2012
    * jn/maint-gitweb-grep-fix:
      gitweb: Harden "grep" search against filenames with ':'
      gitweb: Fix file links in "grep" search
Commits on Jan 16, 2012
  1. diff-index: enable recursive pathspec matching in unpack_trees

    pclouds authored and gitster committed Jan 15, 2012
    The pathspec structure has a few bits of data to drive various operation
    modes after we unified the pathspec matching logic in various codepaths.
    For example, max_depth field is there so that "git grep" can limit the
    output for files found in limited depth of tree traversal. Also in order
    to show just the surface level differences in "git diff-tree", recursive
    field stops us from descending into deeper level of the tree structure
    when it is set to false, and this also affects pathspec matching when
    we have wildcards in the pathspec.
    
    The diff-index has always wanted the recursive behaviour, and wanted to
    match pathspecs without any depth limit. But we forgot to do so when we
    updated tree_entry_interesting() logic to unify the pathspec matching
    logic.
    
    Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
    Signed-off-by: Junio C Hamano <gitster@pobox.com>
Commits on Jan 15, 2012
  1. Document limited recursion pathspec matching with wildcards

    pclouds authored and gitster committed Jan 14, 2012
    It's actually unlimited recursion if wildcards are active regardless
    --max-depth
    
    Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
    Signed-off-by: Junio C Hamano <gitster@pobox.com>
Commits on Jan 13, 2012
  1. git-show-ref doc: typeset regexp in fixed width font

    mhagger authored and gitster committed Jan 13, 2012
    Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
    Signed-off-by: Junio C Hamano <gitster@pobox.com>
  2. git-show-ref: fix escaping in asciidoc source

    mhagger authored and gitster committed Jan 13, 2012
    Two "^" characters were incorrectly being interpreted as markup for
    superscripting.  Fix them by writing them as attribute references
    "{caret}".
    
    Although a single "^" character in a paragraph cannot be
    misinterpreted in this way, also write other "^" characters as
    "{caret}" in the interest of good hygiene (unless they are in literal
    paragraphs, of course, in which context attribute references are not
    recognized).
    
    Spell "{}" consistently, namely *not* quoted as "\{\}".  Since the
    braces are empty, they cannot be interpreted as an attribute
    reference, and either spelling is OK.  So arbitrarily choose one
    variation and use it consistently.
    
    Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
    Signed-off-by: Junio C Hamano <gitster@pobox.com>
  3. Git 1.7.9-rc1

    gitster committed Jan 13, 2012
    Signed-off-by: Junio C Hamano <gitster@pobox.com>
  4. Merge branch 'jc/request-pull-show-head-4'

    gitster committed Jan 13, 2012
    * jc/request-pull-show-head-4:
      request-pull: use the real fork point when preparing the message
  5. Merge branch 'tr/maint-mailinfo'

    gitster committed Jan 13, 2012
    * tr/maint-mailinfo:
      mailinfo documentation: accurately describe non -k case
  6. Merge branch 'ss/maint-msys-cvsexportcommit'

    gitster committed Jan 13, 2012
    * ss/maint-msys-cvsexportcommit:
      git-cvsexportcommit: Fix calling Perl's rel2abs() on MSYS
      t9200: On MSYS, do not pass Windows-style paths to CVS
  7. Merge branch 'jk/maint-upload-archive'

    gitster committed Jan 13, 2012
    * jk/maint-upload-archive:
      archive: re-allow HEAD:Documentation on a remote invocation
  8. Merge branch 'maint'

    gitster committed Jan 13, 2012
    * maint:
      Update draft release notes to 1.7.8.4
      Update draft release notes to 1.7.7.6
      Update draft release notes to 1.7.6.6
      thin-pack: try harder to use preferred base objects as base
  9. Update draft release notes to 1.7.8.4

    gitster committed Jan 13, 2012
    Signed-off-by: Junio C Hamano <gitster@pobox.com>
  10. Merge branch 'maint-1.7.7' into maint

    gitster committed Jan 13, 2012
    * maint-1.7.7:
      Update draft release notes to 1.7.7.6
      Update draft release notes to 1.7.6.6
      thin-pack: try harder to use preferred base objects as base
  11. Update draft release notes to 1.7.7.6

    gitster committed Jan 13, 2012
    Signed-off-by: Junio C Hamano <gitster@pobox.com>
  12. Merge branch 'maint-1.7.6' into maint-1.7.7

    gitster committed Jan 13, 2012
    * maint-1.7.6:
      Update draft release notes to 1.7.6.6
      thin-pack: try harder to use preferred base objects as base
  13. Update draft release notes to 1.7.6.6

    gitster committed Jan 13, 2012
    Signed-off-by: Junio C Hamano <gitster@pobox.com>
  14. thin-pack: try harder to use preferred base objects as base

    peff authored and gitster committed Jan 12, 2012
    When creating a pack using objects that reside in existing packs, we try
    to avoid recomputing futile delta between an object (trg) and a candidate
    for its base object (src) if they are stored in the same packfile, and trg
    is not recorded as a delta already. This heuristics makes sense because it
    is likely that we tried to express trg as a delta based on src but it did
    not produce a good delta when we created the existing pack.
    
    As the pack heuristics prefer producing delta to remove data, and Linus's
    law dictates that the size of a file grows over time, we tend to record
    the newest version of the file as inflated, and older ones as delta
    against it.
    
    When creating a thin-pack to transfer recent history, it is likely that we
    will try to send an object that is recorded in full, as it is newer.  But
    the heuristics to avoid recomputing futile delta effectively forbids us
    from attempting to express such an object as a delta based on another
    object. Sending an object in full is often more expensive than sending a
    suboptimal delta based on other objects, and it is even more so if we
    could use an object we know the receiving end already has (i.e. preferred
    base object) as the delta base.
    
    Tweak the recomputation avoidance logic, so that we do not punt on
    computing delta against a preferred base object.
    
    The effect of this change can be seen on two simulated upload-pack
    workloads. The first is based on 44 reflog entries from my git.git
    origin/master reflog, and represents the packs that kernel.org sent me git
    updates for the past month or two. The second workload represents much
    larger fetches, going from git's v1.0.0 tag to v1.1.0, then v1.1.0 to
    v1.2.0, and so on.
    
    The table below shows the average generated pack size and the average CPU
    time consumed for each dataset, both before and after the patch:
    
                      dataset
                | reflog | tags
    ---------------------------------
         before | 53358  | 2750977
    size  after | 32398  | 2668479
         change |   -39% |      -3%
    ---------------------------------
         before |  0.18  | 1.12
    CPU   after |  0.18  | 1.15
         change |    +0% |      +3%
    
    This patch makes a much bigger difference for packs with a shorter slice
    of history (since its effect is seen at the boundaries of the pack) though
    it has some benefit even for larger packs.
    
    Signed-off-by: Jeff King <peff@peff.net>
    Acked-by: Nicolas Pitre <nico@fluxnic.net>
    Signed-off-by: Junio C Hamano <gitster@pobox.com>