280 lines
		
	
	
	
		
			10 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			280 lines
		
	
	
	
		
			10 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
GIT v1.6.1 Release Notes
 | 
						|
========================
 | 
						|
 | 
						|
Updates since v1.6.0
 | 
						|
--------------------
 | 
						|
 | 
						|
When some commands (e.g. "git log", "git diff") spawn pager internally, we
 | 
						|
used to make the pager the parent process of the git command that produces
 | 
						|
output.  This meant that the exit status of the whole thing comes from the
 | 
						|
pager, not the underlying git command.  We swapped the order of the
 | 
						|
processes around and you will see the exit code from the command from now
 | 
						|
on.
 | 
						|
 | 
						|
(subsystems)
 | 
						|
 | 
						|
* gitk can call out to git-gui to view "git blame" output; git-gui in turn
 | 
						|
  can run gitk from its blame view.
 | 
						|
 | 
						|
* Various git-gui updates including updated translations.
 | 
						|
 | 
						|
* Various gitweb updates from repo.or.cz installation.
 | 
						|
 | 
						|
* Updates to emacs bindings.
 | 
						|
 | 
						|
(portability)
 | 
						|
 | 
						|
* A few test scripts used nonportable "grep" that did not work well on
 | 
						|
  some platforms, e.g. Solaris.
 | 
						|
 | 
						|
* Sample pre-auto-gc script has OS X support.
 | 
						|
 | 
						|
* Makefile has support for (ancient) FreeBSD 4.9.
 | 
						|
 | 
						|
(performance)
 | 
						|
 | 
						|
* Many operations that are lstat(3) heavy can be told to pre-execute
 | 
						|
  necessary lstat(3) in parallel before their main operations, which
 | 
						|
  potentially gives much improved performance for cold-cache cases or in
 | 
						|
  environments with weak metadata caching (e.g. NFS).
 | 
						|
 | 
						|
* The underlying diff machinery to produce textual output has been
 | 
						|
  optimized, which would result in faster "git blame" processing.
 | 
						|
 | 
						|
* Most of the test scripts (but not the ones that try to run servers)
 | 
						|
  can be run in parallel.
 | 
						|
 | 
						|
* Bash completion of refnames in a repository with massive number of
 | 
						|
  refs has been optimized.
 | 
						|
 | 
						|
* Cygwin port uses native stat/lstat implementations when applicable,
 | 
						|
  which leads to improved performance.
 | 
						|
 | 
						|
* "git push" pays attention to alternate repositories to avoid sending
 | 
						|
  unnecessary objects.
 | 
						|
 | 
						|
* "git svn" can rebuild an out-of-date rev_map file.
 | 
						|
 | 
						|
(usability, bells and whistles)
 | 
						|
 | 
						|
* When you mistype a command name, git helpfully suggests what it guesses
 | 
						|
  you might have meant to say.  help.autocorrect configuration can be set
 | 
						|
  to a non-zero value to accept the suggestion when git can uniquely
 | 
						|
  guess.
 | 
						|
 | 
						|
* The packfile machinery hopefully is more robust when dealing with
 | 
						|
  corrupt packs if redundant objects involved in the corruption are
 | 
						|
  available elsewhere.
 | 
						|
 | 
						|
* "git add -N path..." adds the named paths as an empty blob, so that
 | 
						|
  subsequent "git diff" will show a diff as if they are creation events.
 | 
						|
 | 
						|
* "git add" gained a built-in synonym for people who want to say "stage
 | 
						|
  changes" instead of "add contents to the staging area" which amounts
 | 
						|
  to the same thing.
 | 
						|
 | 
						|
* "git apply" learned --include=paths option, similar to the existing
 | 
						|
  --exclude=paths option.
 | 
						|
 | 
						|
* "git bisect" is careful about a user mistake and suggests testing of
 | 
						|
  merge base first when good is not a strict ancestor of bad.
 | 
						|
 | 
						|
* "git bisect skip" can take a range of commits.
 | 
						|
 | 
						|
* "git blame" re-encodes the commit metainfo to UTF-8 from i18n.commitEncoding
 | 
						|
  by default.
 | 
						|
 | 
						|
* "git check-attr --stdin" can check attributes for multiple paths.
 | 
						|
 | 
						|
* "git checkout --track origin/hack" used to be a syntax error.  It now
 | 
						|
  DWIMs to create a corresponding local branch "hack", i.e. acts as if you
 | 
						|
  said "git checkout --track -b hack origin/hack".
 | 
						|
 | 
						|
* "git checkout --ours/--theirs" can be used to check out one side of a
 | 
						|
  conflicting merge during conflict resolution.
 | 
						|
 | 
						|
* "git checkout -m" can be used to recreate the initial conflicted state
 | 
						|
  during conflict resolution.
 | 
						|
 | 
						|
* "git cherry-pick" can also utilize rerere for conflict resolution.
 | 
						|
 | 
						|
* "git clone" learned to be verbose with -v
 | 
						|
 | 
						|
* "git commit --author=$name" can look up author name from existing
 | 
						|
  commits.
 | 
						|
 | 
						|
* output from "git commit" has been reworded in a more concise and yet
 | 
						|
  more informative way.
 | 
						|
 | 
						|
* "git count-objects" reports the on-disk footprint for packfiles and
 | 
						|
  their corresponding idx files.
 | 
						|
 | 
						|
* "git daemon" learned --max-connections=<count> option.
 | 
						|
 | 
						|
* "git daemon" exports REMOTE_ADDR to record client address, so that
 | 
						|
  spawned programs can act differently on it.
 | 
						|
 | 
						|
* "git describe --tags" favours closer lightweight tags than farther
 | 
						|
  annotated tags now.
 | 
						|
 | 
						|
* "git diff" learned to mimic --suppress-blank-empty from GNU diff via a
 | 
						|
  configuration option.
 | 
						|
 | 
						|
* "git diff" learned to put more sensible hunk headers for Python,
 | 
						|
  HTML and ObjC contents.
 | 
						|
 | 
						|
* "git diff" learned to vary the a/ vs b/ prefix depending on what are
 | 
						|
  being compared, controlled by diff.mnemonicprefix configuration.
 | 
						|
 | 
						|
* "git diff" learned --dirstat-by-file to count changed files, not number
 | 
						|
  of lines, when summarizing the global picture.
 | 
						|
 | 
						|
* "git diff" learned "textconv" filters --- a binary or hard-to-read
 | 
						|
  contents can be munged into human readable form and the difference
 | 
						|
  between the results of the conversion can be viewed (obviously this
 | 
						|
  cannot produce a patch that can be applied, so this is disabled in
 | 
						|
  format-patch among other things).
 | 
						|
 | 
						|
* "--cached" option to "git diff has an easier to remember synonym "--staged",
 | 
						|
  to ask "what is the difference between the given commit and the
 | 
						|
  contents staged in the index?"
 | 
						|
 | 
						|
* "git for-each-ref" learned "refname:short" token that gives an
 | 
						|
  unambiguously abbreviated refname.
 | 
						|
 | 
						|
* Auto-numbering of the subject lines is the default for "git
 | 
						|
  format-patch" now.
 | 
						|
 | 
						|
* "git grep" learned to accept -z similar to GNU grep.
 | 
						|
 | 
						|
* "git help" learned to use GIT_MAN_VIEWER environment variable before
 | 
						|
  using "man" program.
 | 
						|
 | 
						|
* "git imap-send" can optionally talk SSL.
 | 
						|
 | 
						|
* "git index-pack" is more careful against disk corruption while
 | 
						|
  completing a thin pack.
 | 
						|
 | 
						|
* "git log --check" and "git log --exit-code" passes their underlying diff
 | 
						|
  status with their exit status code.
 | 
						|
 | 
						|
* "git log" learned --simplify-merges, a milder variant of --full-history;
 | 
						|
  "gitk --simplify-merges" is easier to view than with --full-history.
 | 
						|
 | 
						|
* "git log" learned "--source" to show what ref each commit was reached
 | 
						|
  from.
 | 
						|
 | 
						|
* "git log" also learned "--simplify-by-decoration" to show the
 | 
						|
  birds-eye-view of the topology of the history.
 | 
						|
 | 
						|
* "git log --pretty=format:" learned "%d" format element that inserts
 | 
						|
  names of tags that point at the commit.
 | 
						|
 | 
						|
* "git merge --squash" and "git merge --no-ff" into an unborn branch are
 | 
						|
  noticed as user errors.
 | 
						|
 | 
						|
* "git merge -s $strategy" can use a custom built strategy if you have a
 | 
						|
  command "git-merge-$strategy" on your $PATH.
 | 
						|
 | 
						|
* "git pull" (and "git fetch") can be told to operate "-v"erbosely or
 | 
						|
  "-q"uietly.
 | 
						|
 | 
						|
* "git push" can be told to reject deletion of refs with receive.denyDeletes
 | 
						|
  configuration.
 | 
						|
 | 
						|
* "git rebase" honours pre-rebase hook; use --no-verify to bypass it.
 | 
						|
 | 
						|
* "git rebase -p" uses interactive rebase machinery now to preserve the merges.
 | 
						|
 | 
						|
* "git reflog expire branch" can be used in place of "git reflog expire
 | 
						|
  refs/heads/branch".
 | 
						|
 | 
						|
* "git remote show $remote" lists remote branches one-per-line now.
 | 
						|
 | 
						|
* "git send-email" can be given revision range instead of files and
 | 
						|
  maildirs on the command line, and automatically runs format-patch to
 | 
						|
  generate patches for the given revision range.
 | 
						|
 | 
						|
* "git submodule foreach" subcommand allows you to iterate over checked
 | 
						|
  out submodules.
 | 
						|
 | 
						|
* "git submodule sync" subcommands allows you to update the origin URL
 | 
						|
  recorded in submodule directories from the toplevel .gitmodules file.
 | 
						|
 | 
						|
* "git svn branch" can create new branches on the other end.
 | 
						|
 | 
						|
* "gitweb" can use more saner PATH_INFO based URL.
 | 
						|
 | 
						|
(internal)
 | 
						|
 | 
						|
* "git hash-object" learned to lie about the path being hashed, so that
 | 
						|
  correct gitattributes processing can be done while hashing contents
 | 
						|
  stored in a temporary file.
 | 
						|
 | 
						|
* various callers of git-merge-recursive avoid forking it as an external
 | 
						|
  process.
 | 
						|
 | 
						|
* Git class defined in "Git.pm" can be subclasses a bit more easily.
 | 
						|
 | 
						|
* We used to link GNU regex library as a compatibility layer for some
 | 
						|
  platforms, but it turns out it is not necessary on most of them.
 | 
						|
 | 
						|
* Some path handling routines used fixed number of buffers used alternately
 | 
						|
  but depending on the call depth, this arrangement led to hard to track
 | 
						|
  bugs.  This issue is being addressed.
 | 
						|
 | 
						|
 | 
						|
Fixes since v1.6.0
 | 
						|
------------------
 | 
						|
 | 
						|
All of the fixes in v1.6.0.X maintenance series are included in this
 | 
						|
release, unless otherwise noted.
 | 
						|
 | 
						|
* Porcelains implemented as shell scripts were utterly confused when you
 | 
						|
  entered to a subdirectory of a work tree from sideways, following a
 | 
						|
  symbolic link (this may need to be backported to older releases later).
 | 
						|
 | 
						|
* Tracking symbolic links would work better on filesystems whose lstat()
 | 
						|
  returns incorrect st_size value for them.
 | 
						|
 | 
						|
* "git add" and "git update-index" incorrectly allowed adding S/F when S
 | 
						|
  is a tracked symlink that points at a directory D that has a path F in
 | 
						|
  it (we still need to fix a similar nonsense when S is a submodule and F
 | 
						|
  is a path in it).
 | 
						|
 | 
						|
* "git am" after stopping at a broken patch lost --whitespace, -C, -p and
 | 
						|
  --3way options given from the command line initially.
 | 
						|
 | 
						|
* "git diff --stdin" used to take two trees on a line and compared them,
 | 
						|
  but we dropped support for such a use case long time ago.  This has
 | 
						|
  been resurrected.
 | 
						|
 | 
						|
* "git filter-branch" failed to rewrite a tag name with slashes in it.
 | 
						|
 | 
						|
* "git http-push" did not understand URI scheme other than opaquelocktoken
 | 
						|
  when acquiring a lock from the server (this may need to be backported to
 | 
						|
  older releases later).
 | 
						|
 | 
						|
* After "git rebase -p" stopped with conflicts while replaying a merge,
 | 
						|
 "git rebase --continue" did not work (may need to be backported to older
 | 
						|
  releases).
 | 
						|
 | 
						|
* "git revert" records relative to which parent a revert was made when
 | 
						|
  reverting a merge.  Together with new documentation that explains issues
 | 
						|
  around reverting a merge and merging from the updated branch later, this
 | 
						|
  hopefully will reduce user confusion (this may need to be backported to
 | 
						|
  older releases later).
 | 
						|
 | 
						|
* "git rm --cached" used to allow an empty blob that was added earlier to
 | 
						|
  be removed without --force, even when the file in the work tree has
 | 
						|
  since been modified.
 | 
						|
 | 
						|
* "git push --tags --all $there" failed with generic usage message without
 | 
						|
  telling saying these two options are incompatible.
 | 
						|
 | 
						|
* "git log --author/--committer" match used to potentially match the
 | 
						|
  timestamp part, exposing internal implementation detail.  Also these did
 | 
						|
  not work with --fixed-strings match at all.
 | 
						|
 | 
						|
* "gitweb" did not mark non-ASCII characters imported from external HTML fragments
 | 
						|
  correctly.
 |