Junio C Hamano | ab7797d | 2016-06-20 11:06:49 -0700 | [diff] [blame] | 1 | Git 2.10 Release Notes |
| 2 | ====================== |
| 3 | |
| 4 | Backward compatibility notes |
| 5 | ---------------------------- |
| 6 | |
| 7 | Updates since v2.9 |
| 8 | ------------------ |
| 9 | |
| 10 | UI, Workflows & Features |
| 11 | |
| 12 | * "git pull --rebase --verify-signature" learned to warn the user |
| 13 | that "--verify-signature" is a no-op when rebasing. |
| 14 | |
| 15 | * An upstream project can make a recommendation to shallowly clone |
| 16 | some submodules in the .gitmodules file it ships. |
| 17 | |
| 18 | * "git worktree add" learned that '-' can be used as a short-hand for |
| 19 | "@{-1}", the previous branch. |
| 20 | |
| 21 | * Update the funcname definition to support css files. |
| 22 | |
Junio C Hamano | cf4c2cf | 2016-06-27 10:07:08 -0700 | [diff] [blame] | 23 | * The completion script (in contrib/) learned to complete "git |
| 24 | status" options. |
| 25 | |
| 26 | * Messages that are generated by auto gc during "git push" on the |
| 27 | receiving end are now passed back to the sending end in such a way |
| 28 | that they are shown with "remote: " prefix to avoid confusing the |
| 29 | users. |
Junio C Hamano | ab7797d | 2016-06-20 11:06:49 -0700 | [diff] [blame] | 30 | |
Junio C Hamano | 5c589a7 | 2016-07-06 13:42:58 -0700 | [diff] [blame] | 31 | * "git add -i/-p" learned to honor diff.compactionHeuristic |
| 32 | experimental knob, so that the user can work on the same hunk split |
| 33 | as "git diff" output. |
Junio C Hamano | 5c589a7 | 2016-07-06 13:42:58 -0700 | [diff] [blame] | 34 | |
| 35 | * "upload-pack" allows a custom "git pack-objects" replacement when |
| 36 | responding to "fetch/clone" via the uploadpack.packObjectsHook. |
Junio C Hamano | 8213178 | 2016-07-28 13:14:53 -0700 | [diff] [blame] | 37 | (merge b738396 jk/upload-pack-hook later to maint). |
Junio C Hamano | 5c589a7 | 2016-07-06 13:42:58 -0700 | [diff] [blame] | 38 | |
| 39 | * Teach format-patch and mailsplit (hence "am") how a line that |
| 40 | happens to begin with "From " in the e-mail message is quoted with |
| 41 | ">", so that these lines can be restored to their original shape. |
| 42 | (merge d9925d1 ew/mboxrd-format-am later to maint). |
| 43 | |
| 44 | * "git repack" learned the "--keep-unreachable" option, which sends |
| 45 | loose unreachable objects to a pack instead of leaving them loose. |
| 46 | This helps heuristics based on the number of loose objects |
| 47 | (e.g. "gc --auto"). |
| 48 | (merge e26a8c4 jk/repack-keep-unreachable later to maint). |
| 49 | |
| 50 | * "log --graph --format=" learned that "%>|(N)" specifies the width |
| 51 | relative to the terminal's left edge, not relative to the area to |
| 52 | draw text that is to the right of the ancestry-graph section. It |
| 53 | also now accepts negative N that means the column limit is relative |
| 54 | to the right border. |
Junio C Hamano | 5c589a7 | 2016-07-06 13:42:58 -0700 | [diff] [blame] | 55 | |
Junio C Hamano | d0ccc82 | 2016-07-11 10:36:29 -0700 | [diff] [blame] | 56 | * A careless invocation of "git send-email directory/" after editing |
| 57 | 0001-change.patch with an editor often ends up sending both |
| 58 | 0001-change.patch and its backup file, 0001-change.patch~, causing |
| 59 | embarrassment and a minor confusion. Detect such an input and |
| 60 | offer to skip the backup files when sending the patches out. |
| 61 | (merge 531220b jc/send-email-skip-backup later to maint). |
| 62 | |
| 63 | * "git submodule update" that drives many "git clone" could |
| 64 | eventually hit flaky servers/network conditions on one of the |
| 65 | submodules; the command learned to retry the attempt. |
| 66 | |
| 67 | * The output coloring scheme learned two new attributes, italic and |
| 68 | strike, in addition to existing bold, reverse, etc. |
| 69 | |
| 70 | * "git log" learns log.showSignature configuration variable, and a |
| 71 | command line option "--no-show-signature" to countermand it. |
| 72 | (merge fce04c3 mj/log-show-signature-conf later to maint). |
| 73 | |
Junio C Hamano | 79ed43c | 2016-07-13 11:26:49 -0700 | [diff] [blame] | 74 | * More markings of messages for i18n, with updates to various tests |
| 75 | to pass GETTEXT_POISON tests. |
| 76 | |
| 77 | * "git archive" learned to handle files that are larger than 8GB and |
| 78 | commits far in the future than expressible by the traditional US-TAR |
| 79 | format. |
Junio C Hamano | 5b18e70 | 2016-08-31 10:21:05 -0700 | [diff] [blame] | 80 | (merge 560b0e8 jk/big-and-future-archive-tar later to maint). |
| 81 | |
Junio C Hamano | 79ed43c | 2016-07-13 11:26:49 -0700 | [diff] [blame] | 82 | |
Junio C Hamano | 08bb350 | 2016-07-19 13:26:16 -0700 | [diff] [blame] | 83 | * A new configuration variable core.sshCommand has been added to |
| 84 | specify what value for GIT_SSH_COMMAND to use per repository. |
| 85 | |
Junio C Hamano | 8213178 | 2016-07-28 13:14:53 -0700 | [diff] [blame] | 86 | * "git worktree prune" protected worktrees that are marked as |
| 87 | "locked" by creating a file in a known location. "git worktree" |
| 88 | command learned a dedicated command pair to create and remove such |
| 89 | a file, so that the users do not have to do this with editor. |
| 90 | |
| 91 | * A handful of "git svn" updates. |
| 92 | |
Junio C Hamano | 80460f5 | 2016-08-03 15:13:16 -0700 | [diff] [blame] | 93 | * "git push" learned to accept and pass extra options to the |
| 94 | receiving end so that hooks can read and react to them. |
| 95 | |
| 96 | * "git status" learned to suggest "merge --abort" during a conflicted |
| 97 | merge, just like it already suggests "rebase --abort" during a |
| 98 | conflicted rebase. |
Junio C Hamano | 80460f5 | 2016-08-03 15:13:16 -0700 | [diff] [blame] | 99 | |
| 100 | * "git jump" script (in contrib/) has been updated a bit. |
| 101 | (merge a91e692 jk/git-jump later to maint). |
| 102 | |
| 103 | * "git push" and "git clone" learned to give better progress meters |
| 104 | to the end user who is waiting on the terminal. |
| 105 | |
Junio C Hamano | 0aaf250 | 2016-08-08 14:52:08 -0700 | [diff] [blame] | 106 | * An entry "git log --decorate" for the tip of the current branch is |
| 107 | shown as "HEAD -> name" (where "name" is the name of the branch); |
Junio C Hamano | 726cc2b | 2016-08-14 14:48:06 -0700 | [diff] [blame] | 108 | the arrow is now painted in the same color as "HEAD", not in the |
| 109 | color for commits. |
Junio C Hamano | 0aaf250 | 2016-08-08 14:52:08 -0700 | [diff] [blame] | 110 | |
Junio C Hamano | 27b0ea4 | 2016-08-10 12:35:40 -0700 | [diff] [blame] | 111 | * "git format-patch" learned format.from configuration variable to |
| 112 | specify the default settings for its "--from" option. |
| 113 | |
| 114 | * "git am -3" calls "git merge-recursive" when it needs to fall back |
| 115 | to a three-way merge; this call has been turned into an internal |
| 116 | subroutine call instead of spawning a separate subprocess. |
| 117 | |
Junio C Hamano | 2807cd7 | 2016-08-12 10:01:42 -0700 | [diff] [blame] | 118 | * The command line completion scripts (in contrib/) now knows about |
| 119 | "git branch --delete/--move [--remote]". |
| 120 | (merge 2703c22 vs/completion-branch-fully-spelled-d-m-r later to maint). |
| 121 | |
Junio C Hamano | 2632c89 | 2016-08-19 15:39:33 -0700 | [diff] [blame] | 122 | * "git rev-parse --git-path hooks/<hook>" learned to take |
| 123 | core.hooksPath configuration variable (introduced during 2.9 cycle) |
| 124 | into account. |
| 125 | (merge 9445b49 ab/hooks later to maint). |
| 126 | |
| 127 | * "git log --show-signature" and other commands that display the |
| 128 | verification status of PGP signature now shows the longer key-id, |
| 129 | as 32-bit key-id is so last century. |
| 130 | |
Junio C Hamano | 5c589a7 | 2016-07-06 13:42:58 -0700 | [diff] [blame] | 131 | |
Junio C Hamano | ab7797d | 2016-06-20 11:06:49 -0700 | [diff] [blame] | 132 | Performance, Internal Implementation, Development Support etc. |
| 133 | |
| 134 | * "git fast-import" learned the same performance trick to avoid |
| 135 | creating too small a packfile as "git fetch" and "git push" have, |
| 136 | using *.unpackLimit configuration. |
| 137 | |
| 138 | * When "git daemon" is run without --[init-]timeout specified, a |
| 139 | connection from a client that silently goes offline can hang around |
| 140 | for a long time, wasting resources. The socket-level KEEPALIVE has |
| 141 | been enabled to allow the OS to notice such failed connections. |
Junio C Hamano | ab7797d | 2016-06-20 11:06:49 -0700 | [diff] [blame] | 142 | |
| 143 | * "git upload-pack" command has been updated to use the parse-options |
| 144 | API. |
| 145 | |
Junio C Hamano | 726cc2b | 2016-08-14 14:48:06 -0700 | [diff] [blame] | 146 | * The "git apply" standalone program is being libified; the first |
| 147 | step to move many state variables into a structure that can be |
| 148 | explicitly (re)initialized to make the machinery callable more |
| 149 | than once has been merged. |
Junio C Hamano | cf4c2cf | 2016-06-27 10:07:08 -0700 | [diff] [blame] | 150 | |
Junio C Hamano | 5c589a7 | 2016-07-06 13:42:58 -0700 | [diff] [blame] | 151 | * HTTP transport gained an option to produce more detailed debugging |
| 152 | trace. |
| 153 | (merge 73e57aa ep/http-curl-trace later to maint). |
| 154 | |
Junio C Hamano | 726cc2b | 2016-08-14 14:48:06 -0700 | [diff] [blame] | 155 | * Instead of taking advantage of the fact that a struct string_list |
| 156 | that is allocated with all NULs happens to be the INIT_NODUP kind, |
| 157 | the users of string_list structures are taught to initialize them |
| 158 | explicitly as such, to document their behaviour better. |
Junio C Hamano | 5c589a7 | 2016-07-06 13:42:58 -0700 | [diff] [blame] | 159 | (merge 2721ce2 jk/string-list-static-init later to maint). |
| 160 | |
| 161 | * HTTPd tests learned to show the server error log to help diagnosing |
| 162 | a failing tests. |
| 163 | (merge 44f243d nd/test-lib-httpd-show-error-log-in-verbose later to maint). |
| 164 | |
| 165 | * The ownership rule for the piece of memory that hold references to |
| 166 | be fetched in "git fetch" was screwy, which has been cleaned up. |
Junio C Hamano | 5c589a7 | 2016-07-06 13:42:58 -0700 | [diff] [blame] | 167 | |
| 168 | * "git bisect" makes an internal call to "git diff-tree" when |
| 169 | bisection finds the culprit, but this call did not initialize the |
| 170 | data structure to pass to the diff-tree API correctly. |
Junio C Hamano | 5c589a7 | 2016-07-06 13:42:58 -0700 | [diff] [blame] | 171 | |
| 172 | * Further preparatory clean-up for "worktree" feature continues. |
| 173 | (merge 0409e0b nd/worktree-cleanup-post-head-protection later to maint). |
| 174 | |
| 175 | * Formats of the various data (and how to validate them) where we use |
| 176 | GPG signature have been documented. |
Junio C Hamano | 5c589a7 | 2016-07-06 13:42:58 -0700 | [diff] [blame] | 177 | |
| 178 | * A new run-command API function pipe_command() is introduced to |
| 179 | sanely feed data to the standard input while capturing data from |
| 180 | the standard output and the standard error of an external process, |
| 181 | which is cumbersome to hand-roll correctly without deadlocking. |
| 182 | |
Junio C Hamano | 5cb0d5a | 2016-08-25 13:56:51 -0700 | [diff] [blame] | 183 | * The codepath to sign data in a prepared buffer with GPG has been |
Junio C Hamano | 5c589a7 | 2016-07-06 13:42:58 -0700 | [diff] [blame] | 184 | updated to use this API to read from the status-fd to check for |
| 185 | errors (instead of relying on GPG's exit status). |
| 186 | (merge efee955 jk/gpg-interface-cleanup later to maint). |
| 187 | |
Junio C Hamano | d0ccc82 | 2016-07-11 10:36:29 -0700 | [diff] [blame] | 188 | * Allow t/perf framework to use the features from the most recent |
| 189 | version of Git even when testing an older installed version. |
| 190 | |
Junio C Hamano | 08bb350 | 2016-07-19 13:26:16 -0700 | [diff] [blame] | 191 | * The commands in the "log/diff" family have had an FILE* pointer in the |
| 192 | data structure they pass around for a long time, but some codepaths |
| 193 | used to always write to the standard output. As a preparatory step |
| 194 | to make "git format-patch" available to the internal callers, these |
| 195 | codepaths have been updated to consistently write into that FILE* |
| 196 | instead. |
| 197 | |
| 198 | * Conversion from unsigned char sha1[20] to struct object_id |
| 199 | continues. |
| 200 | |
| 201 | * Improve the look of the way "git fetch" reports what happened to |
| 202 | each ref that was fetched. |
Junio C Hamano | 08bb350 | 2016-07-19 13:26:16 -0700 | [diff] [blame] | 203 | |
| 204 | * The .c/.h sources are marked as such in our .gitattributes file so |
| 205 | that "git diff -W" and friends would work better. |
Junio C Hamano | 08bb350 | 2016-07-19 13:26:16 -0700 | [diff] [blame] | 206 | |
| 207 | * Code clean-up to avoid using a variable string that compilers may |
| 208 | feel untrustable as printf-style format given to write_file() |
| 209 | helper function. |
| 210 | |
| 211 | * "git p4" used a location outside $GIT_DIR/refs/ to place its |
| 212 | temporary branches, which has been moved to refs/git-p4-tmp/. |
| 213 | |
Junio C Hamano | 8c6d1f9 | 2016-07-25 14:17:28 -0700 | [diff] [blame] | 214 | * Existing autoconf generated test for the need to link with pthread |
| 215 | library did not check all the functions from pthread libraries; |
| 216 | recent FreeBSD has some functions in libc but not others, and we |
| 217 | mistakenly thought linking with libc is enough when it is not. |
Junio C Hamano | 8c6d1f9 | 2016-07-25 14:17:28 -0700 | [diff] [blame] | 218 | |
| 219 | * When "git fsck" reports a broken link (e.g. a tree object contains |
| 220 | a blob that does not exist), both containing object and the object |
| 221 | that is referred to were reported with their 40-hex object names. |
| 222 | The command learned the "--name-objects" option to show the path to |
| 223 | the containing object from existing refs (e.g. "HEAD~24^2:file.txt"). |
| 224 | |
| 225 | * Allow http daemon tests in Travis CI tests. |
Junio C Hamano | 8c6d1f9 | 2016-07-25 14:17:28 -0700 | [diff] [blame] | 226 | |
| 227 | * Makefile assumed that -lrt is always available on platforms that |
| 228 | want to use clock_gettime() and CLOCK_MONOTONIC, which is not a |
| 229 | case for recent Mac OS X. The necessary symbols are often found in |
| 230 | libc on many modern systems and having -lrt on the command line, as |
| 231 | long as the library exists, had no effect, but when the platform |
| 232 | removes librt.a that is a different matter--having -lrt will break |
| 233 | the linkage. |
| 234 | |
| 235 | This change could be seen as a regression for those who do need to |
| 236 | specify -lrt, as they now specifically ask for NEEDS_LIBRT when |
| 237 | building. Hopefully they are in the minority these days. |
| 238 | |
| 239 | * Further preparatory work on the refs API before the pluggable |
| 240 | backend series can land. |
| 241 | |
| 242 | * Error handling in the codepaths that updates refs has been |
| 243 | improved. |
| 244 | |
| 245 | * The API to iterate over all the refs (i.e. for_each_ref(), etc.) |
| 246 | has been revamped. |
| 247 | |
Junio C Hamano | 07d1a42 | 2016-08-17 10:18:59 -0700 | [diff] [blame] | 248 | * The handling of the "text=auto" attribute has been corrected. |
Junio C Hamano | 07c9292 | 2016-08-15 10:20:38 -0700 | [diff] [blame] | 249 | $ echo "* text=auto eol=crlf" >.gitattributes |
| 250 | used to have the same effect as |
Junio C Hamano | 07d1a42 | 2016-08-17 10:18:59 -0700 | [diff] [blame] | 251 | $ echo "* text eol=crlf" >.gitattributes |
| 252 | i.e. declaring all files are text (ignoring "auto"). The |
| 253 | combination has been fixed to be equivalent to doing |
Junio C Hamano | 07c9292 | 2016-08-15 10:20:38 -0700 | [diff] [blame] | 254 | $ git config core.autocrlf true |
| 255 | |
Junio C Hamano | d5cb9cb | 2016-08-26 13:59:20 -0700 | [diff] [blame] | 256 | * Documentation has been updated to show better example usage |
| 257 | of the updated "text=auto" attribute. |
| 258 | |
Junio C Hamano | 8213178 | 2016-07-28 13:14:53 -0700 | [diff] [blame] | 259 | * A few tests that specifically target "git rebase -i" have been |
| 260 | added. |
| 261 | |
Junio C Hamano | 80460f5 | 2016-08-03 15:13:16 -0700 | [diff] [blame] | 262 | * Dumb http transport on the client side has been optimized. |
| 263 | (merge ecba195 ew/http-walker later to maint). |
| 264 | |
| 265 | * Users of the parse_options_concat() API function need to allocate |
| 266 | extra slots in advance and fill them with OPT_END() when they want |
| 267 | to decide the set of supported options dynamically, which makes the |
| 268 | code error-prone and hard to read. This has been corrected by tweaking |
| 269 | the API to allocate and return a new copy of "struct option" array. |
Junio C Hamano | 80460f5 | 2016-08-03 15:13:16 -0700 | [diff] [blame] | 270 | |
| 271 | * "git fetch" exchanges batched have/ack messages between the sender |
| 272 | and the receiver, initially doubling every time and then falling |
| 273 | back to enlarge the window size linearly. The "smart http" |
| 274 | transport, being an half-duplex protocol, outgrows the preset limit |
| 275 | too quickly and becomes inefficient when interacting with a large |
| 276 | repository. The internal mechanism learned to grow the window size |
| 277 | more aggressively when working with the "smart http" transport. |
| 278 | |
Junio C Hamano | 0aaf250 | 2016-08-08 14:52:08 -0700 | [diff] [blame] | 279 | * Tests for "git svn" have been taught to reuse the lib-httpd test |
| 280 | infrastructure when testing the subversion integration that |
| 281 | interacts with subversion repositories served over the http:// |
| 282 | protocol. |
| 283 | (merge a8a5d25 ew/git-svn-http-tests later to maint). |
| 284 | |
| 285 | * "git pack-objects" has a few options that tell it not to pack |
| 286 | objects found in certain packfiles, which require it to scan .idx |
| 287 | files of all available packs. The codepaths involved in these |
| 288 | operations have been optimized for a common case of not having any |
| 289 | non-local pack and/or any .kept pack. |
| 290 | |
| 291 | * The t3700 test about "add --chmod=-x" have been made a bit more |
| 292 | robust and generally cleaned up. |
| 293 | (merge 766cdc4 ib/t3700-add-chmod-x-updates later to maint). |
| 294 | |
| 295 | * The build procedure learned PAGER_ENV knob that lists what default |
| 296 | environment variable settings to export for popular pagers. This |
| 297 | mechanism is used to tweak the default settings to MORE on FreeBSD. |
| 298 | (merge 995bc22 ew/build-time-pager-tweaks later to maint). |
| 299 | |
Junio C Hamano | 2807cd7 | 2016-08-12 10:01:42 -0700 | [diff] [blame] | 300 | * The http-backend (the server-side component of smart-http |
| 301 | transport) used to trickle the HTTP header one at a time. Now |
| 302 | these write(2)s are batched. |
| 303 | (merge b36045c ew/http-backend-batch-headers later to maint). |
| 304 | |
| 305 | * When "git rebase" tries to compare set of changes on the updated |
| 306 | upstream and our own branch, it computes patch-id for all of these |
| 307 | changes and attempts to find matches. This has been optimized by |
| 308 | lazily computing the full patch-id (which is expensive) to be |
| 309 | compared only for changes that touch the same set of paths. |
Junio C Hamano | 5b18e70 | 2016-08-31 10:21:05 -0700 | [diff] [blame] | 310 | (merge ba67504 kw/patch-ids-optim later to maint). |
Junio C Hamano | 2807cd7 | 2016-08-12 10:01:42 -0700 | [diff] [blame] | 311 | |
Junio C Hamano | d63263a | 2016-08-17 14:09:17 -0700 | [diff] [blame] | 312 | * A handful of tests that were broken under gettext-poison build have |
| 313 | been fixed. |
| 314 | |
Junio C Hamano | 5cb0d5a | 2016-08-25 13:56:51 -0700 | [diff] [blame] | 315 | * The recent i18n patch we added during this cycle did a bit too much |
| 316 | refactoring of the messages to avoid word-legos; the repetition has |
| 317 | been reduced to help translators. |
| 318 | |
Junio C Hamano | ab7797d | 2016-06-20 11:06:49 -0700 | [diff] [blame] | 319 | |
| 320 | Also contains various documentation updates and code clean-ups. |
| 321 | |
| 322 | |
| 323 | Fixes since v2.9 |
| 324 | ---------------- |
| 325 | |
| 326 | Unless otherwise noted, all the fixes since v2.8 in the maintenance |
| 327 | track are contained in this release (see the maintenance releases' |
| 328 | notes for details). |
| 329 | |
| 330 | * The commands in `git log` family take %C(auto) in a custom format |
| 331 | string. This unconditionally turned the color on, ignoring |
| 332 | --no-color or with --color=auto when the output is not connected to |
| 333 | a tty; this was corrected to make the format truly behave as |
| 334 | "auto". |
Junio C Hamano | ab7797d | 2016-06-20 11:06:49 -0700 | [diff] [blame] | 335 | |
| 336 | * "git rev-list --count" whose walk-length is limited with "-n" |
| 337 | option did not work well with the counting optimized to look at the |
| 338 | bitmap index. |
Junio C Hamano | ab7797d | 2016-06-20 11:06:49 -0700 | [diff] [blame] | 339 | |
| 340 | * "git show -W" (extend hunks to cover the entire function, delimited |
| 341 | by lines that match the "funcname" pattern) used to show the entire |
| 342 | file when a change added an entire function at the end of the file, |
| 343 | which has been fixed. |
Junio C Hamano | ab7797d | 2016-06-20 11:06:49 -0700 | [diff] [blame] | 344 | |
Junio C Hamano | cf4c2cf | 2016-06-27 10:07:08 -0700 | [diff] [blame] | 345 | * The documentation set has been updated so that literal commands, |
| 346 | configuration variables and environment variables are consistently |
| 347 | typeset in fixed-width font and bold in manpages. |
Junio C Hamano | cf4c2cf | 2016-06-27 10:07:08 -0700 | [diff] [blame] | 348 | |
| 349 | * "git svn propset" subcommand that was added in 2.3 days is |
| 350 | documented now. |
Junio C Hamano | cf4c2cf | 2016-06-27 10:07:08 -0700 | [diff] [blame] | 351 | |
| 352 | * The documentation tries to consistently spell "GPG"; when |
| 353 | referring to the specific program name, "gpg" is used. |
Junio C Hamano | cf4c2cf | 2016-06-27 10:07:08 -0700 | [diff] [blame] | 354 | |
| 355 | * "git reflog" stopped upon seeing an entry that denotes a branch |
| 356 | creation event (aka "unborn"), which made it appear as if the |
| 357 | reflog was truncated. |
Junio C Hamano | cf4c2cf | 2016-06-27 10:07:08 -0700 | [diff] [blame] | 358 | |
| 359 | * The git-prompt scriptlet (in contrib/) was not friendly with those |
| 360 | who uses "set -u", which has been fixed. |
Junio C Hamano | cf4c2cf | 2016-06-27 10:07:08 -0700 | [diff] [blame] | 361 | |
| 362 | * compat/regex code did not cleanly compile. |
Junio C Hamano | cf4c2cf | 2016-06-27 10:07:08 -0700 | [diff] [blame] | 363 | |
| 364 | * A codepath that used alloca(3) to place an unbounded amount of data |
| 365 | on the stack has been updated to avoid doing so. |
Junio C Hamano | cf4c2cf | 2016-06-27 10:07:08 -0700 | [diff] [blame] | 366 | |
| 367 | * "git update-index --add --chmod=+x file" may be usable as an escape |
| 368 | hatch, but not a friendly thing to force for people who do need to |
| 369 | use it regularly. "git add --chmod=+x file" can be used instead. |
Junio C Hamano | cf4c2cf | 2016-06-27 10:07:08 -0700 | [diff] [blame] | 370 | |
| 371 | * Build improvements for gnome-keyring (in contrib/) |
Junio C Hamano | cf4c2cf | 2016-06-27 10:07:08 -0700 | [diff] [blame] | 372 | |
| 373 | * "git status" used to say "working directory" when it meant "working |
| 374 | tree". |
Junio C Hamano | cf4c2cf | 2016-06-27 10:07:08 -0700 | [diff] [blame] | 375 | |
| 376 | * Comments about misbehaving FreeBSD shells have been clarified with |
| 377 | the version number (9.x and before are broken, newer ones are OK). |
Junio C Hamano | cf4c2cf | 2016-06-27 10:07:08 -0700 | [diff] [blame] | 378 | |
| 379 | * "git cherry-pick A" worked on an unborn branch, but "git |
| 380 | cherry-pick A..B" didn't. |
Junio C Hamano | 5c589a7 | 2016-07-06 13:42:58 -0700 | [diff] [blame] | 381 | |
| 382 | * Fix an unintended regression in v2.9 that breaks "clone --depth" |
| 383 | that recurses down to submodules by forcing the submodules to also |
| 384 | be cloned shallowly, which many server instances that host upstream |
| 385 | of the submodules are not prepared for. |
Junio C Hamano | 5c589a7 | 2016-07-06 13:42:58 -0700 | [diff] [blame] | 386 | |
| 387 | * Fix unnecessarily waste in the idiomatic use of ': ${VAR=default}' |
| 388 | to set the default value, without enclosing it in double quotes. |
Junio C Hamano | 5c589a7 | 2016-07-06 13:42:58 -0700 | [diff] [blame] | 389 | |
| 390 | * Some platform-specific code had non-ANSI strict declarations of C |
| 391 | functions that do not take any parameters, which has been |
| 392 | corrected. |
Junio C Hamano | 5c589a7 | 2016-07-06 13:42:58 -0700 | [diff] [blame] | 393 | |
| 394 | * The internal code used to show local timezone offset is not |
| 395 | prepared to handle timestamps beyond year 2100, and gave a |
| 396 | bogus offset value to the caller. Use a more benign looking |
| 397 | +0000 instead and let "git log" going in such a case, instead |
| 398 | of aborting. |
Junio C Hamano | 5c589a7 | 2016-07-06 13:42:58 -0700 | [diff] [blame] | 399 | |
| 400 | * One among four invocations of readlink(1) in our test suite has |
| 401 | been rewritten so that the test can run on systems without the |
| 402 | command (others are in valgrind test framework and t9802). |
Junio C Hamano | 5c589a7 | 2016-07-06 13:42:58 -0700 | [diff] [blame] | 403 | |
| 404 | * t/perf needs /usr/bin/time with GNU extension; the invocation of it |
| 405 | is updated to "gtime" on Darwin. |
Junio C Hamano | 5c589a7 | 2016-07-06 13:42:58 -0700 | [diff] [blame] | 406 | |
| 407 | * A bug, which caused "git p4" while running under verbose mode to |
| 408 | report paths that are omitted due to branch prefix incorrectly, has |
| 409 | been fixed; the command said "Ignoring file outside of prefix" for |
| 410 | paths that are _inside_. |
Junio C Hamano | cf4c2cf | 2016-06-27 10:07:08 -0700 | [diff] [blame] | 411 | |
Junio C Hamano | d0ccc82 | 2016-07-11 10:36:29 -0700 | [diff] [blame] | 412 | * The top level documentation "git help git" still pointed at the |
| 413 | documentation set hosted at now-defunct google-code repository. |
| 414 | Update it to point to https://git.github.io/htmldocs/git.html |
| 415 | instead. |
Junio C Hamano | d0ccc82 | 2016-07-11 10:36:29 -0700 | [diff] [blame] | 416 | |
| 417 | * A helper function that takes the contents of a commit object and |
| 418 | finds its subject line did not ignore leading blank lines, as is |
| 419 | commonly done by other codepaths. Make it ignore leading blank |
| 420 | lines to match. |
Junio C Hamano | d0ccc82 | 2016-07-11 10:36:29 -0700 | [diff] [blame] | 421 | |
| 422 | * For a long time, we carried an in-code comment that said our |
| 423 | colored output would work only when we use fprintf/fputs on |
| 424 | Windows, which no longer is the case for the past few years. |
Junio C Hamano | d0ccc82 | 2016-07-11 10:36:29 -0700 | [diff] [blame] | 425 | |
Junio C Hamano | 79ed43c | 2016-07-13 11:26:49 -0700 | [diff] [blame] | 426 | * "gc.autoPackLimit" when set to 1 should not trigger a repacking |
| 427 | when there is only one pack, but the code counted poorly and did |
| 428 | so. |
Junio C Hamano | 79ed43c | 2016-07-13 11:26:49 -0700 | [diff] [blame] | 429 | |
| 430 | * Add a test to specify the desired behaviour that currently is not |
| 431 | available in "git rebase -Xsubtree=...". |
Junio C Hamano | 79ed43c | 2016-07-13 11:26:49 -0700 | [diff] [blame] | 432 | |
| 433 | * More mark-up updates to typeset strings that are expected to |
| 434 | literally typed by the end user in fixed-width font. |
Junio C Hamano | 79ed43c | 2016-07-13 11:26:49 -0700 | [diff] [blame] | 435 | |
| 436 | * "git commit --amend --allow-empty-message -S" for a commit without |
| 437 | any message body could have misidentified where the header of the |
| 438 | commit object ends. |
Junio C Hamano | 79ed43c | 2016-07-13 11:26:49 -0700 | [diff] [blame] | 439 | |
| 440 | * "git rebase -i --autostash" did not restore the auto-stashed change |
| 441 | when the operation was aborted. |
Junio C Hamano | 79ed43c | 2016-07-13 11:26:49 -0700 | [diff] [blame] | 442 | |
| 443 | * Git does not know what the contents in the index should be for a |
| 444 | path added with "git add -N" yet, so "git grep --cached" should not |
| 445 | show hits (or show lack of hits, with -L) in such a path, but that |
| 446 | logic does not apply to "git grep", i.e. searching in the working |
| 447 | tree files. But we did so by mistake, which has been corrected. |
Junio C Hamano | 79ed43c | 2016-07-13 11:26:49 -0700 | [diff] [blame] | 448 | |
Junio C Hamano | 08bb350 | 2016-07-19 13:26:16 -0700 | [diff] [blame] | 449 | * "git blame -M" missed a single line that was moved within the file. |
Junio C Hamano | 08bb350 | 2016-07-19 13:26:16 -0700 | [diff] [blame] | 450 | |
| 451 | * Fix recently introduced codepaths that are involved in parallel |
| 452 | submodule operations, which gave up on reading too early, and |
| 453 | could have wasted CPU while attempting to write under a corner |
| 454 | case condition. |
Junio C Hamano | 08bb350 | 2016-07-19 13:26:16 -0700 | [diff] [blame] | 455 | |
| 456 | * "git grep -i" has been taught to fold case in non-ascii locales |
| 457 | correctly. |
Junio C Hamano | 08bb350 | 2016-07-19 13:26:16 -0700 | [diff] [blame] | 458 | |
| 459 | * A test that unconditionally used "mktemp" learned that the command |
| 460 | is not necessarily available everywhere. |
Junio C Hamano | 08bb350 | 2016-07-19 13:26:16 -0700 | [diff] [blame] | 461 | |
| 462 | * There are certain house-keeping tasks that need to be performed at |
| 463 | the very beginning of any Git program, and programs that are not |
| 464 | built-in commands had to do them exactly the same way as "git" |
| 465 | potty does. It was easy to make mistakes in one-off standalone |
| 466 | programs (like test helpers). A common "main()" function that |
| 467 | calls cmd_main() of individual program has been introduced to |
| 468 | make it harder to make mistakes. |
| 469 | (merge de61ceb jk/common-main later to maint). |
| 470 | |
| 471 | * The test framework learned a new helper test_match_signal to |
| 472 | check an exit code from getting killed by an expected signal. |
Junio C Hamano | 08bb350 | 2016-07-19 13:26:16 -0700 | [diff] [blame] | 473 | |
| 474 | * General code clean-up around a helper function to write a |
| 475 | single-liner to a file. |
| 476 | (merge 7eb6e10 jk/write-file later to maint). |
| 477 | |
| 478 | * One part of "git am" had an oddball helper function that called |
| 479 | stuff from outside "his" as opposed to calling what we have "ours", |
| 480 | which was not gender-neutral and also inconsistent with the rest of |
| 481 | the system where outside stuff is usuall called "theirs" in |
| 482 | contrast to "ours". |
Junio C Hamano | 08bb350 | 2016-07-19 13:26:16 -0700 | [diff] [blame] | 483 | |
Junio C Hamano | 8c6d1f9 | 2016-07-25 14:17:28 -0700 | [diff] [blame] | 484 | * "git blame file" allowed the lineage of lines in the uncommitted, |
| 485 | unadded contents of "file" to be inspected, but it refused when |
| 486 | "file" did not appear in the current commit. When "file" was |
| 487 | created by renaming an existing file (but the change has not been |
| 488 | committed), this restriction was unnecessarily tight. |
Junio C Hamano | 8c6d1f9 | 2016-07-25 14:17:28 -0700 | [diff] [blame] | 489 | |
| 490 | * "git add -N dir/file && git write-tree" produced an incorrect tree |
| 491 | when there are other paths in the same directory that sorts after |
| 492 | "file". |
Junio C Hamano | 8c6d1f9 | 2016-07-25 14:17:28 -0700 | [diff] [blame] | 493 | |
| 494 | * "git fetch http://user:pass@host/repo..." scrubbed the userinfo |
| 495 | part, but "git push" didn't. |
Junio C Hamano | 8c6d1f9 | 2016-07-25 14:17:28 -0700 | [diff] [blame] | 496 | |
| 497 | * "git merge" with renormalization did not work well with |
| 498 | merge-recursive, due to "safer crlf" conversion kicking in when it |
| 499 | shouldn't. |
| 500 | (merge 1335d76 jc/renormalize-merge-kill-safer-crlf later to maint). |
| 501 | |
| 502 | * The use of strbuf in "git rm" to build filename to remove was a bit |
| 503 | suboptimal, which has been fixed. |
Junio C Hamano | 8c6d1f9 | 2016-07-25 14:17:28 -0700 | [diff] [blame] | 504 | |
| 505 | * An age old bug that caused "git diff --ignore-space-at-eol" |
| 506 | misbehave has been fixed. |
Junio C Hamano | 8c6d1f9 | 2016-07-25 14:17:28 -0700 | [diff] [blame] | 507 | |
Junio C Hamano | 8213178 | 2016-07-28 13:14:53 -0700 | [diff] [blame] | 508 | * "git notes merge" had a code to see if a path exists (and fails if |
| 509 | it does) and then open the path for writing (when it doesn't). |
| 510 | Replace it with open with O_EXCL. |
Junio C Hamano | 8213178 | 2016-07-28 13:14:53 -0700 | [diff] [blame] | 511 | |
| 512 | * "git pack-objects" and "git index-pack" mostly operate with off_t |
| 513 | when talking about the offset of objects in a packfile, but there |
| 514 | were a handful of places that used "unsigned long" to hold that |
| 515 | value, leading to an unintended truncation. |
Junio C Hamano | 8213178 | 2016-07-28 13:14:53 -0700 | [diff] [blame] | 516 | |
| 517 | * Recent update to "git daemon" tries to enable the socket-level |
| 518 | KEEPALIVE, but when it is spawned via inetd, the standard input |
| 519 | file descriptor may not necessarily be connected to a socket. |
| 520 | Suppress an ENOTSOCK error from setsockopt(). |
Junio C Hamano | 8213178 | 2016-07-28 13:14:53 -0700 | [diff] [blame] | 521 | |
| 522 | * Recent FreeBSD stopped making perl available at /usr/bin/perl; |
| 523 | switch the default the built-in path to /usr/local/bin/perl on not |
| 524 | too ancient FreeBSD releases. |
Junio C Hamano | 8213178 | 2016-07-28 13:14:53 -0700 | [diff] [blame] | 525 | |
Junio C Hamano | 80460f5 | 2016-08-03 15:13:16 -0700 | [diff] [blame] | 526 | * "git commit --help" said "--no-verify" is only about skipping the |
| 527 | pre-commit hook, and failed to say that it also skipped the |
| 528 | commit-msg hook. |
Junio C Hamano | 80460f5 | 2016-08-03 15:13:16 -0700 | [diff] [blame] | 529 | |
| 530 | * "git merge" in Git v2.9 was taught to forbid merging an unrelated |
| 531 | lines of history by default, but that is exactly the kind of thing |
| 532 | the "--rejoin" mode of "git subtree" (in contrib/) wants to do. |
| 533 | "git subtree" has been taught to use the "--allow-unrelated-histories" |
| 534 | option to override the default. |
Junio C Hamano | 80460f5 | 2016-08-03 15:13:16 -0700 | [diff] [blame] | 535 | |
| 536 | * The build procedure for "git persistent-https" helper (in contrib/) |
| 537 | has been updated so that it can be built with more recent versions |
| 538 | of Go. |
Junio C Hamano | 80460f5 | 2016-08-03 15:13:16 -0700 | [diff] [blame] | 539 | |
| 540 | * There is an optimization used in "git diff $treeA $treeB" to borrow |
| 541 | an already checked-out copy in the working tree when it is known to |
| 542 | be the same as the blob being compared, expecting that open/mmap of |
| 543 | such a file is faster than reading it from the object store, which |
| 544 | involves inflating and applying delta. This however kicked in even |
| 545 | when the checked-out copy needs to go through the convert-to-git |
| 546 | conversion (including the clean filter), which defeats the whole |
| 547 | point of the optimization. The optimization has been disabled when |
| 548 | the conversion is necessary. |
Junio C Hamano | 80460f5 | 2016-08-03 15:13:16 -0700 | [diff] [blame] | 549 | |
Junio C Hamano | c6b0597 | 2016-08-04 14:40:34 -0700 | [diff] [blame] | 550 | * "git -c grep.patternType=extended log --basic-regexp" misbehaved |
| 551 | because the internal API to access the grep machinery was not |
| 552 | designed well. |
Junio C Hamano | c6b0597 | 2016-08-04 14:40:34 -0700 | [diff] [blame] | 553 | |
Junio C Hamano | 0aaf250 | 2016-08-08 14:52:08 -0700 | [diff] [blame] | 554 | * Windows port was failing some tests in t4130, due to the lack of |
| 555 | inum in the returned values by its lstat(2) emulation. |
Junio C Hamano | 0aaf250 | 2016-08-08 14:52:08 -0700 | [diff] [blame] | 556 | |
| 557 | * The reflog output format is documented better, and a new format |
| 558 | --date=unix to report the seconds-since-epoch (without timezone) |
| 559 | has been added. |
| 560 | (merge 442f6fd jk/reflog-date later to maint). |
| 561 | |
| 562 | * "git difftool <paths>..." started in a subdirectory failed to |
| 563 | interpret the paths relative to that directory, which has been |
| 564 | fixed. |
Junio C Hamano | 0aaf250 | 2016-08-08 14:52:08 -0700 | [diff] [blame] | 565 | |
| 566 | * The characters in the label shown for tags/refs for commits in |
| 567 | "gitweb" output are now properly escaped for proper HTML output. |
Junio C Hamano | 0aaf250 | 2016-08-08 14:52:08 -0700 | [diff] [blame] | 568 | |
| 569 | * FreeBSD can lie when asked mtime of a directory, which made the |
| 570 | untracked cache code to fall back to a slow-path, which in turn |
| 571 | caused tests in t7063 to fail because it wanted to verify the |
| 572 | behaviour of the fast-path. |
Junio C Hamano | 0aaf250 | 2016-08-08 14:52:08 -0700 | [diff] [blame] | 573 | |
Junio C Hamano | 5cb0d5a | 2016-08-25 13:56:51 -0700 | [diff] [blame] | 574 | * Squelch compiler warnings for nedmalloc (in compat/) library. |
Junio C Hamano | 0aaf250 | 2016-08-08 14:52:08 -0700 | [diff] [blame] | 575 | |
| 576 | * A small memory leak in the command line parsing of "git blame" |
| 577 | has been plugged. |
| 578 | |
| 579 | * The API documentation for hashmap was unclear if hashmap_entry |
| 580 | can be safely discarded without any other consideration. State |
| 581 | that it is safe to do so. |
Junio C Hamano | 27b0ea4 | 2016-08-10 12:35:40 -0700 | [diff] [blame] | 582 | |
| 583 | * Not-so-recent rewrite of "git am" that started making internal |
| 584 | calls into the commit machinery had an unintended regression, in |
| 585 | that no matter how many seconds it took to apply many patches, the |
| 586 | resulting committer timestamp for the resulting commits were all |
| 587 | the same. |
Junio C Hamano | 27b0ea4 | 2016-08-10 12:35:40 -0700 | [diff] [blame] | 588 | |
| 589 | * "git push --force-with-lease" already had enough logic to allow |
| 590 | ensuring that such a push results in creation of a ref (i.e. the |
| 591 | receiving end did not have another push from sideways that would be |
| 592 | discarded by our force-pushing), but didn't expose this possibility |
| 593 | to the users. It does so now. |
| 594 | (merge 9eed4f3 jk/push-force-with-lease-creation later to maint). |
Junio C Hamano | 0aaf250 | 2016-08-08 14:52:08 -0700 | [diff] [blame] | 595 | |
Junio C Hamano | 2807cd7 | 2016-08-12 10:01:42 -0700 | [diff] [blame] | 596 | * The mechanism to limit the pack window memory size, when packing is |
| 597 | done using multiple threads (which is the default), is per-thread, |
| 598 | but this was not documented clearly. |
| 599 | (merge 954176c ms/document-pack-window-memory-is-per-thread later to maint). |
| 600 | |
| 601 | * "import-tars" fast-import script (in contrib/) used to ignore a |
| 602 | hardlink target and replaced it with an empty file, which has been |
| 603 | corrected to record the same blob as the other file the hardlink is |
| 604 | shared with. |
| 605 | (merge 04e0869 js/import-tars-hardlinks later to maint). |
| 606 | |
| 607 | * "git mv dir non-existing-dir/" did not work in some environments |
| 608 | the same way as existing mainstream platforms. The code now moves |
| 609 | "dir" to "non-existing-dir", without relying on rename("A", "B/") |
| 610 | that strips the trailing slash of '/'. |
| 611 | (merge 189d035 js/mv-dir-to-new-directory later to maint). |
| 612 | |
Junio C Hamano | d63263a | 2016-08-17 14:09:17 -0700 | [diff] [blame] | 613 | * The "t/" hierarchy is prone to get an unusual pathname; "make test" |
| 614 | has been taught to make sure they do not contain paths that cannot |
| 615 | be checked out on Windows (and the mechanism can be reusable to |
| 616 | catch pathnames that are not portable to other platforms as need |
| 617 | arises). |
| 618 | (merge c2cafd3 js/test-lint-pathname later to maint). |
| 619 | |
Junio C Hamano | 2632c89 | 2016-08-19 15:39:33 -0700 | [diff] [blame] | 620 | * When "git merge-recursive" works on history with many criss-cross |
| 621 | merges in "verbose" mode, the names the command assigns to the |
| 622 | virtual merge bases could have overwritten each other by unintended |
| 623 | reuse of the same piece of memory. |
| 624 | (merge 5447a76 rs/pull-signed-tag later to maint). |
| 625 | |
| 626 | * "git checkout --detach <branch>" used to give the same advice |
| 627 | message as that is issued when "git checkout <tag>" (or anything |
| 628 | that is not a branch name) is given, but asking with "--detach" is |
| 629 | an explicit enough sign that the user knows what is going on. The |
| 630 | advice message has been squelched in this case. |
| 631 | (merge 779b88a sb/checkout-explit-detach-no-advice later to maint). |
| 632 | |
| 633 | * "git difftool" by default ignores the error exit from the backend |
| 634 | commands it spawns, because often they signal that they found |
| 635 | differences by exiting with a non-zero status code just like "diff" |
| 636 | does; the exit status codes 126 and above however are special in |
| 637 | that they are used to signal that the command is not executable, |
| 638 | does not exist, or killed by a signal. "git difftool" has been |
| 639 | taught to notice these exit status codes. |
| 640 | (merge 45a4f5d jk/difftool-command-not-found later to maint). |
| 641 | |
Junio C Hamano | 5cb0d5a | 2016-08-25 13:56:51 -0700 | [diff] [blame] | 642 | * On Windows, help.browser configuration variable used to be ignored, |
| 643 | which has been corrected. |
| 644 | (merge 6db5967 js/no-html-bypass-on-windows later to maint). |
| 645 | |
| 646 | * The "git -c var[=val] cmd" facility to append a configuration |
| 647 | variable definition at the end of the search order was described in |
| 648 | git(1) manual page, but not in git-config(1), which was more likely |
| 649 | place for people to look for when they ask "can I make a one-shot |
| 650 | override, and if so how?" |
| 651 | (merge ae1f709 dg/document-git-c-in-git-config-doc later to maint). |
| 652 | |
| 653 | * The tempfile (hence its user lockfile) API lets the caller to open |
| 654 | a file descriptor to a temporary file, write into it and then |
| 655 | finalize it by first closing the filehandle and then either |
| 656 | removing or renaming the temporary file. When the process spawns a |
| 657 | subprocess after obtaining the file descriptor, and if the |
| 658 | subprocess has not exited when the attempt to remove or rename is |
| 659 | made, the last step fails on Windows, because the subprocess has |
| 660 | the file descriptor still open. Open tempfile with O_CLOEXEC flag |
| 661 | to avoid this (on Windows, this is mapped to O_NOINHERIT). |
| 662 | (merge 05d1ed6 bw/mingw-avoid-inheriting-fd-to-lockfile later to maint). |
| 663 | |
Junio C Hamano | 5b18e70 | 2016-08-31 10:21:05 -0700 | [diff] [blame] | 664 | * Correct an age-old calco (is that a typo-like word for calc) |
| 665 | in the documentation. |
| 666 | (merge 7841c48 ls/packet-line-protocol-doc-fix later to maint). |
| 667 | |
Junio C Hamano | ab7797d | 2016-06-20 11:06:49 -0700 | [diff] [blame] | 668 | * Other minor clean-ups and documentation updates |
Junio C Hamano | 2807cd7 | 2016-08-12 10:01:42 -0700 | [diff] [blame] | 669 | (merge 02a8cfa rs/merge-add-strategies-simplification later to maint). |
| 670 | (merge af4941d rs/merge-recursive-string-list-init later to maint). |
| 671 | (merge 1eb47f1 rs/use-strbuf-add-unique-abbrev later to maint). |
Junio C Hamano | d63263a | 2016-08-17 14:09:17 -0700 | [diff] [blame] | 672 | (merge ddd0bfa jk/tighten-alloc later to maint). |
| 673 | (merge ecf30b2 rs/mailinfo-lib later to maint). |
| 674 | (merge 0eb75ce sg/reflog-past-root later to maint). |
Junio C Hamano | 5b18e70 | 2016-08-31 10:21:05 -0700 | [diff] [blame] | 675 | (merge 4369523 hv/doc-commit-reference-style later to maint). |