Git v1.7.5.1 Release Notes ========================== Fixes since v1.7.5 ------------------ * When an object "$tree:$path" does not exist, if $path does exist in the subtree of $tree that corresponds to the subdirectory the user is in, git now suggests using "$tree:./$path" in addition to the advice to use the full path from the root of the working tree. * The "--date=relative" output format used to say "X years, 12 months" when it should have said "X+1 years". * The smart-HTTP transfer was broken in 1.7.5 when the client needs to issue a small POST (which uses content-length) and then a large POST (which uses chunked) back to back. * "git clean" used to fail on an empty directory that is not readable, even though rmdir(2) could remove such a directory. Now we attempt it as the last resort. * The "--dirstat" option of "diff" family of commands used to totally ignore a change that only rearranged lines within a file. Such a change now counts as at least a minimum but non zero change. * The "--dirstat" option of "diff" family of commands used to use the pathname in the original, instead of the pathname in the result, when renames are involved. * "git pack-object" did not take core.bigfilethreashold into account (unlike fast-import); now it does. * "git reflog" ignored options like "--format=.." on the command line. * "git stash apply" used to refuse to work if there was any change in the working tree, even when the change did not overlap with the change the stash recorded. * "git stash apply @{99999}" was not diagnosed as an error, even when you did not have that many stash entries. * An error message from "git send-email" to diagnose a broken SMTP connection configuration lacked a space between "hello=" and "port=". And other minor fixes and documentation updates. Git v1.7.5 Release Notes ======================== Updates since v1.7.4 -------------------- * Various MinGW portability fixes. * Various git-p4 enhancements (in contrib). * Various vcs-svn, git-svn and gitk enhancements and fixes. * Various git-gui updates (0.14.0). * Update to more modern HP-UX port. * The codebase is getting prepared for i18n/l10n; no translated strings nor translation mechanism in the code yet, but the strings are being marked for l10n. * The bash completion script can now complete symmetric difference for "git diff" command, e.g. "git diff ...bra". * The default minimum length of abbreviated and unique object names can now be configured by setting the core.abbrev configuration variable. * "git apply -v" reports offset lines when the patch does not apply at the exact location recorded in the diff output. * "git config" used to be also known as "git repo-config", but the old name is now officially deprecated. * "git checkout --detach " is a more user friendly synonym for "git checkout ^0". * "git checkout" performed on detached HEAD gives a warning and advice when the commit being left behind will become unreachable from any branch or tag. * "git cherry-pick" and "git revert" can be told to use a custom merge strategy, similar to "git rebase". * "git cherry-pick" remembers which commit failed to apply when it is stopped by conflicts, making it unnecessary to use "commit -c $commit" to conclude it. * "git cvsimport" bails out immediately when the cvs server cannot be reached, without spewing unnecessary error messages that complain about the server response it never got. * "git fetch" vs "git upload-pack" transfer learned 'no-done' protocol extension to save one round-trip after the content negotiation is done. This saves one HTTP RPC, reducing the overall latency for a trivial fetch. * "git fetch" can be told to recursively fetch submodules on-demand. * "git grep -f " learned to treat "-" as "read from the standard input stream". * "git grep --no-index" did not honor pathspecs correctly, returning paths outside the specified area. * "git init" learned the --separate-git-dir option to allow the git directory for a new repository created elsewhere and linked via the gitdir mechanism. This is primarily to help submodule support later to switch between a branch of superproject that has the submodule and another that does not. * "git log" type commands now understand globbing pathspecs. You can say "git log -- '*.txt'" for example. * "git log" family of commands learned --cherry and --cherry-mark options that can be used to view two diverged branches while omitting or highlighting equivalent changes that appear on both sides of a symmetric difference (e.g. "log --cherry A...B"). * A lazy "git merge" that didn't say what to merge used to be an error. When run on a branch that has an upstream defined, however, the command now merges from the configured upstream. * "git mergetool" learned how to drive "beyond compare 3" as well. * "git rerere forget" without pathspec used to forget all the saved conflicts that relate to the current merge; it now requires you to give it pathspecs. * "git rev-list --objects $revs -- $pathspec" now limits the objects listed in its output properly with the pathspec, in preparation for narrow clones. * "git push" with no parameters gives better advice messages when "tracking" is used as the push.default semantics or there is no remote configured yet. * A possible value to the "push.default" configuration variable, 'tracking', gained a synonym that more naturally describes what it does, 'upstream'. * "git rerere" learned a new subcommand "remaining" that is similar to "status" and lists the paths that had conflicts which are known to rerere, but excludes the paths that have already been marked as resolved in the index from its output. "git mergetool" has been updated to use this facility. Also contains various documentation updates. Fixes since v1.7.4 ------------------ All of the fixes in the v1.7.4.X maintenance series are included in this release, unless otherwise noted. * "git fetch" from a client that is mostly following the remote needlessly told all of its refs to the server for both sides to compute the set of objects that need to be transferred efficiently, instead of stopping when the server heard enough. In a project with many tags, this turns out to be extremely wasteful, especially over the smart HTTP transport (sp/maint-{upload,fetch}-pack-stop-early~1). * "git fetch" run from a repository that uses the same repository as its alternate object store as the repository it is fetching from did not tell the server that it already has access to objects reachable from the refs in their common alternate object store, causing it to fetch unnecessary objects (jc/maint-fetch-alt). * "git remote add --mirror" created a configuration that is suitable for doing both a mirror fetch and a mirror push at the same time, which made little sense. We now warn and require the command line to specify either --mirror=fetch or --mirror=push. Git v1.7.4.5 Release Notes ========================== This contains only minor documentation fixes accumulated since 1.7.4.4. Git v1.7.4.4 Release Notes ========================== Fixes since v1.7.4.3 -------------------- * Compilation of sha1_file.c on BSD platforms were broken due to our recent use of getrlimit() without including . * "git config" did not diagnose incorrect configuration variable names. * "git format-patch" did not wrap a long subject line that resulted from rfc2047 encoding. * "git instaweb" should work better again with plackup. * "git log --max-count=4 -Sfoobar" now shows 4 commits that changes the number of occurrences of string "foobar"; it used to scan only for 4 commits and then emitted only matching ones. * "git log --first-parent --boundary $c^..$c" segfaulted on a merge. * "git pull" into an empty branch should have behaved as if fast-forwarding from emptiness to the version being pulled, with the usual protection against overwriting untracked files. * "git submodule" that is run while a merge in the superproject is in conflicted state tried to process each conflicted submodule up to three times. * "git status" spent all the effort to notice racily-clean index entries but didn't update the index file to help later operations go faster in some cases. And other minor fixes and documentation updates. Git v1.7.4.3 Release Notes ========================== Fixes since v1.7.4.2 -------------------- * "git apply" used to confuse lines updated by previous hunks as lines that existed before when applying a hunk, contributing misapplication of patches with offsets. * "git branch --track" (and "git checkout --track --branch") used to allow setting up a random non-branch that does not make sense to follow as the "upstream". The command correctly diagnoses it as an error. * "git checkout $other_branch" silently removed untracked symbolic links in the working tree that are in the way in order to check out paths under it from the named branch. * "git cvsimport" did not bail out immediately when the cvs server cannot be reached, spewing unnecessary error messages that complain about the server response that it never got. * "git diff --quiet" did not work very well with the "--diff-filter" option. * "git grep -n" lacked a long-hand synonym --line-number. * "git stash apply" reported the result of its operation by running "git status" from the top-level of the working tree; it should (and now does) run it from the user's working directory. And other minor fixes and documentation updates. Git v1.7.4.2 Release Notes ========================== Fixes since v1.7.4.1 -------------------- * Many documentation updates to match "git cmd -h" output and the git-cmd manual page. * We used to keep one file descriptor open for each and every packfile that we have a mmap window on it (read: "in use"), even when for very tiny packfiles. We now close the file descriptor early when the entire packfile fits inside one mmap window. * "git bisect visualize" tried to run "gitk" in windowing environments even when "gitk" is not installed, resulting in a strange error message. * "git clone /no/such/path" did not fail correctly. * "git commit" did not correctly error out when the user asked to use a non existent file as the commit message template. * "git diff --stat -B" ran on binary files counted the changes in lines, which was nonsensical. * "git diff -M" opportunistically detected copies, which was not necessarily a good thing, especially when it is internally run by recursive merge. * "git difftool" didn't tell (g)vimdiff that the files it is reading are to be opened read-only. * "git merge" didn't pay attention to prepare-commit-msg hook, even though if a merge is conflicted and manually resolved, the subsequent "git commit" would have triggered the hook, which was inconsistent. * "git patch-id" (and commands like "format-patch --ignore-in-upstream" that use it as their internal logic) handled changes to files that end with incomplete lines incorrectly. * The official value to tell "git push" to push the current branch back to update the upstream branch it forked from is now called "upstream". The old name "tracking" is and will be supported. * "git submodule update" used to honor the --merge/--rebase option (or corresponding configuration variables) even for a newly cloned subproject, which made no sense (so/submodule-no-update-first-time). * gitweb's "highlight" interface mishandled tabs. * gitweb didn't understand timezones with GMT offset that is not multiple of a whole hour. * gitweb had a few forward-incompatible syntactic constructs and also used incorrect variable when showing the file mode in a diff. And other minor fixes and documentation updates. Git v1.7.4.1 Release Notes ========================== Fixes since v1.7.4 ------------------ * On Windows platform, the codepath to spawn a new child process forgot to first flush the output buffer. * "git bundle" did not use OFS_DELTA encoding, making its output a few per-cent larger than necessarily. * The option to tell "git clone" to recurse into the submodules was misspelled with an underscore "--recurse_submodules". * "git diff --cached HEAD" before the first commit does what an end user would expect (namely, show what would be committed without further "git add"). * "git fast-import" didn't accept the command to ask for "notes" feature to be present in its input stream, even though it was capable of the feature. * "git fsck" gave up scanning loose object files in directories with garbage files. And other minor fixes and documentation updates.