Home Explore Blog CI



git

2nd chunk of `Documentation/RelNotes/1.5.4.adoc`
96b56f4be6e2ad6553c64963190bfda11621ca7ccb046daf0000000100000fa1
 Git older than version 1.5.2 may revert to version 1
   of the pack index with a manual "git index-pack" to be able to directly
   access corresponding pack files.


Updates since v1.5.3
--------------------

 * Comes with much improved gitk, with i18n.

 * Comes with git-gui 0.9.2 with i18n.

 * gitk is now merged as a subdirectory of git.git project, in
   preparation for its i18n.

 * progress displays from many commands are a lot nicer to the eye.
   Transfer commands show throughput data.

 * many commands that pay attention to per-directory .gitignore now do
   so lazily, which makes the usual case go much faster.

 * Output processing for '--pretty=format:<user format>' has been
   optimized.

 * Rename detection of diff family while detecting exact matches has
   been greatly optimized.

 * Rename detection of diff family tries to make more natural looking
   pairing.  Earlier, if multiple identical rename sources were
   found in the preimage, the source used was picked pretty much at random.

 * Value "true" for color.diff and color.status configuration used to
   mean "always" (even when the output is not going to a terminal).
   This has been corrected to mean the same thing as "auto".

 * "git diff" Porcelain now respects diff.external configuration, which
   is another way to specify GIT_EXTERNAL_DIFF.

 * "git diff" can be told to use different prefixes other than
   "a/" and "b/" e.g. "git diff --src-prefix=l/ --dst-prefix=k/".

 * "git diff" sometimes did not quote paths with funny
   characters properly.

 * "git log" (and any revision traversal commands) misbehaved
   when --diff-filter is given but was not asked to actually
   produce diff.

 * HTTP proxy can be specified per remote repository using
   remote.*.httpproxy configuration, or global http.proxy configuration
   variable.

 * Various Perforce importer updates.

 * Example update and post-receive hooks have been improved.

 * Any command that wants to take a commit object name can now use
   ":/string" syntax to name a commit.

 * "git reset" is now built-in and its output can be squelched with -q.

 * "git reset --hard" does not make any sense in a bare
   repository, but did not error out; fixed.

 * "git send-email" can optionally talk over ssmtp and use SMTP-AUTH.

 * "git rebase" learned --whitespace option.

 * In "git rebase", when you decide not to replay a particular change
   after the command stopped with a conflict, you can say "git rebase
   --skip" without first running "git reset --hard", as the command now
   runs it for you.

 * "git rebase --interactive" mode can now work on detached HEAD.

 * Other minor to serious bugs in "git rebase -i" have been fixed.

 * "git rebase" now detaches head during its operation, so after a
   successful "git rebase" operation, the reflog entry branch@{1} for
   the current branch points at the commit before the rebase was
   started.

 * "git rebase -i" also triggers rerere to help your repeated merges.

 * "git merge" can call the "post-merge" hook.

 * "git pack-objects" can optionally run deltification with multiple
   threads.

 * "git archive" can optionally substitute keywords in files marked with
   export-subst attribute.

 * "git cherry-pick" made a misguided attempt to repeat the original
   command line in the generated log message, when told to cherry-pick a
   commit by naming a tag that points at it.  It does not anymore.

 * "git for-each-ref" learned %(xxxdate:<date-format>) syntax to show the
   various date fields in different formats.

 * "git gc --auto" is a low-impact way to automatically run a variant of
   "git repack" that does not lose unreferenced objects (read: safer
   than the usual one) after the user accumulates too many loose
   objects.

 * "git clean" has been rewritten in C.

 * You need to explicitly set clean.requireForce to "false" to allow
   "git clean" without -f to do any damage (lack of the configuration
   variable used to mean "do not require -f option

Title: GIT Updates and Fixes
Summary
The latest GIT updates include improvements to gitk and git-gui with internationalization, optimized output processing, and enhanced rename detection, as well as numerous bug fixes and new features for various GIT commands, such as diff, log, rebase, and merge, to improve performance, usability, and functionality.