Git v1.7.4 Release Notes ======================== Updates since v1.7.3 -------------------- * 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 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; 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 slightly. Setting the cover letter of the latest series as a reply to the cover letter of the previous series with --in-reply-to used to make the new cover letter and all the patches replies to the cover letter of the previous series; this has been changed to make the patches in the new series replies to the new cover letter. * 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." variable. * The hardcoded tab-width of 8 that is used in whitespace breakage checks is now configurable via the attributes mechanism. * 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 : syntax for naming a blob in a tree, and the : syntax for naming a blob in the index (e.g. "master:Makefile", ":hello.c") have been extended. You can start 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 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 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 a three-way diff by default (use vimdiff2/gvimdiff2 as the tool name for old behavior). * "git log -G" limits the output to commits whose change has added or deleted lines that match the given pattern. * "git read-tree" with no argument as a way to empty the index is deprecated; we might want to remove it in the future. Users can 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 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". * "git merge" may work better when all files were moved out of a directory in one branch while a new file is created in place of that directory in the other branch. * "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 the --rename-threshold option to influence the rename detection, similar to the -M option of "git diff". From the "git merge" frontend, the "-X" 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 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 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 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 the v1.7.3.X maintenance series are included in this release, unless otherwise noted. * "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 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. Git 1.7.3.5 Release Notes ========================= * The xfuncname pattern used by "git diff" and "git grep" to show the last notable line in context were broken for python and ruby for a long time. * "git merge" into an unborn branch removed an untracked file "foo" from the working tree when merged branch had "foo" (this fix was already in 1.7.3.3 but was omitted from the release notes by mistake). * "git status -s" did not quote unprintable characters in paths as documented. * "git am --abort" used to always reset to the commit at the beginning of the last "am" invocation that has stopped, losing any unrelated commits that may have been made since then. Now it refrains from doing so and instead issues a warning. * "git blame" incorrectly reused bogusly cached result of textconv filter for files from the working tree. * "git commit" used to abort after the user edited the log message when the committer information was not correctly set up. It now aborts before starting the editor. * "git commit --date=invalid" used to silently ignore the incorrectly specified date; it is now diagnosed as an error. * "git rebase --skip" to skip the last commit in a series used to fail to run post-rewrite hook and to copy notes from old commits that have successfully been rebased so far. Now it do (backmerge ef88ad2). * "gitweb" tried to show a wrong feed logo when none was specified. Git v1.7.3.4 Release Notes ========================== Fixes since v1.7.3.3 -------------------- * Smart HTTP transport used to incorrectly retry redirected POST request with GET request. * "git apply" did not correctly handle patches that only change modes if told to apply while stripping leading paths with -p option. * "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 cherry-pick" or "git revert" refused to work when a path that would be modified by the operation was stat-dirty without a real difference in the contents of the file. * "git diff --check" reported an incorrect line number for added blank lines at the end of file. * "git imap-send" failed to build under NO_OPENSSL. * Setting log.decorate configuration variable to "0" or "1" to mean "false" or "true" did not work. * "git push" over dumb HTTP protocol did not work against WebDAV servers that did not terminate a collection name with a slash. * "git tag -v" did not work with GPG signatures in rfc1991 mode. * The post-receive-email sample hook was accidentally broken in 1.7.3.3 update. * "gitweb" can sometimes be tricked into parrotting a filename argument given in a request without properly quoting. Other minor fixes and documentation updates are also included.