377 lines
		
	
	
	
		
			14 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			377 lines
		
	
	
	
		
			14 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
GIT v1.5.4 Release Notes
 | 
						|
========================
 | 
						|
 | 
						|
Removal
 | 
						|
-------
 | 
						|
 | 
						|
 * "git svnimport" was removed in favor of "git svn".  It is still there
 | 
						|
   in the source tree (contrib/examples) but unsupported.
 | 
						|
 | 
						|
 * As git-commit and git-status have been rewritten, "git runstatus"
 | 
						|
   helper script lost all its users and has been removed.
 | 
						|
 | 
						|
 | 
						|
Temporarily disabled
 | 
						|
--------------------
 | 
						|
 | 
						|
 * "git http-push" is known not to work well with cURL library older
 | 
						|
   than 7.16, and we had reports of repository corruption.  It is
 | 
						|
   disabled on such platforms for now.  Unfortunately, 1.5.3.8 shares
 | 
						|
   the same issue.  In other words, this does not mean you will be
 | 
						|
   fine if you stick to an older git release.  For now, please do not
 | 
						|
   use http-push from older git with cURL older than 7.16 if you
 | 
						|
   value your data. A proper fix will hopefully materialize in
 | 
						|
   later versions.
 | 
						|
 | 
						|
 | 
						|
Deprecation notices
 | 
						|
-------------------
 | 
						|
 | 
						|
 * From v1.6.0, git will by default install dashed form of commands
 | 
						|
   (e.g. "git-commit") outside of users' normal $PATH, and will install
 | 
						|
   only selected commands ("git" itself, and "gitk") in $PATH.  This
 | 
						|
   implies:
 | 
						|
 | 
						|
   - Using dashed forms of git commands (e.g. "git-commit") from the
 | 
						|
     command line has been informally deprecated since early 2006, but
 | 
						|
     now it officially is, and will be removed in the future.  Use
 | 
						|
     dash-less forms (e.g. "git commit") instead.
 | 
						|
 | 
						|
   - Using dashed forms from your scripts, without first prepending the
 | 
						|
     return value from "git --exec-path" to the scripts' PATH, has been
 | 
						|
     informally deprecated since early 2006, but now it officially is.
 | 
						|
 | 
						|
   - Use of dashed forms with "PATH=$(git --exec-path):$PATH; export
 | 
						|
     PATH" early in your script is not deprecated with this change.
 | 
						|
 | 
						|
   Users are strongly encouraged to adjust their habits and scripts now
 | 
						|
   to prepare for this change.
 | 
						|
 | 
						|
 * The post-receive hook was introduced in March 2007 to supersede
 | 
						|
   the post-update hook, primarily to overcome the command line length
 | 
						|
   limitation of the latter.  Use of post-update hook will be deprecated
 | 
						|
   in future versions of git, starting from v1.6.0.
 | 
						|
 | 
						|
 * "git lost-found" was deprecated in favor of "git fsck"'s --lost-found
 | 
						|
   option, and will be removed in the future.
 | 
						|
 | 
						|
 * "git peek-remote" is deprecated, as "git ls-remote" was written in C
 | 
						|
   and works for all transports; "git peek-remote" will be removed in
 | 
						|
   the future.
 | 
						|
 | 
						|
 * "git repo-config" which was an old name for "git config" command
 | 
						|
   has been supported without being advertised for a long time.  The
 | 
						|
   next feature release will remove it.
 | 
						|
 | 
						|
 * From v1.6.0, the repack.usedeltabaseoffset config option will default
 | 
						|
   to true, which will give denser packfiles (i.e. more efficient storage).
 | 
						|
   The downside is that git older than version 1.4.4 will not be able
 | 
						|
   to directly use a repository packed using this setting.
 | 
						|
 | 
						|
 * From v1.6.0, the pack.indexversion config option will default to 2,
 | 
						|
   which is slightly more efficient, and makes repacking more immune to
 | 
						|
   data corruptions.  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 to lose untracked
 | 
						|
   files", but we now use the safer default).
 | 
						|
 | 
						|
 * The kinds of whitespace errors "git diff" and "git apply" notice (and
 | 
						|
   fix) can be controlled via 'core.whitespace' configuration variable
 | 
						|
   and 'whitespace' attribute in .gitattributes file.
 | 
						|
 | 
						|
 * "git push" learned --dry-run option to show what would happen if a
 | 
						|
   push is run.
 | 
						|
 | 
						|
 * "git push" does not update a tracking ref on the local side when the
 | 
						|
   remote refused to update the corresponding ref.
 | 
						|
 | 
						|
 * "git push" learned --mirror option.  This is to push the local refs
 | 
						|
   one-to-one to the remote, and deletes refs from the remote that do
 | 
						|
   not exist anymore in the repository on the pushing side.
 | 
						|
 | 
						|
 * "git push" can remove a corrupt ref at the remote site with the usual
 | 
						|
   ":ref" refspec.
 | 
						|
 | 
						|
 * "git remote" knows --mirror mode.  This is to set up configuration to
 | 
						|
   push into a remote repository to store local branch heads to the same
 | 
						|
   branch on the remote side, and remove branch heads locally removed
 | 
						|
   from local repository at the same time.  Suitable for pushing into a
 | 
						|
   back-up repository.
 | 
						|
 | 
						|
 * "git remote" learned "rm" subcommand.
 | 
						|
 | 
						|
 * "git cvsserver" can be run via "git shell".  Also, "cvs" is
 | 
						|
   recognized as a synonym for "git cvsserver", so that CVS users
 | 
						|
   can be switched to git just by changing their login shell.
 | 
						|
 | 
						|
 * "git cvsserver" acts more like receive-pack by running post-receive
 | 
						|
   and post-update hooks.
 | 
						|
 | 
						|
 * "git am" and "git rebase" are far less verbose.
 | 
						|
 | 
						|
 * "git pull" learned to pass --[no-]ff option to underlying "git
 | 
						|
   merge".
 | 
						|
 | 
						|
 * "git pull --rebase" is a different way to integrate what you fetched
 | 
						|
   into your current branch.
 | 
						|
 | 
						|
 * "git fast-export" produces data-stream that can be fed to fast-import
 | 
						|
   to reproduce the history recorded in a git repository.
 | 
						|
 | 
						|
 * "git add -i" takes pathspecs to limit the set of files to work on.
 | 
						|
 | 
						|
 * "git add -p" is a short-hand to go directly to the selective patch
 | 
						|
   subcommand in the interactive command loop and to exit when done.
 | 
						|
 | 
						|
 * "git add -i" UI has been colorized.  The interactive prompt
 | 
						|
   and menu can be colored by setting color.interactive
 | 
						|
   configuration.  The diff output (including the hunk picker)
 | 
						|
   are colored with color.diff configuration.
 | 
						|
 | 
						|
 * "git commit --allow-empty" allows you to create a single-parent
 | 
						|
   commit that records the same tree as its parent, overriding the usual
 | 
						|
   safety valve.
 | 
						|
 | 
						|
 * "git commit --amend" can amend a merge that does not change the tree
 | 
						|
   from its first parent.
 | 
						|
 | 
						|
 * "git commit" used to unconditionally strip comment lines that
 | 
						|
   began with '#' and removed excess blank lines.  This behavior has
 | 
						|
   been made configurable.
 | 
						|
 | 
						|
 * "git commit" has been rewritten in C.
 | 
						|
 | 
						|
 * "git stash random-text" does not create a new stash anymore.  It was
 | 
						|
   a UI mistake.  Use "git stash save random-text", or "git stash"
 | 
						|
   (without extra args) for that.
 | 
						|
 | 
						|
 * "git stash clear extra-text" does not clear the whole stash
 | 
						|
   anymore.  It is tempting to expect "git stash clear stash@{2}"
 | 
						|
   to drop only a single named stash entry, and it is rude to
 | 
						|
   discard everything when that is asked (but not provided).
 | 
						|
 | 
						|
 * "git prune --expire <time>" can exempt young loose objects from
 | 
						|
   getting pruned.
 | 
						|
 | 
						|
 * "git branch --contains <commit>" can list branches that are
 | 
						|
   descendants of a given commit.
 | 
						|
 | 
						|
 * "git log" learned --early-output option to help interactive GUI
 | 
						|
   implementations.
 | 
						|
 | 
						|
 * "git bisect" learned "skip" action to mark untestable commits.
 | 
						|
 | 
						|
 * "git bisect visualize" learned a shorter synonym "git bisect view".
 | 
						|
 | 
						|
 * "git bisect visualize" runs "git log" in a non-windowed
 | 
						|
   environments.  It also can be told what command to run (e.g. "git
 | 
						|
   bisect visualize tig").
 | 
						|
 | 
						|
 * "git format-patch" learned "format.numbered" configuration variable
 | 
						|
   to automatically turn --numbered option on when more than one commits
 | 
						|
   are formatted.
 | 
						|
 | 
						|
 * "git ls-files" learned "--exclude-standard" to use the canned set of
 | 
						|
   exclude files.
 | 
						|
 | 
						|
 * "git tag -a -f existing" begins the editor session using the existing
 | 
						|
   annotation message.
 | 
						|
 | 
						|
 * "git tag -m one -m bar" (multiple -m options) behaves similarly to
 | 
						|
   "git commit"; the parameters to -m options are formatted as separate
 | 
						|
   paragraphs.
 | 
						|
 | 
						|
 * The format "git show" outputs an annotated tag has been updated to
 | 
						|
   include "Tagger: " and "Date: " lines from the tag itself.  Strictly
 | 
						|
   speaking this is a backward incompatible change, but this is a
 | 
						|
   reasonable usability fix and people's scripts shouldn't have been
 | 
						|
   relying on the exact output from "git show" Porcelain anyway.
 | 
						|
 | 
						|
 * "git cvsimport" did not notice errors from underlying "cvsps"
 | 
						|
   and produced a corrupt import silently.
 | 
						|
 | 
						|
 * "git cvsexportcommit" learned -w option to specify and switch to the
 | 
						|
   CVS working directory.
 | 
						|
 | 
						|
 * "git checkout" from a subdirectory learned to use "../path" to allow
 | 
						|
   checking out a path outside the current directory without cd'ing up.
 | 
						|
 | 
						|
 * "git checkout" from and to detached HEAD leaves a bit more
 | 
						|
   information in the reflog.
 | 
						|
 | 
						|
 * "git send-email --dry-run" shows full headers for easier diagnosis.
 | 
						|
 | 
						|
 * "git merge-ours" is now built-in.
 | 
						|
 | 
						|
 * "git svn" learned "info" and "show-externals" subcommands.
 | 
						|
 | 
						|
 * "git svn" run from a subdirectory failed to read settings from the
 | 
						|
   .git/config.
 | 
						|
 | 
						|
 * "git svn" learned --use-log-author option, which picks up more
 | 
						|
   descriptive name from From: and Signed-off-by: lines in the commit
 | 
						|
   message.
 | 
						|
 | 
						|
 * "git svn" wasted way too much disk to record revision mappings
 | 
						|
   between svn and git; a new representation that is much more compact
 | 
						|
   for this information has been introduced to correct this.
 | 
						|
 | 
						|
 * "git svn" left temporary index files it used without cleaning them
 | 
						|
   up; this was corrected.
 | 
						|
 | 
						|
 * "git status" from a subdirectory now shows relative paths, which
 | 
						|
   makes copy-and-pasting for git-checkout/git-add/git-rm easier.  The
 | 
						|
   traditional behavior to show the full path relative to the top of
 | 
						|
   the work tree can be had by setting status.relativepaths
 | 
						|
   configuration variable to false.
 | 
						|
 | 
						|
 * "git blame" kept text for each annotated revision in core needlessly;
 | 
						|
   this has been corrected.
 | 
						|
 | 
						|
 * "git shortlog" learned to default to HEAD when the standard input is
 | 
						|
   a terminal and the user did not give any revision parameter.
 | 
						|
 | 
						|
 * "git shortlog" learned "-e" option to show e-mail addresses as well as
 | 
						|
   authors' names.
 | 
						|
 | 
						|
 * "git help" learned "-w" option to show documentation in browsers.
 | 
						|
 | 
						|
 * In addition there are quite a few internal clean-ups. Notably:
 | 
						|
 | 
						|
   - many fork/exec have been replaced with run-command API,
 | 
						|
     brought from the msysgit effort.
 | 
						|
 | 
						|
   - introduction and more use of the option parser API.
 | 
						|
 | 
						|
   - enhancement and more use of the strbuf API.
 | 
						|
 | 
						|
 * Makefile tweaks to support HP-UX is in.
 | 
						|
 | 
						|
Fixes since v1.5.3
 | 
						|
------------------
 | 
						|
 | 
						|
All of the fixes in v1.5.3 maintenance series are included in
 | 
						|
this release, unless otherwise noted.
 | 
						|
 | 
						|
These fixes are only in v1.5.4 and not backported to v1.5.3 maintenance
 | 
						|
series.
 | 
						|
 | 
						|
 * The way "git diff --check" behaves is much more consistent with the way
 | 
						|
   "git apply --whitespace=warn" works.
 | 
						|
 | 
						|
 * "git svn" talking with the SVN over HTTP will correctly quote branch
 | 
						|
   and project names.
 | 
						|
 | 
						|
 * "git config" did not work correctly on platforms that define
 | 
						|
   REG_NOMATCH to an even number.
 | 
						|
 | 
						|
 * Recent versions of AsciiDoc 8 has a change to break our
 | 
						|
   documentation; a workaround has been implemented.
 | 
						|
 | 
						|
 * "git diff --color-words" colored context lines in a wrong color.
 |