|  | GIT v1.5.3 Release Notes | 
|  | ======================== | 
|  |  | 
|  | Updates since v1.5.2 | 
|  | -------------------- | 
|  |  | 
|  | * The commit walkers other than http are officially deprecated, | 
|  | but still supported for now. | 
|  |  | 
|  | * The submodule support has Porcelain layer. | 
|  |  | 
|  | Note that the current submodule support is minimal and this is | 
|  | deliberately so.  A design decision we made is that operations | 
|  | at the supermodule level do not recurse into submodules by | 
|  | default.  The expectation is that later we would add a | 
|  | mechanism to tell git which submodules the user is interested | 
|  | in, and this information might be used to determine the | 
|  | recursive behaviour of certain commands (e.g. "git checkout" | 
|  | and "git diff"), but currently we haven't agreed on what that | 
|  | mechanism should look like.  Therefore, if you use submodules, | 
|  | you would probably need "git submodule update" on the | 
|  | submodules you care about after running a "git checkout" at | 
|  | the supermodule level. | 
|  |  | 
|  | * There are a handful pack-objects changes to help you cope better | 
|  | with repositories with pathologically large blobs in them. | 
|  |  | 
|  | * For people who need to import from Perforce, a front-end for | 
|  | fast-import is in contrib/fast-import/. | 
|  |  | 
|  | * Comes with git-gui 0.8.2. | 
|  |  | 
|  | * Comes with updated gitk. | 
|  |  | 
|  | * New commands and options. | 
|  |  | 
|  | - "git log --date=<format>" can use more formats: iso8601, rfc2822. | 
|  |  | 
|  | - The hunk header output from "git diff" family can be customized | 
|  | with the attributes mechanism.  See gitattributes(5) for details. | 
|  |  | 
|  | - "git stash" allows you to quickly save away your work in | 
|  | progress and replay it later on an updated state. | 
|  |  | 
|  | - "git rebase" learned an "interactive" mode that let you | 
|  | pick and reorder which commits to rebuild. | 
|  |  | 
|  | - "git fsck" can save its findings in $GIT_DIR/lost-found, without a | 
|  | separate invocation of "git lost-found" command.  The blobs stored by | 
|  | lost-found are stored in plain format to allow you to grep in them. | 
|  |  | 
|  | - $GIT_WORK_TREE environment variable can be used together with | 
|  | $GIT_DIR to work in a subdirectory of a working tree that is | 
|  | not located at "$GIT_DIR/..". | 
|  |  | 
|  | - Giving "--file=<file>" option to "git config" is the same as | 
|  | running the command with GIT_CONFIG=<file> environment. | 
|  |  | 
|  | - "git log" learned a new option "--follow", to follow | 
|  | renaming history of a single file. | 
|  |  | 
|  | - "git filter-branch" lets you rewrite the revision history of | 
|  | specified branches. You can specify a number of filters to | 
|  | modify the commits, files and trees. | 
|  |  | 
|  | - "git cvsserver" learned new options (--base-path, --export-all, | 
|  | --strict-paths) inspired by "git daemon". | 
|  |  | 
|  | - "git daemon --base-path-relaxed" can help migrating a repository URL | 
|  | that did not use to use --base-path to use --base-path. | 
|  |  | 
|  | - "git commit" can use "-t templatefile" option and commit.template | 
|  | configuration variable to prime the commit message given to you in the | 
|  | editor. | 
|  |  | 
|  | - "git submodule" command helps you manage the projects from | 
|  | the superproject that contain them. | 
|  |  | 
|  | - In addition to core.compression configuration option, | 
|  | core.loosecompression and pack.compression options can | 
|  | independently tweak zlib compression levels used for loose | 
|  | and packed objects. | 
|  |  | 
|  | - "git ls-tree -l" shows size of blobs pointed at by the | 
|  | tree entries, similar to "/bin/ls -l". | 
|  |  | 
|  | - "git rev-list" learned --regexp-ignore-case and | 
|  | --extended-regexp options to tweak its matching logic used | 
|  | for --grep filtering. | 
|  |  | 
|  | - "git describe --contains" is a handier way to call more | 
|  | obscure command "git name-rev --tags". | 
|  |  | 
|  | - "git gc --aggressive" tells the command to spend more cycles | 
|  | to optimize the repository harder. | 
|  |  | 
|  | - "git repack" learned a "window-memory" limit which | 
|  | dynamically reduces the window size to stay within the | 
|  | specified memory usage. | 
|  |  | 
|  | - "git repack" can be told to split resulting packs to avoid | 
|  | exceeding limit specified with "--max-pack-size". | 
|  |  | 
|  | - "git fsck" gained --verbose option.  This is really really | 
|  | verbose but it might help you identify exact commit that is | 
|  | corrupt in your repository. | 
|  |  | 
|  | - "git format-patch" learned --numbered-files option.  This | 
|  | may be useful for MH users. | 
|  |  | 
|  | - "git format-patch" learned format.subjectprefix configuration | 
|  | variable, which serves the same purpose as "--subject-prefix" | 
|  | option. | 
|  |  | 
|  | - "git tag -n -l" shows tag annotations while listing tags. | 
|  |  | 
|  | - "git cvsimport" can optionally use the separate-remote layout. | 
|  |  | 
|  | - "git blame" can be told to see through commits that change | 
|  | whitespaces and indentation levels with "-w" option. | 
|  |  | 
|  | - "git send-email" can be told not to thread the messages when | 
|  | sending out more than one patches. | 
|  |  | 
|  | - "git send-email" can also be told how to find whom to cc the | 
|  | message to for each message via --cc-cmd. | 
|  |  | 
|  | - "git config" learned NUL terminated output format via -z to | 
|  | help scripts. | 
|  |  | 
|  | - "git add" learned "--refresh <paths>..." option to selectively refresh | 
|  | the cached stat information. | 
|  |  | 
|  | - "git init -q" makes the command quieter. | 
|  |  | 
|  | - "git -p command" now has a cousin of opposite sex, "git --no-pager | 
|  | command". | 
|  |  | 
|  | * Updated behavior of existing commands. | 
|  |  | 
|  | - "gitweb" can offer multiple snapshot formats. | 
|  |  | 
|  | ***NOTE*** Unfortunately, this changes the format of the | 
|  | $feature{snapshot}{default} entry in the per-site | 
|  | configuration file 'gitweb_config.perl'.  It used to be a | 
|  | three-element tuple that describe a single format; with the | 
|  | new configuration item format, you only have to say the name | 
|  | of the format ('tgz', 'tbz2' or 'zip').  Please update the | 
|  | your configuration file accordingly. | 
|  |  | 
|  | - "git clone" uses -l (hardlink files under .git) by default when | 
|  | cloning locally. | 
|  |  | 
|  | - URL used for "git clone" and friends can specify nonstandard SSH port | 
|  | by using ssh://host:port/path/to/repo syntax. | 
|  |  | 
|  | - "git bundle create" can now create a bundle without negative refs, | 
|  | i.e. "everything since the beginning up to certain points". | 
|  |  | 
|  | - "git diff" (but not the plumbing level "git diff-tree") now | 
|  | recursively descends into trees by default. | 
|  |  | 
|  | - "git diff" does not show differences that come only from | 
|  | stat-dirtiness in the form of "diff --git" header anymore. | 
|  | It runs "update-index --refresh" silently as needed. | 
|  |  | 
|  | - "git tag -l" used to match tags by globbing its parameter as if it | 
|  | has wildcard '*' on both ends, which made "git tag -l gui" to match | 
|  | tag 'gitgui-0.7.0'; this was very annoying.  You now have to add | 
|  | asterisk on the sides you want to wildcard yourself. | 
|  |  | 
|  | - The editor to use with many interactive commands can be | 
|  | overridden with GIT_EDITOR environment variable, or if it | 
|  | does not exist, with core.editor configuration variable.  As | 
|  | before, if you have neither, environment variables VISUAL | 
|  | and EDITOR are consulted in this order, and then finally we | 
|  | fall back on "vi". | 
|  |  | 
|  | - "git rm --cached" does not complain when removing a newly | 
|  | added file from the index anymore. | 
|  |  | 
|  | - Options to "git log" to affect how --grep/--author options look for | 
|  | given strings now have shorter abbreviations.  -i is for ignore case, | 
|  | and -E is for extended regexp. | 
|  |  | 
|  | - "git log" learned --log-size to show the number of bytes in | 
|  | the log message part of the output to help qgit. | 
|  |  | 
|  | - "git log --name-status" does not require you to give "-r" anymore. | 
|  | As a general rule, Porcelain commands should recurse when showing | 
|  | diff. | 
|  |  | 
|  | - "git format-patch --root A" can be used to format everything | 
|  | since the beginning up to A.  This was supported with | 
|  | "git format-patch --root A A" for a long time, but was not | 
|  | properly documented. | 
|  |  | 
|  | - "git svn dcommit" retains local merge information. | 
|  |  | 
|  | - "git svnimport" allows an empty string to be specified as the | 
|  | trunk/ directory.  This is necessary to suck data from a SVN | 
|  | repository that doe not have trunk/ branches/ and tags/ organization | 
|  | at all. | 
|  |  | 
|  | - "git config" to set values also honors type flags like --bool | 
|  | and --int. | 
|  |  | 
|  | - core.quotepath configuration can be used to make textual git | 
|  | output to emit most of the characters in the path literally. | 
|  |  | 
|  | - "git mergetool" chooses its backend more wisely, taking | 
|  | notice of its environment such as use of X, Gnome/KDE, etc. | 
|  |  | 
|  | - "gitweb" shows merge commits a lot nicer than before.  The | 
|  | default view uses more compact --cc format, while the UI | 
|  | allows to choose normal diff with any parent. | 
|  |  | 
|  | - snapshot files "gitweb" creates from a repository at | 
|  | $path/$project/.git are more useful.  We use $project part | 
|  | in the filename, which we used to discard. | 
|  |  | 
|  | - "git cvsimport" creates lightweight tags; there is no | 
|  | interesting information we can record in an annotated tag, | 
|  | and the handcrafted ones the old code created was not | 
|  | properly formed anyway. | 
|  |  | 
|  | - "git push" pretends that you immediately fetched back from | 
|  | the remote by updating corresponding remote tracking | 
|  | branches if you have any. | 
|  |  | 
|  | - The diffstat given after a merge (or a pull) honors the | 
|  | color.diff configuration. | 
|  |  | 
|  | - "git commit --amend" is now compatible with various message source | 
|  | options such as -m/-C/-c/-F. | 
|  |  | 
|  | - "git apply --whitespace=strip" removes blank lines added at | 
|  | the end of the file. | 
|  |  | 
|  | - "git fetch" over git native protocols with "-v" option shows | 
|  | connection status, and the IP address of the other end, to | 
|  | help diagnosing problems. | 
|  |  | 
|  | - We used to have core.legacyheaders configuration, when | 
|  | set to false, allowed git to write loose objects in a format | 
|  | that mimics the format used by objects stored in packs.  It | 
|  | turns out that this was not so useful.  Although we will | 
|  | continue to read objects written in that format, we do not | 
|  | honor that configuration anymore and create loose objects in | 
|  | the legacy/traditional format. | 
|  |  | 
|  | - "--find-copies-harder" option to diff family can now be | 
|  | spelled as "-C -C" for brevity. | 
|  |  | 
|  | - "git mailsplit" (hence "git am") can read from Maildir | 
|  | formatted mailboxes. | 
|  |  | 
|  | - "git cvsserver" does not barf upon seeing "cvs login" | 
|  | request. | 
|  |  | 
|  | - "pack-objects" honors "delta" attribute set in | 
|  | .gitattributes.  It does not attempt to deltify blobs that | 
|  | come from paths with delta attribute set to false. | 
|  |  | 
|  | - "new-workdir" script (in contrib) can now be used with a | 
|  | bare repository. | 
|  |  | 
|  | - "git mergetool" learned to use gvimdiff. | 
|  |  | 
|  | - "gitview" (in contrib) has a better blame interface. | 
|  |  | 
|  | - "git log" and friends did not handle a commit log message | 
|  | that is larger than 16kB; they do now. | 
|  |  | 
|  | - "--pretty=oneline" output format for "git log" and friends | 
|  | deals with "malformed" commit log messages that have more | 
|  | than one lines in the first paragraph better.  We used to | 
|  | show the first line, cutting the title at mid-sentence; we | 
|  | concatenate them into a single line and treat the result as | 
|  | "oneline". | 
|  |  | 
|  | - "git p4import" has been demoted to contrib status.  For | 
|  | a superior option, checkout the "git p4" front end to | 
|  | "git fast-import" (also in contrib).  The man page and p4 | 
|  | rpm have been removed as well. | 
|  |  | 
|  | - "git mailinfo" (hence "am") now tries to see if the message | 
|  | is in utf-8 first, instead of assuming iso-8859-1, if | 
|  | incoming e-mail does not say what encoding it is in. | 
|  |  | 
|  | * Builds | 
|  |  | 
|  | - old-style function definitions (most notably, a function | 
|  | without parameter defined with "func()", not "func(void)") | 
|  | have been eradicated. | 
|  |  | 
|  | - "git tag" and "git verify-tag" have been rewritten in C. | 
|  |  | 
|  | * Performance Tweaks | 
|  |  | 
|  | - "git pack-objects" avoids re-deltification cost by caching | 
|  | small enough delta results it creates while looking for the | 
|  | best delta candidates. | 
|  |  | 
|  | - "git pack-objects" learned a new heuristic to prefer delta | 
|  | that is shallower in depth over the smallest delta | 
|  | possible.  This improves both overall packfile access | 
|  | performance and packfile density. | 
|  |  | 
|  | - diff-delta code that is used for packing has been improved | 
|  | to work better on big files. | 
|  |  | 
|  | - when there are more than one pack files in the repository, | 
|  | the runtime used to try finding an object always from the | 
|  | newest packfile; it now tries the same packfile as we found | 
|  | the object requested the last time, which exploits the | 
|  | locality of references. | 
|  |  | 
|  | - verifying pack contents done by "git fsck --full" got boost | 
|  | by carefully choosing the order to verify objects in them. | 
|  |  | 
|  | - "git read-tree -m" to read into an already populated index | 
|  | has been optimized vastly.  The effect of this can be seen | 
|  | when switching branches that have differences in only a | 
|  | handful paths. | 
|  |  | 
|  | - "git add paths..." and "git commit paths..." has also been | 
|  | heavily optimized. | 
|  |  | 
|  | Fixes since v1.5.2 | 
|  | ------------------ | 
|  |  | 
|  | All of the fixes in v1.5.2 maintenance series are included in | 
|  | this release, unless otherwise noted. | 
|  |  | 
|  | * Bugfixes | 
|  |  | 
|  | - "gitweb" had trouble handling non UTF-8 text with older | 
|  | Encode.pm Perl module. | 
|  |  | 
|  | - "git svn" misparsed the data from the commits in the repository when | 
|  | the user had "color.diff = true" in the configuration.  This has been | 
|  | fixed. | 
|  |  | 
|  | - There was a case where "git svn dcommit" clobbered changes made on the | 
|  | SVN side while committing multiple changes. | 
|  |  | 
|  | - "git-write-tree" had a bad interaction with racy-git avoidance and | 
|  | gitattributes mechanisms. | 
|  |  | 
|  | - "git --bare command" overrode existing GIT_DIR setting and always | 
|  | made it treat the current working directory as GIT_DIR. | 
|  |  | 
|  | - "git ls-files --error-unmatch" does not complain if you give the | 
|  | same path pattern twice by mistake. | 
|  |  | 
|  | - "git init" autodetected core.filemode but not core.symlinks, which | 
|  | made a new directory created automatically by "git clone" cumbersome | 
|  | to use on filesystems that require these configurations to be set. | 
|  |  | 
|  | - "git log" family of commands behaved differently when run as "git | 
|  | log" (no pathspec) and as "git log --" (again, no pathspec).  This | 
|  | inconsistency was introduced somewhere in v1.3.0 series but now has | 
|  | been corrected. | 
|  |  | 
|  | - "git rebase -m" incorrectly displayed commits that were skipped. |