1GIT v1.5.2 Release Notes (draft) 2======================== 3 4Updates since v1.5.1 5-------------------- 6 7* Plumbing level subproject support. 8 9 You can include a subdirectory that has an independent git 10 repository in your index and tree objects as a 11 "subproject". This plumbing (i.e. "core") level subproject 12 support explicitly excludes recursive behaviour. 13 14 The "subproject" entries in the index and trees are 15 incompatible with older versions of git. Experimenting with 16 the plumbing level support is encouraged, but be warned that 17 unless everybody in your project updates to this release or 18 later, using this feature would make your project 19 inaccessible by people with older versions of git. 20 21* Plumbing level gitattributes support. 22 23 The gitattributes mechanism allows you to add 'attributes' to 24 paths in your project, and affect the way certain git 25 operations work. Currently you can influence if a path is 26 considered a binary or text (the former would be treated by 27 'git diff' not to produce textual output; the latter can go 28 through the line endings conversion process in repositories 29 with core.autocrlf set), expand and unexpand '$ident$' keyword 30 with blob object name, specify a custom 3-way merge driver, 31 and specify a custom diff driver. You can also apply 32 arbitrary filter to contents on check-in/check-out codepath 33 but this feature is an extremely sharp-edged razor and needs 34 to be handled with caution (do not use it unless you 35 understand the earlier mailing list discussion on keyword 36 expansion). 37 38* The packfile format now optionally suports 64-bit index. 39 40 This release supports the "version 2" format of the .idx 41 file. This is automatically enabled when a huge packfile 42 needs more than 32-bit to express offsets of objects in the 43 pack. 44 45* Comes with an updated git-gui 0.7.0 46 47* Updated gitweb: 48 49 - can show combined diff for merges; 50 - uses font size of user's preference, not hardcoded in pixels; 51 52* New commands and options. 53 54 - "git bisect start" can optionally take a single bad commit and 55 zero or more good commits on the command line. 56 57 - "git shortlog" can optionally be told to wrap its output. 58 59 - "subtree" merge strategy allows another project to be merged in as 60 your subdirectory. 61 62 - "git format-patch" learned a new --subject-prefix=<string> 63 option, to override the built-in "[PATCH]". 64 65 - "git add -u" is a quick way to do the first stage of "git 66 commit -a" (i.e. update the index to match the working 67 tree); it obviously does not make a commit. 68 69 - "git clean" honors a new configuration, "clean.requireforce". When 70 set to true, this makes "git clean" a no-op, preventing you 71 from losing files by typing "git clean" when you meant to 72 say "make clean". You can still say "git clean -f" to 73 override this. 74 75 - "git log" family of commands learned --date={local,relative,default} 76 option. --date=relative is synonym to the --relative-date. 77 --date=local gives the timestamp in local timezone. 78 79* Updated behavior of existing commands. 80 81 - When $GIT_COMMITTER_EMAIL or $GIT_AUTHOR_EMAIL is not set 82 but $EMAIL is set, the latter is used as a substitute. 83 84 - "git diff --stat" shows size of preimage and postimage blobs 85 for binary contents. Earlier it only said "Bin". 86 87 - "git lost-found" shows stuff that are unreachable except 88 from reflogs. 89 90 - "git checkout branch^0" now detaches HEAD at the tip commit 91 on the named branch, instead of just switching to the 92 branch (use "git checkout branch" to switch to the branch, 93 as before). 94 95 - "git bisect next" can be used after giving only a bad commit 96 without giving a good one (this starts bisection half-way to 97 the root commit). We used to refuse to operate without a 98 good and a bad commit. 99 100 - "git push", when pushing into more than one repository, does 101 not stop at the first error. 102 103 - "git archive" does not insist you to give --format parameter 104 anymore; it defaults to "tar". 105 106 - "git cvsserver" can use backends other than sqlite. 107 108 - "gitview" (in contrib/ section) learned to better support 109 "git-annotate". 110 111 - "git diff $commit1:$path2 $commit2:$path2" can now report 112 mode changes between the two blobs. 113 114 - Local "git fetch" from a repository whose object store is 115 one of the alternates (e.g. fetching from the origin in a 116 repository created with "git clone -l -s") avoids 117 downloading objects unnecessarily. 118 119 - "git blame" uses .mailmap to canonicalize the author name 120 just like "git shortlog" does. 121 122 - "git pack-objects" pays attention to pack.depth 123 configuration variable. 124 125 - "git cherry-pick" and "git revert" does not use .msg file in 126 the working tree to prepare commit message; instead it uses 127 $GIT_DIR/MERGE_MSG as other commands do. 128 129* Builds 130 131 - git-p4import has never been installed; now there is an 132 installation option to do so. 133 134 - gitk and git-gui can be configured out. 135 136 - Generated documentation pages automatically get version 137 information from GIT_VERSION. 138 139 - Parallel build with "make -j" descending into subdirectory 140 was fixed. 141 142* Performance Tweaks 143 144 - Optimized "git-rev-list --bisect" (hence "git-bisect"). 145 146 - Optimized "git-add $path" in a large directory, most of 147 whose contents are ignored. 148 149 - Optimized "git-diff-tree" for reduced memory footprint. 150 151 - The recursive merge strategy updated a worktree file that 152 was changed identically in two branches, when one of them 153 renamed it. We do not do that when there is no rename, so 154 match that behaviour. This avoids excessive rebuilds. 155 156 - The default pack depth has been increased to 50, as the 157 recent addition of delta_base_cache makes deeper delta chains 158 much less expensive to access. Depending on the project, it was 159 reported that this reduces the resulting pack file by 10% 160 or so. 161 162 163Fixes since v1.5.1 164------------------ 165 166All of the fixes in v1.5.1 maintenance series are included in 167this release, unless otherwise noted. 168 169* Bugfixes 170 171 - Switching branches with "git checkout" refused to work when 172 a path changes from a file to a directory between the 173 current branch and the new branch, in order not to lose 174 possible local changes in the directory that is being turned 175 into a file with the switch. We now allow such a branch 176 switch after making sure that there is no locally modified 177 file nor un-ignored file in the directory. This has not 178 been backported to 1.5.1.x series, as it is rather an 179 intrusive change. 180 181 - Merging branches that have a file in one and a directory in 182 another at the same path used to get quite confused. We 183 handle such a case a bit more carefully, even though that is 184 still left as a conflict for the user to sort out. This 185 will not be backported to 1.5.1.x series, as it is rather an 186 intrusive change. 187 188 - git-fetch had trouble with a remote with insanely large number 189 of refs. 190 191 - "git clean -d -X" now does not remove non-excluded directories. 192 193* Documentation updates 194 195* Performance Tweaks 196 197-- 198exec >/var/tmp/1 199O=v1.5.2-rc3 200echo O=`git describe refs/heads/master` 201git shortlog --no-merges $O..refs/heads/master ^refs/heads/maint