X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=Documentation%2FRelNotes-1.5.3.txt;h=d03894b92645f2dd0d7cb464d3ab1905d8cb62ed;hb=972b9a85301e1576c0fb84555396015663a65452;hp=d111661a7b1fe8f5089d59cfc2b88ae7305b1eef;hpb=c43f64a0afd7b4bd87ec83449995fad21b741af6;p=git.git diff --git a/Documentation/RelNotes-1.5.3.txt b/Documentation/RelNotes-1.5.3.txt index d111661a7..d03894b92 100644 --- a/Documentation/RelNotes-1.5.3.txt +++ b/Documentation/RelNotes-1.5.3.txt @@ -1,18 +1,79 @@ -GIT v1.5.3 Release Notes (draft) +GIT v1.5.3 Release Notes ======================== Updates since v1.5.2 -------------------- -* An initial interation of Porcelain level superproject support - started to take shape. +* The commit walkers other than http are officially deprecated, + but still supported for now. -* Thee are a handful pack-objects changes to help you cope better with - repositories with pathologically large blobs in them. +* 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-submodule" command helps you manage the projects from + - "git log --date=" 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=" option to "git config" is the same as + running the command with GIT_CONFIG= 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, @@ -20,24 +81,149 @@ Updates since v1.5.2 independently tweak zlib compression levels used for loose and packed objects. - - "git-ls-tree -l" shows size of blobs pointed at by the + - "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 + - "git rev-list" learned --regexp-ignore-case and --extended-regexp options to tweak its matching logic used for --grep fitering. - - "git-describe --contains" is a handier way to call more - obscure command "git-name-rev --tags". + - "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 ..." 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. @@ -45,17 +231,28 @@ Updates since v1.5.2 - The diffstat given after a merge (or a pull) honors the color.diff configuration. - - "git-apply --whitespace=strip" removes blank lines added at + - "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. - - fetch over git native protocols with -v shows connection - status, and the IP address of the other end, to help - diagnosing problems. + - "git fetch" over git native protocols with "-v" option shows + connection status, and the IP address of the other end, to + help diagnosing problems. - - core.legacyheaders is no more, although we still can read - objects created in a new loose object format. + - We used to have core.legacyheaders configuration, when + set to false, allowed git to write loose objects in a format + that mimicks 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. - - "git-mailsplit" (hence "git-am") can read from Maildir + - "--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" @@ -65,20 +262,51 @@ Updates since v1.5.2 .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. + - "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 + - "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 heuristcs 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. @@ -88,6 +316,17 @@ Updates since v1.5.2 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 ------------------ @@ -96,14 +335,32 @@ this release, unless otherwise noted. * Bugfixes - - .... This has not - been backported to 1.5.2.x series, as it is rather an - intrusive change. + - "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. --- -exec >/var/tmp/1 -O=v1.5.2-45-ged82edc -O=v1.5.2-172-g1a8b769 -echo O=`git describe refs/heads/master` -git shortlog --no-merges $O..refs/heads/master ^refs/heads/maint + - "git rebase -m" incorrectly displayed commits that were skipped.