Git v1.7.7 Release Notes ======================== Updates since v1.7.6 -------------------- * The scripting part of the codebase is getting prepared for i18n/l10n. * Interix, Cygwin and Minix ports got updated. * Various updates git-p4 (in contrib/), fast-import, and git-svn. * Gitweb learned to read from /etc/gitweb-common.conf when it exists, before reading from gitweb_config.perl or from /etc/gitweb.conf (this last one is read only when per-repository gitweb_config.perl does not exist). * Various codepaths that invoked zlib deflate/inflate assumed that these functions can compress or uncompress more than 4GB data in one call on platforms with 64-bit long, which has been corrected. * Git now recognizes loose objects written by other implementations that uses non-standard window size for zlib deflation (e.g. Agit running on Android with 4kb window). We used to reject anything that was not deflated with 32kb window. * Interaction between the use of pager and coloring of the output has been improved, especially when a command that is not built-in was involved. * "git am" learned to pass "--exclude=" option through to underlying "git apply". * You can now feed many empty lines before feeding a mbox file to "git am". * "git archive" can be told to pass the output to gzip compression and produce "archive.tar.gz". * "git bisect" can be used in a bare repository (provided if the test you perform per each iteration does not need a working tree, of course). * The length of abbreviated object names in "git branch -v" output now honors core.abbrev configuration variable. * "git check-attr" can take relative paths from the command line. * "git check-attr" learned "--all" option to list the attributes for a given path. * "git checkout" (both the code to update the files upon checking out a different branch, the code to checkout specific set of files) learned to stream the data from object store when possible, without having to read the entire contents of a file in memory first. An earlier round of this code that is not in any released version had a large leak but now it has been plugged. * "git clone" can now take "--config key=value" option to set the repository configuration options that affect the initial checkout. * "git commit ..." now lets you feed relative pathspecs that refer outside your current subdirectory. * "git diff --stat" learned --stat-count option to limit the output of diffstat report. * "git diff" learned "--histogram" option, to use a different diff generation machinery stolen from jgit, which might give better performance. * "git diff" had a wierd worst case behaviour that can be triggered when comparing files with potentially many places that could match. * "git fetch", "git push" and friends no longer show connection errors for addresses that couldn't be connected when at least one address succeeds (this is arguably a regression but a deliberate one). * "git grep" learned --break and --heading options, to let users mimic output format of "ack". * "git grep" learned "-W" option that shows wider context using the same logic used by "git diff" to determine the hunk header. * Invoking the low-level "git http-fetch" without "-a" option (which git itself never did---normal users should not have to worry about this) is now deprecated. * The "--decorate" option to "git log" and its family learned to highlight grafted and replaced commits. * "git rebase master topci" no longer spews usage hints after giving "fatal: no such branch: topci" error message. * The recursive merge strategy implementation got a fairly large fixes for many corner cases that may rarely happen in real world projects (it has been verified that none of the 16000+ merges in the Linux kernel history back to v2.6.12 is affected with the corner case bugs this update fixes). * "git stash" learned --include-untracked option. * "git submodule update" used to stop at the first error updating a submodule; it now goes on to update other submodules that can be updated, and reports the ones with errors at the end. * "git push" can be told with --recurse-submodules=check option to refuse pushing of the supermodule, if any of its submodules' commits hasn't been pushed out to their remotes. * "git upload-pack" and "git receive-pack" learned to pretend only a subset of the refs exist in a repository. This may help a site to put many tiny repositories into one repository (this would not be useful for larger repositories as repacking would be problematic). * "git verify-pack" has been rewritten to use the "index-pack" machinery that is more efficient in reading objects in packfiles. * test scripts for gitweb tried to run even when CGI-related perl modules are not installed; it now exits early when they are unavailable. Also contains various documentation updates and minor miscellaneous changes. Fixes since v1.7.6 ------------------ Unless otherwise noted, all the fixes in 1.7.6.X maintenance track are included in this release. * The error reporting logic of "git am" when the command is fed a file whose mail-storage format is unknown was fixed. (merge dff4b0e gb/maint-am-patch-format-error-message later to 'maint'). * "git branch --set-upstream @{-1} foo" did not expand @{-1} correctly. (merge e9d4f74 mg/branch-set-upstream-previous later to 'maint'). * "git branch -m" and "git checkout -b" incorrectly allowed the tip of the branch that is currently checked out updated. (merge 55c4a67 ci/forbid-unwanted-current-branch-update later to 'maint'). * "git check-ref-format --print" used to parrot a candidate string that began with a slash (e.g. /refs/heads/master) without stripping it, to make the result a suitably normalized string the caller can append to "$GIT_DIR/". (merge f3738c1 mh/check-ref-format-print-normalize later to 'maint'). * "git clone" failed to clone locally from a ".git" file that itself is not a directory but is a pointer to one. (merge 9b0ebc7 nd/maint-clone-gitdir later to 'maint'). * "git clone" from a local repository that borrows from another object store using a relative path in its objects/info/alternates file did not adjust the alternates in the resulting repository. (merge e6baf4a1 jc/maint-clone-alternates later to 'maint'). * "git describe --dirty" did not refresh the index before checking the state of the working tree files. (cherry-pick bb57148 ac/describe-dirty-refresh later to 'maint'). * "git ls-files ../$path" that is run from a subdirectory reported errors incorrectly when there is no such path that matches the given pathspec. (merge 0f64bfa cb/maint-ls-files-error-report later to 'maint'). -- exec >/var/tmp/1 echo O=$(git describe master) O=v1.7.7-rc0-185-gb648557 git log --first-parent --oneline $O..master echo git shortlog --no-merges ^maint ^$O master