Home Explore Blog CI



git

5th chunk of `Documentation/RelNotes/1.5.3.adoc`
ab6095e488beab35d731da900c6da2ad2f9e9858a12343f30000000100000dbe
 "--pretty=oneline" output format for "git log" and friends
    deals with "malformed" commit log messages that have more
    than one lines in the first paragraph better.  We used to
    show the first line, cutting the title at mid-sentence; we
    concatenate them into a single line and treat the result as
    "oneline".

  - "git p4import" has been demoted to contrib status.  For
    a superior option, checkout the "git p4" front end to
    "git fast-import" (also in contrib).  The man page and p4
    rpm have been removed as well.

  - "git mailinfo" (hence "am") now tries to see if the message
    is in utf-8 first, instead of assuming iso-8859-1, if
    incoming e-mail does not say what encoding it is in.

* Builds

  - old-style function definitions (most notably, a function
    without parameter defined with "func()", not "func(void)")
    have been eradicated.

  - "git tag" and "git verify-tag" have been rewritten in C.

* Performance Tweaks

  - "git pack-objects" avoids re-deltification cost by caching
    small enough delta results it creates while looking for the
    best delta candidates.

  - "git pack-objects" learned a new heuristic to prefer delta
    that is shallower in depth over the smallest delta
    possible.  This improves both overall packfile access
    performance and packfile density.

  - diff-delta code that is used for packing has been improved
    to work better on big files.

  - when there are more than one pack files in the repository,
    the runtime used to try finding an object always from the
    newest packfile; it now tries the same packfile as we found
    the object requested the last time, which exploits the
    locality of references.

  - verifying pack contents done by "git fsck --full" got boost
    by carefully choosing the order to verify objects in them.

  - "git read-tree -m" to read into an already populated index
    has been optimized vastly.  The effect of this can be seen
    when switching branches that have differences in only a
    handful paths.

  - "git add paths..." and "git commit paths..." has also been
    heavily optimized.

Fixes since v1.5.2
------------------

All of the fixes in v1.5.2 maintenance series are included in
this release, unless otherwise noted.

* Bugfixes

  - "gitweb" had trouble handling non UTF-8 text with older
    Encode.pm Perl module.

  - "git svn" misparsed the data from the commits in the repository when
    the user had "color.diff = true" in the configuration.  This has been
    fixed.

  - There was a case where "git svn dcommit" clobbered changes made on the
    SVN side while committing multiple changes.

  - "git-write-tree" had a bad interaction with racy-git avoidance and
    gitattributes mechanisms.

  - "git --bare command" overrode existing GIT_DIR setting and always
    made it treat the current working directory as GIT_DIR.

  - "git ls-files --error-unmatch" does not complain if you give the
    same path pattern twice by mistake.

  - "git init" autodetected core.filemode but not core.symlinks, which
    made a new directory created automatically by "git clone" cumbersome
    to use on filesystems that require these configurations to be set.

  - "git log" family of commands behaved differently when run as "git
    log" (no pathspec) and as "git log --" (again, no pathspec).  This
    inconsistency was introduced somewhere in v1.3.0 series but now has
    been corrected.

  - "git rebase -m" incorrectly displayed commits that were skipped.

Title: GIT Release Notes
Summary
This section outlines various updates, improvements, and bug fixes in the GIT release, including enhancements to commands like git log, git pack-objects, and git svn, as well as performance tweaks, build changes, and fixes for issues like encoding problems and command behavior inconsistencies.