1GIT v1.6.0 Release Notes 2======================== 3 4User visible changes 5-------------------- 6 7With the default Makefile settings, most of the programs are now 8installed outside your $PATH, except for "git", "gitk" and 9some server side programs that need to be accessible for technical 10reasons. Invoking a git subcommand as "git-xyzzy" from the command 11line has been deprecated since early 2006 (and officially announced in 121.5.4 release notes); use of them from your scripts after adding 13output from "git --exec-path" to the $PATH is still supported in this 14release, but users are again strongly encouraged to adjust their 15scripts to use "git xyzzy" form, as we will stop installing 16"git-xyzzy" hardlinks for built-in commands in later releases. 17 18An earlier change to page "git status" output was overwhelmingly unpopular 19and has been reverted. 20 21Source changes needed for porting to MinGW environment are now all in the 22main git.git codebase. 23 24By default, packfiles created with this version uses delta-base-offset 25encoding introduced in v1.4.4. Pack idx files are using version 2 that 26allows larger packs and added robustness thanks to its CRC checking, 27introduced in v1.5.2 and v1.4.4.5. If you want to keep your repositories 28backwards compatible past these versions, set repack.useDeltaBaseOffset 29to false or pack.indexVersion to 1, respectively. 30 31We used to prevent sample hook scripts shipped in templates/ from 32triggering by default by relying on the fact that we install them as 33unexecutable, but on some filesystems, this approach does not work. 34They are now shipped with ".sample" suffix. If you want to activate 35any of these samples as-is, rename them to drop the ".sample" suffix, 36instead of running "chmod +x" on them. For example, you can rename 37hooks/post-update.sample to hooks/post-update to enable the sample 38hook that runs update-server-info, in order to make repositories 39friendly to dumb protocols (i.e. HTTP). 40 41GIT_CONFIG, which was only documented as affecting "git config", but 42actually affected all git commands, now only affects "git config". 43GIT_LOCAL_CONFIG, also only documented as affecting "git config" and 44not different from GIT_CONFIG in a useful way, is removed. 45 46The ".dotest" temporary area "git am" and "git rebase" use is now moved 47inside the $GIT_DIR, to avoid mistakes of adding it to the project by 48accident. 49 50An ancient merge strategy "stupid" has been removed. 51 52 53Updates since v1.5.6 54-------------------- 55 56(subsystems) 57 58* git-p4 in contrib learned "allowSubmit" configuration to control on 59 which branch to allow "submit" subcommand. 60 61* git-gui learned to stage changes per-line. 62 63(portability) 64 65* Changes for MinGW port have been merged, thanks to Johannes Sixt and 66 gangs. 67 68* Sample hook scripts shipped in templates/ are now suffixed with 69 *.sample. 70 71* perl's in-place edit (-i) does not work well without backup files on Windows; 72 some tests are rewritten to cope with this. 73 74(documentation) 75 76* Updated howto/update-hook-example 77 78* Got rid of usage of "git-foo" from the tutorial and made typography 79 more consistent. 80 81* Disambiguating "--" between revs and paths is finally documented. 82 83(performance, robustness, sanity etc.) 84 85* index-pack used too much memory when dealing with a deep delta chain. 86 This has been optimized. 87 88* reduced excessive inlining to shrink size of the "git" binary. 89 90* verify-pack checks the object CRC when using version 2 idx files. 91 92* When an object is corrupt in a pack, the object became unusable even 93 when the same object is available in a loose form, We now try harder to 94 fall back to these redundant objects when able. In particular, "git 95 repack -a -f" can be used to fix such a corruption as long as necessary 96 objects are available. 97 98* Performance of "git-blame -C -C" operation is vastly improved. 99 100* git-clone does not create refs in loose form anymore (it behaves as 101 if you immediately ran git-pack-refs after cloning). This will help 102 repositories with insanely large number of refs. 103 104* core.fsyncobjectfiles configuration can be used to ensure that the loose 105 objects created will be fsync'ed (this is only useful on filesystems 106 that does not order data writes properly). 107 108* "git commit-tree" plumbing can make Octopus with more than 16 parents. 109 "git commit" has been capable of this for quite some time. 110 111(usability, bells and whistles) 112 113* even more documentation pages are now accessible via "man" and "git help". 114 115* A new environment variable GIT_CEILING_DIRECTORIES can be used to stop 116 the discovery process of the toplevel of working tree; this may be useful 117 when you are working in a slow network disk and are outside any working tree, 118 as bash-completion and "git help" may still need to run in these places. 119 120* By default, stash entries never expire. Set reflogexpire in [gc 121 "refs/stash"] to a reasonable value to get traditional auto-expiration 122 behaviour back 123 124* Longstanding latency issue with bash completion script has been 125 addressed. This will need to be backmerged to 'maint' later. 126 127* pager.<cmd> configuration variable can be used to enable/disable the 128 default paging behaviour per command. 129 130* "git-add -i" has a new action 'e/dit' to allow you edit the patch hunk 131 manually. 132 133* git-am records the original tip of the branch in ORIG_HEAD before it 134 starts applying patches. 135 136* git-apply can handle a patch that touches the same path more than once 137 much better than before. 138 139* git-apply can be told not to trust the line counts recorded in the input 140 patch but recount, with the new --recount option. 141 142* git-apply can be told to apply a patch to a path deeper than what the 143 patch records with --directory option. 144 145* git-archive can be told to omit certain paths from its output using 146 export-ignore attributes. 147 148* git-archive uses the zlib default compression level when creating 149 zip archive. 150 151* git-archive's command line options --exec and --remote can take their 152 parameters as separate command line arguments, similar to other commands. 153 IOW, both "--exec=path" and "--exec path" are now supported. 154 155* With -v option, git-branch describes the remote tracking statistics 156 similar to the way git-checkout reports by how many commits your branch 157 is ahead/behind. 158 159* git-branch's --contains option used to always require a commit parameter 160 to limit the branches with; it now defaults to list branches that 161 contains HEAD if this parameter is omitted. 162 163* git-branch's --merged and --no-merged option used to always limit the 164 branches relative to the HEAD, but they can now take an optional commit 165 argument that is used in place of HEAD. 166 167* git-bundle can read the revision arguments from the standard input. 168 169* git-cherry-pick can replay a root commit now. 170 171* git-clone can clone from a remote whose URL would be rewritten by 172 configuration stored in $HOME/.gitconfig now. 173 174* "git-clone --mirror" is a handy way to set up a bare mirror repository. 175 176* git-cvsserver learned to respond to "cvs co -c". 177 178* git-diff --check now checks leftover merge conflict markers. 179 180* "git-diff -p" learned to grab a better hunk header lines in 181 BibTex, Pascal/Delphi, and Ruby files and also pays attention to 182 chapter and part boundary in TeX documents. 183 184* When remote side used to have branch 'foo' and git-fetch finds that now 185 it has branch 'foo/bar', it refuses to lose the existing remote tracking 186 branch and its reflog. The error message has been improved to suggest 187 pruning the remote if the user wants to proceed and get the latest set 188 of branches from the remote, including such 'foo/bar'. 189 190* fast-export learned to export and import marks file; this can be used to 191 interface with fast-import incrementally. 192 193* fast-import and fast-export learned to export and import gitlinks. 194 195* "gitk" left background process behind after being asked to dig very deep 196 history and the user killed the UI; the process is killed when the UI goes 197 away now. 198 199* git-rebase records the original tip of branch in ORIG_HEAD before it is 200 rewound. 201 202* "git rerere" can be told to update the index with auto-reused resolution 203 with rerere.autoupdate configuration variable. 204 205* git-rev-parse learned $commit^! and $commit^@ notations used in "log" 206 family. These notations are available in gitk as well, because the gitk 207 command internally uses rev-parse to interpret its arguments. 208 209* git-rev-list learned --children option to show child commits it 210 encountered during the traversal, instead of showing parent commits. 211 212* git-send-mail can talk not just over SSL but over TLS now. 213 214* git-shortlog honors custom output format specified with "--pretty=format:". 215 216* "git-stash save" learned --keep-index option. This lets you stash away the 217 local changes and bring the changes staged in the index to your working 218 tree for examination and testing. 219 220* git-stash also learned branch subcommand to create a new branch out of 221 stashed changes. 222 223* git-status gives the remote tracking statistics similar to the way 224 git-checkout reports by how many commits your branch is ahead/behind. 225 226* "git-svn dcommit" is now aware of auto-props setting the subversion user 227 has. 228 229* You can tell "git status -u" to even more aggressively omit checking 230 untracked files with --untracked-files=no. 231 232* Original SHA-1 value for "update-ref -d" is optional now. 233 234* Error codes from gitweb are made more descriptive where possible, rather 235 than "403 forbidden" as we used to issue everywhere. 236 237(internal) 238 239* git-merge has been reimplemented in C. 240 241 242Fixes since v1.5.6 243------------------ 244 245All of the fixes in v1.5.6 maintenance series are included in 246this release, unless otherwise noted. 247 248 * git-clone ignored its -u option; the fix needs to be backported to 249 'maint'; 250 251 * git-mv used to lose the distinction between changes that are staged 252 and that are only in the working tree, by staging both in the index 253 after moving such a path. 254 255 * "git-rebase -i -p" rewrote the parents to wrong ones when amending 256 (either edit or squash) was involved, and did not work correctly 257 when fast forwarding. 258