-Git v1.7.4 Release Notes (draft)
-================================
+Git v1.7.4 Release Notes
+========================
Updates since v1.7.3
--------------------
- * The option parsers of various commands that create new branch (or
+ * The documentation Makefile now assumes by default asciidoc 8 and
+ docbook-xsl >= 1.73. If you have older versions, you can set
+ ASCIIDOC7 and ASCIIDOC_ROFF, respectively.
+
+ * The option parsers of various commands that create new branches (or
rename existing ones to a new name) were too loose and users were
- allowed to call a branch with a name that begins with a dash by
- creative abuse of their command line options, which only lead to
- burn themselves. The name of a branch cannot begin with a dash
- now.
+ allowed to give a branch a name that begins with a dash by creative
+ abuse of their command line options, which only led to burning
+ themselves. The name of a branch cannot begin with a dash now.
* System-wide fallback default attributes can be stored in
- /etc/gitattributes; core.attributesfile configuration variable can
+ /etc/gitattributes; the core.attributesfile configuration variable can
be used to customize the path to this file.
* The thread structure generated by "git send-email" has changed
cover letter of the previous series; this has been changed to make
the patches in the new series replies to the new cover letter.
- * Bash completion script in contrib/ has been adjusted to be also
- usable by zsh.
+ * The Bash completion script in contrib/ has been adjusted to be usable with
+ Bash 4 (options with '=value' didn't complete). It has been also made
+ usable with zsh.
+
+ * Different pagers can be chosen depending on which subcommand is
+ being run under the pager, using the "pager.<subcommand>" variable.
+
+ * The hardcoded tab-width of 8 that is used in whitespace breakage checks is now
+ configurable via the attributes mechanism.
- * "git blame" learned --show-email option to display the e-mail
+ * Support of case insensitive filesystems (i.e. "core.ignorecase") has
+ been improved. For example, the gitignore mechanism didn't pay attention
+ to case insensitivity.
+
+ * The <tree>:<path> syntax for naming a blob in a tree, and the :<path>
+ syntax for naming a blob in the index (e.g. "master:Makefile",
+ ":hello.c") have been extended. You can start <path> with "./" to
+ implicitly have the (sub)directory you are in prefixed to the
+ lookup. Similarly, ":../Makefile" from a subdirectory would mean
+ "the Makefile of the parent directory in the index".
+
+ * "git blame" learned the --show-email option to display the e-mail
addresses instead of the names of authors.
- * "git daemon" can be built in MinGW environment.
+ * "git commit" learned the --fixup and --squash options to help later invocation
+ of interactive rebase.
+
+ * Command line options to "git cvsimport" whose names are in capital
+ letters (-A, -M, -R and -S) can now be specified as the default in
+ the .git/config file by their longer names (cvsimport.authorsFile,
+ cvsimport.mergeRegex, cvsimport.trackRevisions, cvsimport.ignorePaths).
+
+ * "git daemon" can be built in the MinGW environment.
* "git daemon" can take more than one --listen option to listen to
multiple addresses.
- * "git diff" and "git grep" learned how functions and subroutines
- in Fortran look like.
+ * "git describe --exact-match" was optimized not to read commit
+ objects unnecessarily.
+
+ * "git diff" and "git grep" learned what functions and subroutines
+ in Fortran, Pascal and Perl look like.
+
+ * "git fetch" learned the "--recurse-submodules" option.
- * "git mergetool" tells vim/gvim to show three-way diff by default
- (use vimdiff2/gvimdiff2 as the tool name for old behaviour).
+ * "git mergetool" tells vim/gvim to show a three-way diff by default
+ (use vimdiff2/gvimdiff2 as the tool name for old behavior).
* "git log -G<pattern>" limits the output to commits whose change has
added or deleted lines that match the given pattern.
use the new --empty option to be more explicit instead.
* "git repack -f" does not spend cycles to recompress objects in the
- non-delta representation anymore (use -F if you really mean it when
- e.g. you changed the compression level).
+ non-delta representation anymore (use -F if you really mean it
+ e.g. after you changed the core.compression variable setting).
* "git merge --log" used to limit the resulting merge log to 20
entries; this is now customizable by giving e.g. "--log=47".
directory in one branch while a new file is created in place of that
directory in the other branch.
- * "git rebase --autosquash" can use SHA-1 object names to name which
- commit to fix up (e.g. "fixup! e83c5163").
+ * "git merge" learned the "--abort" option, synonymous to
+ "git reset --merge" when a merge is in progress.
+
+ * "git notes" learned the "merge" subcommand to merge notes refs.
+ In addition to the default manual conflict resolution, there are
+ also several notes merge strategies for automatically resolving
+ notes merge conflicts.
+
+ * "git rebase --autosquash" can use SHA-1 object names to name the
+ commit which is to be fixed up (e.g. "fixup! e83c5163").
- * The default "recursive" merge strategy learned --rename-threshold
+ * The default "recursive" merge strategy learned the --rename-threshold
option to influence the rename detection, similar to the -M option
- of "git diff". E.g. "git merge -Xrename-threshold=50% ..." to use
- this.
+ of "git diff". From the "git merge" frontend, the "-X<strategy option>"
+ interface, e.g. "git merge -Xrename-threshold=50% ...", can be used
+ to trigger this.
* The "recursive" strategy also learned to ignore various whitespace
changes; the most notable is -Xignore-space-at-eol.
* "git send-email" learned "--to-cmd", similar to "--cc-cmd", to read
- recipient list from a command output.
+ the recipient list from a command output.
* "git send-email" learned to read and use "To:" from its input files.
* you can extend "git shell", which is often used on boxes that allow
- git-only login over ssh as login shell, with custom set of
+ git-only login over ssh as login shell, with a custom set of
commands.
+ * The current branch name in "git status" output can be colored differently
+ from the generic header color by setting the "color.status.branch" variable.
+
* "git submodule sync" updates metainformation for all submodules,
not just the ones that have been checked out.
- * gitweb can use custom 'highlight' command with its configuration file.
+ * gitweb can use a custom 'highlight' command with its configuration file.
+
+ * other gitweb updates.
Also contains various documentation updates.
Fixes since v1.7.3
------------------
-All of the fixes in v1.7.3.X maintenance series are included in this
+All of the fixes in the v1.7.3.X maintenance series are included in this
release, unless otherwise noted.
- * Smart HTTP transport used to incorrectly retry redirected POST
- request with GET request (311e2ea006).
-
- * "git apply" did not correctly handle patches that only change modes
- if told to apply while stripping leading paths with -p option (aae1f6ac).
-
- * "git apply" can deal with patches with timezone formatted with a
- colon between the hours and minutes part (e.g. "-08:00" instead of
- "-0800").
-
- * "git checkout" removed an untracked file "foo" from the working
- tree when switching to a branch that contains a tracked path
- "foo/bar". Prevent this, just like the case where the conflicting
- path were "foo" (c752e7f..7980872d).
-
- * "git diff --check" reported an incorrect line number for added
- blank lines at the end of file (8837d335).
-
* "git log --author=me --author=her" did not find commits written by
me or by her; instead it looked for commits written by me and by
her, which is impossible.
- * "git merge" into an unborn branch removed an untracked file "foo"
- from the working tree when merged branch had "foo" (2caf20c..172b642).
-
* "git push --progress" shows progress indicators now.
+ * "git rebase -i" showed a confusing error message when given a
+ branch name that does not exist.
+
* "git repack" places its temporary packs under $GIT_OBJECT_DIRECTORY/pack
instead of $GIT_OBJECT_DIRECTORY/ to avoid cross directory renames.
* "git submodule update --recursive --other-flags" passes flags down
to its subinvocations.
-
----
-exec >/var/tmp/1
-O=v1.7.3.2-450-g5b9c331
-echo O=$(git describe master)
-git shortlog --no-merges ^maint ^$O master