Documentation / RelNotes / 2.19.0.txton commit t3404: todo list with commented-out commands only aborts (d078c39)
   1Git 2.19 Release Notes
   2======================
   3
   4Updates since v2.18
   5-------------------
   6
   7UI, Workflows & Features
   8
   9 * "git diff" compares the index and the working tree.  For paths
  10   added with intent-to-add bit, the command shows the full contents
  11   of them as added, but the paths themselves were not marked as new
  12   files.  They are now shown as new by default.
  13
  14   "git apply" learned the "--intent-to-add" option so that an
  15   otherwise working-tree-only application of a patch will add new
  16   paths to the index marked with the "intent-to-add" bit.
  17
  18 * "git grep" learned the "--column" option that gives not just the
  19   line number but the column number of the hit.
  20
  21 * The "-l" option in "git branch -l" is an unfortunate short-hand for
  22   "--create-reflog", but many users, both old and new, somehow expect
  23   it to be something else, perhaps "--list".  This step warns when "-l"
  24   is used as a short-hand for "--create-reflog" and warns about the
  25   future repurposing of the it when it is used.
  26
  27
  28Performance, Internal Implementation, Development Support etc.
  29
  30 * The bulk of "git submodule foreach" has been rewritten in C.
  31
  32 * The in-core "commit" object had an all-purpose "void *util" field,
  33   which was tricky to use especially in library-ish part of the
  34   code.  All of the existing uses of the field has been migrated to a
  35   more dedicated "commit-slab" mechanism and the field is eliminated.
  36
  37 * A less often used command "git show-index" has been modernized.
  38   (merge fb3010c31f jk/show-index later to maint).
  39
  40 * The conversion to pass "the_repository" and then "a_repository"
  41   throughout the object access API continues.
  42
  43 * Continuing with the idea to programatically enumerate various
  44   pieces of data required for command line completion, teach the
  45   codebase to report the list of configuration variables
  46   subcommands care about to help complete them.
  47
  48 * Separate "rebase -p" codepath out of "rebase -i" implementation to
  49   slim down the latter and make it easier to manage.
  50
  51 * Make refspec parsing codepath more robust.
  52
  53 * Some flaky tests have been fixed.
  54
  55 * Continuing with the idea to programmatically enumerate various
  56   pieces of data required for command line completion, the codebase
  57   has been taught to enumerate options prefixed with "--no-" to
  58   negate them.
  59
  60 * Build and test procedure for netrc credential helper (in contrib/)
  61   has been updated.
  62
  63 * The conversion to pass "the_repository" and then "a_repository"
  64   throughout the object access API continues.
  65
  66 * Remove unused function definitions and declarations from ewah
  67   bitmap subsystem.
  68
  69 * Code preparation to make "git p4" closer to be usable with Python 3.
  70
  71 * Tighten the API to make it harder to misuse in-tree .gitmodules
  72   file, even though it shares the same syntax with configuration
  73   files, to read random configuration items from it.
  74
  75
  76Fixes since v2.18
  77-----------------
  78
  79 * "git remote update" can take both a single remote nickname and a
  80   nickname for remote groups, and the completion script (in contrib/)
  81   has been taught about it.
  82   (merge 9cd4382ad5 ls/complete-remote-update-names later to maint).
  83
  84 * "git fetch --shallow-since=<cutoff>" that specifies the cut-off
  85   point that is newer than the existing history used to end up
  86   grabbing the entire history.  Such a request now errors out.
  87   (merge e34de73c56 nd/reject-empty-shallow-request later to maint).
  88
  89 * Fix for 2.17-era regression around `core.safecrlf`.
  90   (merge 6cb09125be as/safecrlf-quiet-fix later to maint).
  91
  92 * The recent addition of "partial clone" experimental feature kicked
  93   in when it shouldn't, namely, when there is no partial-clone filter
  94   defined even if extensions.partialclone is set.
  95   (merge cac1137dc4 jh/partial-clone later to maint).
  96
  97 * "git send-pack --signed" (hence "git push --signed" over the http
  98   transport) did not read user ident from the config mechanism to
  99   determine whom to sign the push certificate as, which has been
 100   corrected.
 101   (merge d067d98887 ms/send-pack-honor-config later to maint).
 102
 103 * "git fetch-pack --all" used to unnecessarily fail upon seeing an
 104   annotated tag that points at an object other than a commit.
 105   (merge c12c9df527 jk/fetch-all-peeled-fix later to maint).
 106
 107 * When user edits the patch in "git add -p" and the user's editor is
 108   set to strip trailing whitespaces indiscriminately, an empty line
 109   that is unchanged in the patch would become completely empty
 110   (instead of a line with a sole SP on it).  The code introduced in
 111   Git 2.17 timeframe failed to parse such a patch, but now it learned
 112   to notice the situation and cope with it.
 113   (merge f4d35a6b49 pw/add-p-recount later to maint).
 114
 115 * The code to try seeing if a fetch is necessary in a submodule
 116   during a fetch with --recurse-submodules got confused when the path
 117   to the submodule was changed in the range of commits in the
 118   superproject, sometimes showing "(null)".  This has been corrected.
 119
 120 * "git submodule" did not correctly adjust core.worktree setting that
 121   indicates whether/where a submodule repository has its associated
 122   working tree across various state transitions, which has been
 123   corrected.
 124   (merge 984cd77ddb sb/submodule-core-worktree later to maint).
 125
 126 * Bugfix for "rebase -i" corner case regression.
 127   (merge a9279c6785 pw/rebase-i-keep-reword-after-conflict later to maint).
 128
 129 * Recently added "--base" option to "git format-patch" command did
 130   not correctly generate prereq patch ids.
 131   (merge 15b76c1fb3 xy/format-patch-prereq-patch-id-fix later to maint).
 132
 133 * POSIX portability fix in Makefile to fix a glitch introduced a few
 134   releases ago.
 135   (merge 6600054e9b dj/runtime-prefix later to maint).
 136
 137 * "git filter-branch" when used with the "--state-branch" option
 138   still attempted to rewrite the commits whose filtered result is
 139   known from the previous attempt (which is recorded on the state
 140   branch); the command has been corrected not to waste cycles doing
 141   so.
 142   (merge 709cfe848a mb/filter-branch-optim later to maint).
 143
 144 * Clarify that setting core.ignoreCase to deviate from reality would
 145   not turn a case-incapable filesystem into a case-capable one.
 146   (merge 48294b512a ms/core-icase-doc later to maint).
 147
 148 * Code cleanup, docfix, build fix, etc.
 149   (merge aee9be2ebe sg/update-ref-stdin-cleanup later to maint).
 150   (merge 037714252f jc/clean-after-sanity-tests later to maint).
 151   (merge 5b26c3c941 en/merge-recursive-cleanup later to maint).
 152   (merge 0dcbc0392e bw/config-refer-to-gitsubmodules-doc later to maint).
 153   (merge bb4d000e87 bw/protocol-v2 later to maint).
 154   (merge 928f0ab4ba vs/typofixes later to maint).
 155   (merge d7f590be84 en/rebase-i-microfixes later to maint).
 156   (merge 81d395cc85 js/rebase-recreate-merge later to maint).
 157   (merge 51d1863168 tz/exclude-doc-smallfixes later to maint).
 158   (merge a9aa3c0927 ds/commit-graph later to maint).
 159   (merge 5cf8e06474 js/enhanced-version-info later to maint).