GIT v1.5.5 Release Notes ======================== Updates since v1.5.4 -------------------- (subsystems) * Comes with git-gui 0.10.1 (portability) * We shouldn't ask for BSD group ownership semantics by setting g+s bit on directories on older BSD systems that refuses chmod() by non root users. BSD semantics is the default there anyway. * Bunch of portability improvement patches coming from an effort to port to Solaris has been applied. (performance) * On platforms with suboptimal qsort(3) implementation, there is an option to use more reasonable substitute we ship with our software. * New configuration variable "pack.packsizelimit" can be used in place of command line option --max-pack-size. * "git fetch" over the native git protocol used to make a connection to find out the set of current remote refs and another to actually download the pack data. We now use only one connection for these tasks. * "git commit" does not run lstat(2) more than necessary anymore. (usability, bells and whistles) * Bash completion script (in contrib) are aware of more commands and options. * You can be warned when core.autocrlf conversion is applied in such a way that results in an irreversible conversion. * A catch-all "color.ui" configuration variable can be used to enable coloring of all color-capable commands, instead of individual ones such as "color.status" and "color.branch". * The commands refused to take absolute pathnames where they require pathnames relative to the work tree or the current subdirectory. They now can take absolute pathnames in such a case as long as the pathnames do not refer outside of the work tree. E.g. "git add $(pwd)/foo" now works. * Error messages used to be sent to stderr, only to get hidden, when $PAGER was in use. They now are sent to stdout along with the command output to be shown in the $PAGER. * A pattern "foo/" in .gitignore file now matches a directory "foo". Pattern "foo" also matches as before. * bash completion's prompt helper function can talk about operation in-progress (e.g. merge, rebase, etc.). * Configuration variables "url..insteadof = " can be used to tell "git-fetch" and "git-push" to use different URL than what is given from the command line. * "git add -i" behaves better even before you make an initial commit. * "git am" refused to run from a subdirectory without a good reason. * After "git apply --whitespace=fix" fixes whitespace errors in a patch, a line before the fix can appear as a context or preimage line in a later patch, causing the patch not to apply. The command now knows to see through whitespace fixes done to context lines to successfully apply such a patch series. * "git branch" (and "git checkout -b") to branch from a local branch can optionally set "branch..merge" to mark the new branch to build on the other local branch, when "branch.autosetupmerge" is set to "always", or when passing the command line option "--track" (this option was ignored when branching from local branches). By default, this does not happen when branching from a local branch. * "git checkout" to switch to a branch that has "branch..merge" set (i.e. marked to build on another branch) reports how much the branch and the other branch diverged. * When "git checkout" has to update a lot of paths, it used to be silent for 4 seconds before it showed any progress report. It is now a bit more impatient and starts showing progress report early. * "git commit" learned a new hook "prepare-commit-msg" that can inspect what is going to be committed and prepare the commit log message template to be edited. * "git cvsimport" can now take more than one -M options. * "git describe" learned to limit the tags to be used for naming with --match option. * "git describe --contains" now barfs when the named commit cannot be described. * "git describe --exact-match" describes only commits that are tagged. * "git describe --long" describes a tagged commit as $tag-0-$sha1, instead of just showing the exact tagname. * "git describe" warns when using a tag whose name and path contradict with each other. * "git diff" learned "--relative" option to limit and output paths relative to the current directory when working in a subdirectory. * "git diff" learned "--dirstat" option to show birds-eye-summary of changes more concisely than "--diffstat". * "git format-patch" learned --cover-letter option to generate a cover letter template. * "git gc" learned --quiet option. * "git gc" now automatically prunes unreachable objects that are two weeks old or older. * "git gc --auto" can be disabled more easily by just setting gc.auto to zero. It also tolerates more packfiles by default. * "git grep" now knows "--name-only" is a synonym for the "-l" option. * "git help " now reports "'git ' is alias to ", instead of saying "No manual entry for git-". * "git help" can use different backends to show manual pages and this can be configured using "man.viewer" configuration. * "gitk" does not restore window position from $HOME/.gitk anymore (it still restores the size). * "git log --grep=" learned "--fixed-strings" option to look for without treating it as a regular expression. * "git gui" learned an auto-spell checking. * "git push HEAD" and "git push +HEAD" works as expected; they push the current branch (and only the current branch). In addition, HEAD can be written as the value of "remote..push" configuration variable. * When the configuration variable "pack.threads" is set to 0, "git repack" auto detects the number of CPUs and uses that many threads. * "git send-email" learned to prompt for passwords interactively. * "git send-email" learned an easier way to suppress CC recipients. * "git stash" learned "pop" command, that applies the latest stash and removes it from the stash, and "drop" command to discard the named stash entry. * "git submodule" learned a new subcommand "summary" to show the symmetric difference between the HEAD version and the work tree version of the submodule commits. * Various "git cvsimport", "git cvsexportcommit", "git cvsserver", "git svn" and "git p4" improvements. (internal) * Duplicated code between git-help and git-instaweb that launches user's preferred browser has been refactored. * It is now easier to write test scripts that records known breakages. * "git checkout" is rewritten in C. * "git remote" is rewritten in C. * Two conflict hunks that are separated by a very short span of common lines are now coalesced into one larger hunk, to make the result easier to read. * Run-command API's use of file descriptors is documented clearer and is more consistent now. * diff output can be sent to FILE * that is different from stdout. This will help reimplementing more things in C. Fixes since v1.5.4 ------------------ All of the fixes in v1.5.4 maintenance series are included in this release, unless otherwise noted. * "git-http-push" did not allow deletion of remote ref with the usual "push :" syntax. * "git-rebase --abort" did not go back to the right location if "git-reset" was run during the "git-rebase" session. * "git imap-send" without setting imap.host did not error out but segfaulted. GIT v1.5.4.5 Release Notes ========================== Fixes since v1.5.4.4 -------------------- * "git fetch there" when the URL information came from the Cogito style branches/there file did not update refs/heads/there (regression in 1.5.4). * Bogus refspec configuration such as "remote.there.fetch = =" were not detected as errors (regressionin 1.5.4). * You couldn't specify a custom editor whose path contains a whitespace via GIT_EDITOR (and core.editor). * The subdirectory filter to "git filter-branch" mishandled a history where the subdirectory becomes empty and then later becomes non-empty. * "git shortlog" gave an empty line if the original commit message was malformed (e.g. a botched import from foreign SCM). Now it finds the first non-empty line and uses it for better information. * When the user fails to give a revision parameter to "git svn", an error from the Perl interpreter was issued because the script lacked proper error checking. * After "git rebase" stopped due to conflicts, if the user played with "git reset" and friends, "git rebase --abort" failed to go back to the correct commit. * Additional work trees prepared with git-new-workdir (in contrib/) did not share git-svn metadata directory .git/svn with the original. * "git-merge-recursive" did not mark addition of the same path with different filemodes correctly as a conflict. * "gitweb" gave malformed URL when pathinfo stype paths are in use. * "-n" stands for "--no-tags" again for "git fetch". * "git format-patch" did not detect the need to add 8-bit MIME header when the user used format.header configuration. * "rev~" revision specifier used to mean "rev", which was inconsistent with how "rev^" worked. Now "rev~" is the same as "rev~1" (hence it also is the same as "rev^1"), and "rev~0" is the same as "rev^0" (i.e. it has to be a commit). * "git quiltimport" did not grok empty lines, lines in "file -pNNN" format to specify the prefix levels and lines with trailing comments. * "git rebase -m" triggered pre-commit verification, which made "rebase --continue" impossible. As usual, it also comes with many documentation fixes and clarifications. GIT v1.5.4.4 Release Notes ========================== Fixes since v1.5.4.3 -------------------- * Building and installing with an overtight umask such as 077 made installed templates unreadable by others, while the rest of the install are done in a way that is friendly to umask 022. * "git cvsexportcommit -w $cvsdir" misbehaved when GIT_DIR is set to a relative directory. * "git http-push" had an invalid memory access that could lead it to segfault. * When "git rebase -i" gave control back to the user for a commit that is marked to be edited, it just said "modify it with commit --amend", without saying what to do to continue after modifying it. Give an explicit instruction to run "rebase --continue" to be more helpful. * "git send-email" in 1.5.4.3 issued a bogus empty In-Reply-To: header. * "git bisect" showed mysterious "won't bisect on seeked tree" error message. This was leftover from Cogito days to prevent "bisect" starting from a cg-seeked state. We still keep the Cogito safety, but running "git bisect start" when another bisect was in effect will clean up and start over. * "git push" with an explicit PATH to receive-pack did not quite work if receive-pack was not on usual PATH. We earlier fixed the same issue with "git fetch" and upload-pack, but somehow forgot to do so in the other direction. * git-gui's info dialog was not displayed correctly when the user tries to commit nothing (i.e. without staging anything). * "git revert" did not properly fail when attempting to run with a dirty index. * "git merge --no-commit --no-ff " incorrectly made commits. * "git merge --squash --no-ff ", which is a nonsense combination of options, was not rejected. * "git ls-remote" and "git remote show" against an empty repository failed, instead of just giving an empty result (regression). * "git fast-import" did not handle a renamed path whose name needs to be quoted, due to a bug in unquote_c_style() function. * "git cvsexportcommit" was confused when multiple files with the same basename needed to be pushed out in the same commit. * "git daemon" did not send early errors to syslog. * "git log --merge" did not work well with --left-right option. * "git svn" promprted for client cert password every time it accessed the server. * The reset command in "git fast-import" data stream was documented to end with an optional LF, but it actually required one. * "git svn dcommit/rebase" did not honor --rewrite-root option. Also included are a handful documentation updates. GIT v1.5.4.3 Release Notes ========================== Fixes since v1.5.4.2 -------------------- * RPM spec used to pull in everything with 'git'. This has been changed so that 'git' package contains just the core parts, and we now supply 'git-all' metapackage to slurp in everything. This should match end user's expectation better. * When some refs failed to update, git-push reported "failure" which was unclear if some other refs were updated or all of them failed atomically (the answer is the former). Reworded the message to clarify this. * "git clone" from a repository whose HEAD was misconfigured did not set up the remote properly. Now it tries to do better. * Updated git-push documentation to clarify what "matching" means, in order to reduce user confusion. * Updated git-add documentation to clarify "add -u" operates in the current subdirectory you are in, just like other commands. * git-gui updates to work on OSX and Windows better. GIT v1.5.4.2 Release Notes ========================== Fixes since v1.5.4 ------------------ * The configuration parser was not prepared to see string valued variables misspelled as boolean and segfaulted. * Temporary files left behind due to interrupted object transfers were not cleaned up with "git prune". * "git config --unset" was confused when the unset variables were spelled with continuation lines in the config file. * The merge message detection in "git cvsimport" did not catch a message that began with "Merge...". * "git status" suggests "git rm --cached" for unstaging the earlier "git add" before the initial commit. * "git status" output was incorrect during a partial commit. * "git bisect" refused to start when the HEAD was detached. * "git bisect" allowed a wildcard character in the commit message expanded while writing its log file. * Manual pages were not formatted correctly with docbook xsl 1.72; added a workaround. * "git-commit -C $tag" used to work but rewrite in C done in 1.5.4 broke it. This was fixed in 1.5.4.1. * An entry in the .gitattributes file that names a pattern in a subdirectory of the directory it is in did not match correctly (e.g. pattern "b/*.c" in "a/.gitattributes" should match "a/b/foo.c" but it didn't). This was fixed in 1.5.4.1. * Customized color specification was parsed incorrectly when numeric color values are used. This was fixed in 1.5.4.1. * http transport misbehaved when linked with curl-gnutls. GIT v1.5.4.1 Release Notes ========================== Fixes since v1.5.4 ------------------ * "git-commit -C $tag" used to work but rewrite in C done in 1.5.4 broke it. * An entry in the .gitattributes file that names a pattern in a subdirectory of the directory it is in did not match correctly (e.g. pattern "b/*.c" in "a/.gitattributes" should match "a/b/foo.c" but it didn't). * Customized color specification was parsed incorrectly when numeric color values are used. This was fixed in 1.5.4.1.