Home Explore Blog CI



git

7th chunk of `Documentation/RelNotes/1.5.0.adoc`
530d8c2ca394d3b617d82034375e3c6c18a9cbfd4816a4a20000000100000c4f
 not UTF-8.  git-log and friends notice this,
   and re-encodes the message to the log output encoding when
   displaying, if they are different.  The log output encoding
   is determined by "git log --encoding=<encoding>",
   i18n.logoutputencoding configuration, or i18n.commitencoding
   configuration, in the decreasing order of preference, and
   defaults to UTF-8.

 - Tools for e-mailed patch application now default to -u
   behavior; i.e. it always re-codes from the e-mailed encoding
   to the encoding specified with i18n.commitencoding.  This
   unfortunately forces projects that have happily been using a
   legacy encoding without setting i18n.commitencoding to set
   the configuration, but taken with other improvement, please
   excuse us for this very minor one-time inconvenience.


* e-mailed patches

 - See the above I18n section.

 - git-format-patch now enables --binary without being asked.
   git-am does _not_ default to it, as sending binary patch via
   e-mail is unusual and is harder to review than textual
   patches and it is prudent to require the person who is
   applying the patch to explicitly ask for it.

 - The default suffix for git-format-patch output is now ".patch",
   not ".txt".  This can be changed with --suffix=.txt option,
   or setting the config variable "format.suffix" to ".txt".


* Foreign SCM interfaces

 - git-svn now requires the Perl SVN:: libraries, the
   command-line backend was too slow and limited.

 - the 'commit' subcommand of git-svn has been renamed to
   'set-tree', and 'dcommit' is the recommended replacement for
   day-to-day work.

 - git fast-import backend.


* User support

 - Quite a lot of documentation updates.

 - Bash completion scripts have been updated heavily.

 - Better error messages for often used Porcelainish commands.

 - Git GUI.  This is a simple Tk based graphical interface for
   common Git operations.


* Sliding mmap

 - We used to assume that we can mmap the whole packfile while
   in use, but with a large project this consumes huge virtual
   memory space and truly huge ones would not fit in the
   userland address space on 32-bit platforms.  We now mmap huge
   packfile in pieces to avoid this problem.


* Shallow clones

 - There is a partial support for 'shallow' repositories that
   keeps only recent history.  A 'shallow clone' is created by
   specifying how deep that truncated history should be
   (e.g. "git clone --depth 5 git://some.where/repo.git").

   Currently a shallow repository has number of limitations:

   - Cloning and fetching _from_ a shallow clone are not
     supported (nor tested -- so they might work by accident but
     they are not expected to).

   - Pushing from nor into a shallow clone are not expected to
     work.

   - Merging inside a shallow repository would work as long as a
     merge base is found in the recent history, but otherwise it
     will be like merging unrelated histories and may result in
     huge conflicts.

   but this would be more than adequate for people who want to
   look at near the tip of a big project with a deep history and
   send patches in e-mail format.

Title: GIT Updates: Improved Performance, I18n, and User Support
Summary
This update brings several improvements to GIT, including reduced memory usage with sliding mmap, support for shallow clones with limited history, improved internationalization support, enhanced e-mailed patch handling, and updated user support features such as improved documentation, bash completion scripts, and a graphical interface, along with various other changes and fixes to improve performance and usability.