"Fossies" - the Fresh Open Source Software Archive

Member "RelNotes/2.17.0.txt" (15 Dec 2018, 17883 Bytes) of package /linux/misc/git-htmldocs-2.20.1.tar.xz:


As a special service "Fossies" has tried to format the requested text file into HTML format (style: standard) with prefixed line numbers. Alternatively you can here view or download the uninterpreted source code file.

    1 Git 2.17 Release Notes
    2 ======================
    3 
    4 Updates since v2.16
    5 -------------------
    6 
    7 UI, Workflows & Features
    8 
    9  * "diff" family of commands learned "--find-object=<object-id>" option
   10    to limit the findings to changes that involve the named object.
   11 
   12  * "git format-patch" learned to give 72-cols to diffstat, which is
   13    consistent with other line length limits the subcommand uses for
   14    its output meant for e-mails.
   15 
   16  * The log from "git daemon" can be redirected with a new option; one
   17    relevant use case is to send the log to standard error (instead of
   18    syslog) when running it from inetd.
   19 
   20  * "git rebase" learned to take "--allow-empty-message" option.
   21 
   22  * "git am" has learned the "--quit" option, in addition to the
   23    existing "--abort" option; having the pair mirrors a few other
   24    commands like "rebase" and "cherry-pick".
   25 
   26  * "git worktree add" learned to run the post-checkout hook, just like
   27    "git clone" runs it upon the initial checkout.
   28 
   29  * "git tag" learned an explicit "--edit" option that allows the
   30    message given via "-m" and "-F" to be further edited.
   31 
   32  * "git fetch --prune-tags" may be used as a handy short-hand for
   33    getting rid of stale tags that are locally held.
   34 
   35  * The new "--show-current-patch" option gives an end-user facing way
   36    to get the diff being applied when "git rebase" (and "git am")
   37    stops with a conflict.
   38 
   39  * "git add -p" used to offer "/" (look for a matching hunk) as a
   40    choice, even there was only one hunk, which has been corrected.
   41    Also the single-key help is now given only for keys that are
   42    enabled (e.g. help for '/' won't be shown when there is only one
   43    hunk).
   44 
   45  * Since Git 1.7.9, "git merge" defaulted to --no-ff (i.e. even when
   46    the side branch being merged is a descendant of the current commit,
   47    create a merge commit instead of fast-forwarding) when merging a
   48    tag object.  This was appropriate default for integrators who pull
   49    signed tags from their downstream contributors, but caused an
   50    unnecessary merges when used by downstream contributors who
   51    habitually "catch up" their topic branches with tagged releases
   52    from the upstream.  Update "git merge" to default to --no-ff only
   53    when merging a tag object that does *not* sit at its usual place in
   54    refs/tags/ hierarchy, and allow fast-forwarding otherwise, to
   55    mitigate the problem.
   56 
   57  * "git status" can spend a lot of cycles to compute the relation
   58    between the current branch and its upstream, which can now be
   59    disabled with "--no-ahead-behind" option.
   60 
   61  * "git diff" and friends learned funcname patterns for Go language
   62    source files.
   63 
   64  * "git send-email" learned "--reply-to=<address>" option.
   65 
   66  * Funcname pattern used for C# now recognizes "async" keyword.
   67 
   68  * In a way similar to how "git tag" learned to honor the pager
   69    setting only in the list mode, "git config" learned to ignore the
   70    pager setting when it is used for setting values (i.e. when the
   71    purpose of the operation is not to "show").
   72 
   73 
   74 Performance, Internal Implementation, Development Support etc.
   75 
   76  * More perf tests for threaded grep
   77 
   78  * "perf" test output can be sent to codespeed server.
   79 
   80  * The build procedure for perl/ part has been greatly simplified by
   81    weaning ourselves off of MakeMaker.
   82 
   83  * Perl 5.8 or greater has been required since Git 1.7.4 released in
   84    2010, but we continued to assume some core modules may not exist and
   85    used a conditional "eval { require <<module>> }"; we no longer do
   86    this.  Some platforms (Fedora/RedHat/CentOS, for example) ship Perl
   87    without all core modules by default (e.g. Digest::MD5, File::Temp,
   88    File::Spec, Net::Domain, Net::SMTP).  Users on such platforms may
   89    need to install these additional modules.
   90 
   91  * As a convenience, we install copies of Perl modules we require which
   92    are not part of the core Perl distribution (e.g. Error and
   93    Mail::Address).  Users and packagers whose operating system provides
   94    these modules can set NO_PERL_CPAN_FALLBACKS to avoid installing the
   95    bundled modules.
   96 
   97  * In preparation for implementing narrow/partial clone, the machinery
   98    for checking object connectivity used by gc and fsck has been
   99    taught that a missing object is OK when it is referenced by a
  100    packfile specially marked as coming from trusted repository that
  101    promises to make them available on-demand and lazily.
  102 
  103  * The machinery to clone & fetch, which in turn involves packing and
  104    unpacking objects, has been told how to omit certain objects using
  105    the filtering mechanism introduced by another topic.  It now knows
  106    to mark the resulting pack as a promisor pack to tolerate missing
  107    objects, laying foundation for "narrow" clones.
  108 
  109  * The first step to getting rid of mru API and using the
  110    doubly-linked list API directly instead.
  111 
  112  * Retire mru API as it does not give enough abstraction over
  113    underlying list API to be worth it.
  114 
  115  * Rewrite two more "git submodule" subcommands in C.
  116 
  117  * The tracing machinery learned to report tweaking of environment
  118    variables as well.
  119 
  120  * Update Coccinelle rules to catch and optimize strbuf_addf(&buf, "%s", str)
  121 
  122  * Prevent "clang-format" from breaking line after function return type.
  123 
  124  * The sequencer infrastructure is shared across "git cherry-pick",
  125    "git rebase -i", etc., and has always spawned "git commit" when it
  126    needs to create a commit.  It has been taught to do so internally,
  127    when able, by reusing the codepath "git commit" itself uses, which
  128    gives performance boost for a few tens of percents in some sample
  129    scenarios.
  130 
  131  * Push the submodule version of collision-detecting SHA-1 hash
  132    implementation a bit harder on builders.
  133 
  134  * Avoid mmapping small files while using packed refs (especially ones
  135    with zero size, which would cause later munmap() to fail).
  136 
  137  * Conversion from uchar[20] to struct object_id continues.
  138 
  139  * More tests for wildmatch functions.
  140 
  141  * The code to binary search starting from a fan-out table (which is
  142    how the packfile is indexed with object names) has been refactored
  143    into a reusable helper.
  144 
  145  * We now avoid using identifiers that clash with C++ keywords.  Even
  146    though it is not a goal to compile Git with C++ compilers, changes
  147    like this help use of code analysis tools that targets C++ on our
  148    codebase.
  149 
  150  * The executable is now built in 'script' phase in Travis CI integration,
  151    to follow the established practice, rather than during 'before_script'
  152    phase.  This allows the CI categorize the failures better ('failed'
  153    is project's fault, 'errored' is build environment's).
  154    (merge 3c93b82920 sg/travis-build-during-script-phase later to maint).
  155 
  156  * Writing out the index file when the only thing that changed in it
  157    is the untracked cache information is often wasteful, and this has
  158    been optimized out.
  159 
  160  * Various pieces of Perl code we have have been cleaned up.
  161 
  162  * Internal API clean-up to allow write_locked_index() optionally skip
  163    writing the in-core index when it is not modified.
  164 
  165 
  166 Also contains various documentation updates and code clean-ups.
  167 
  168 
  169 Fixes since v2.16
  170 -----------------
  171 
  172  * An old regression in "git describe --all $annotated_tag^0" has been
  173    fixed.
  174 
  175  * "git status" after moving a path in the working tree (hence making
  176    it appear "removed") and then adding with the -N option (hence
  177    making that appear "added") detected it as a rename, but did not
  178    report the  old and new pathnames correctly.
  179 
  180  * "git svn dcommit" did not take into account the fact that a
  181    svn+ssh:// URL with a username@ (typically used for pushing) refers
  182    to the same SVN repository without the username@ and failed when
  183    svn.pushmergeinfo option is set.
  184 
  185  * API clean-up around revision traversal.
  186 
  187  * "git merge -Xours/-Xtheirs" learned to use our/their version when
  188    resolving a conflicting updates to a symbolic link.
  189 
  190  * "git clone $there $here" is allowed even when here directory exists
  191    as long as it is an empty directory, but the command incorrectly
  192    removed it upon a failure of the operation.
  193 
  194  * "git commit --fixup" did not allow "-m<message>" option to be used
  195    at the same time; allow it to annotate resulting commit with more
  196    text.
  197 
  198  * When resetting the working tree files recursively, the working tree
  199    of submodules are now also reset to match.
  200 
  201  * "git stash -- <pathspec>" incorrectly blew away untracked files in
  202    the directory that matched the pathspec, which has been corrected.
  203 
  204  * Instead of maintaining home-grown email address parsing code, ship
  205    a copy of reasonably recent Mail::Address to be used as a fallback
  206    in 'git send-email' when the platform lacks it.
  207    (merge d60be8acab mm/send-email-fallback-to-local-mail-address later to maint).
  208 
  209  * "git add -p" was taught to ignore local changes to submodules as
  210    they do not interfere with the partial addition of regular changes
  211    anyway.
  212 
  213  * Avoid showing a warning message in the middle of a line of "git
  214    diff" output.
  215    (merge 4e056c989f nd/diff-flush-before-warning later to maint).
  216 
  217  * The http tracing code, often used to debug connection issues,
  218    learned to redact potentially sensitive information from its output
  219    so that it can be more safely sharable.
  220    (merge 8ba18e6fa4 jt/http-redact-cookies later to maint).
  221 
  222  * Crash fix for a corner case where an error codepath tried to unlock
  223    what it did not acquire lock on.
  224    (merge 81fcb698e0 mr/packed-ref-store-fix later to maint).
  225 
  226  * The split-index mode had a few corner case bugs fixed.
  227    (merge ae59a4e44f tg/split-index-fixes later to maint).
  228 
  229  * Assorted fixes to "git daemon".
  230    (merge ed15e58efe jk/daemon-fixes later to maint).
  231 
  232  * Completion of "git merge -s<strategy>" (in contrib/) did not work
  233    well in non-C locale.
  234    (merge 7cc763aaa3 nd/list-merge-strategy later to maint).
  235 
  236  * Workaround for segfault with more recent versions of SVN.
  237    (merge 7f6f75e97a ew/svn-branch-segfault-fix later to maint).
  238 
  239  * Plug recently introduced leaks in fsck.
  240    (merge ba3a08ca0e jt/fsck-code-cleanup later to maint).
  241 
  242  * "git pull --rebase" did not pass verbosity setting down when
  243    recursing into a submodule.
  244    (merge a56771a668 sb/pull-rebase-submodule later to maint).
  245 
  246  * The way "git reset --hard" reports the commit the updated HEAD
  247    points at is made consistent with the way how the commit title is
  248    generated by the other parts of the system.  This matters when the
  249    title is spread across physically multiple lines.
  250    (merge 1cf823fb68 tg/reset-hard-show-head-with-pretty later to maint).
  251 
  252  * Test fixes.
  253    (merge 63b1a175ee sg/test-i18ngrep later to maint).
  254 
  255  * Some bugs around "untracked cache" feature have been fixed.  This
  256    will notice corrupt data in the untracked cache left by old and
  257    buggy code and issue a warning---the index can be fixed by clearing
  258    the untracked cache from it.
  259    (merge 0cacebf099 nd/fix-untracked-cache-invalidation later to maint).
  260    (merge 7bf0be7501 ab/untracked-cache-invalidation-docs later to maint).
  261 
  262  * "git blame HEAD COPYING" in a bare repository failed to run, while
  263    "git blame HEAD -- COPYING" run just fine.  This has been corrected.
  264 
  265  * "git add" files in the same directory, but spelling the directory
  266    path in different cases on case insensitive filesystem, corrupted
  267    the name hash data structure and led to unexpected results.  This
  268    has been corrected.
  269    (merge c95525e90d bp/name-hash-dirname-fix later to maint).
  270 
  271  * "git rebase -p" mangled log messages of a merge commit, which is
  272    now fixed.
  273    (merge ed5144d7eb js/fix-merge-arg-quoting-in-rebase-p later to maint).
  274 
  275  * Some low level protocol codepath could crash when they get an
  276    unexpected flush packet, which is now fixed.
  277    (merge bb1356dc64 js/packet-read-line-check-null later to maint).
  278 
  279  * "git check-ignore" with multiple paths got confused when one is a
  280    file and the other is a directory, which has been fixed.
  281    (merge d60771e930 rs/check-ignore-multi later to maint).
  282 
  283  * "git describe $garbage" stopped giving any errors when the garbage
  284    happens to be a string with 40 hexadecimal letters.
  285    (merge a8e7a2bf0f sb/describe-blob later to maint).
  286 
  287  * Code to unquote single-quoted string (used in the parser for
  288    configuration files, etc.) did not diagnose bogus input correctly
  289    and produced bogus results instead.
  290    (merge ddbbf8eb25 jk/sq-dequote-on-bogus-input later to maint).
  291 
  292  * Many places in "git apply" knew that "/dev/null" that signals
  293    "there is no such file on this side of the diff" can be followed by
  294    whitespace and garbage when parsing a patch, except for one, which
  295    made an otherwise valid patch (e.g. ones from subversion) rejected.
  296    (merge e454ad4bec tk/apply-dev-null-verify-name-fix later to maint).
  297 
  298  * We no longer create any *.spec file, so "make clean" should not
  299    remove it.
  300    (merge 4321bdcabb tz/do-not-clean-spec-file later to maint).
  301 
  302  * "git push" over http transport did not unquote the push-options
  303    correctly.
  304    (merge 90dce21eb0 jk/push-options-via-transport-fix later to maint).
  305 
  306  * "git send-email" learned to complain when the batch-size option is
  307    not defined when the relogin-delay option is, since these two are
  308    mutually required.
  309    (merge 9caa70697b xz/send-email-batch-size later to maint).
  310 
  311  * Y2k20 fix ;-) for our perl scripts.
  312    (merge a40e06ee33 bw/perl-timegm-timelocal-fix later to maint).
  313 
  314  * Threaded "git grep" has been optimized to avoid allocation in code
  315    section that is covered under a mutex.
  316    (merge 38ef24dccf rv/grep-cleanup later to maint).
  317 
  318  * "git subtree" script (in contrib/) scripted around "git log", whose
  319    output got affected by end-user configuration like log.showsignature
  320    (merge 8841b5222c sg/subtree-signed-commits later to maint).
  321 
  322  * While finding unique object name abbreviation, the code may
  323    accidentally have read beyond the end of the array of object names
  324    in a pack.
  325    (merge 21abed500c ds/find-unique-abbrev-optim later to maint).
  326 
  327  * Micro optimization in revision traversal code.
  328    (merge ebbed3ba04 ds/mark-parents-uninteresting-optim later to maint).
  329 
  330  * "git commit" used to run "gc --auto" near the end, which was lost
  331    when the command was reimplemented in C by mistake.
  332    (merge 095c741edd ab/gc-auto-in-commit later to maint).
  333 
  334  * Allow running a couple of tests with "sh -x".
  335    (merge c20bf94abc sg/cvs-tests-with-x later to maint).
  336 
  337  * The codepath to replace an existing entry in the index had a bug in
  338    updating the name hash structure, which has been fixed.
  339    (merge 0e267b7a24 bp/refresh-cache-ent-rehash-fix later to maint).
  340 
  341  * The transfer.fsckobjects configuration tells "git fetch" to
  342    validate the data and connected-ness of objects in the received
  343    pack; the code to perform this check has been taught about the
  344    narrow clone's convention that missing objects that are reachable
  345    from objects in a pack that came from a promisor remote is OK.
  346 
  347  * There was an unused file-scope static variable left in http.c when
  348    building for versions of libCURL that is older than 7.19.4, which
  349    has been fixed.
  350    (merge b8fd6008ec rj/http-code-cleanup later to maint).
  351 
  352  * Shell script portability fix.
  353    (merge 206a6ae013 ml/filter-branch-portability-fix later to maint).
  354 
  355  * Other minor doc, test and build updates and code cleanups.
  356    (merge e2a5a028c7 bw/oidmap-autoinit later to maint).
  357    (merge ec3b4b06f8 cl/t9001-cleanup later to maint).
  358    (merge e1b3f3dd38 ks/submodule-doc-updates later to maint).
  359    (merge fbac558a9b rs/describe-unique-abbrev later to maint).
  360    (merge 8462ff43e4 tb/crlf-conv-flags later to maint).
  361    (merge 7d68bb0766 rb/hashmap-h-compilation-fix later to maint).
  362    (merge 3449847168 cc/sha1-file-name later to maint).
  363    (merge ad622a256f ds/use-get-be64 later to maint).
  364    (merge f919ffebed sg/cocci-move-array later to maint).
  365    (merge 4e801463c7 jc/mailinfo-cleanup-fix later to maint).
  366    (merge ef5b3a6c5e nd/shared-index-fix later to maint).
  367    (merge 9f5258cbb8 tz/doc-show-defaults-to-head later to maint).
  368    (merge b780e4407d jc/worktree-add-short-help later to maint).
  369    (merge ae239fc8e5 rs/cocci-strbuf-addf-to-addstr later to maint).
  370    (merge 2e22a85e5c nd/ignore-glob-doc-update later to maint).
  371    (merge 3738031581 jk/gettext-poison later to maint).
  372    (merge 54360a1956 rj/sparse-updates later to maint).
  373    (merge 12e31a6b12 sg/doc-test-must-fail-args later to maint).
  374    (merge 760f1ad101 bc/doc-interpret-trailers-grammofix later to maint).
  375    (merge 4ccf461f56 bp/fsmonitor later to maint).
  376    (merge a6119f82b1 jk/test-hashmap-updates later to maint).
  377    (merge 5aea9fe6cc rd/typofix later to maint).
  378    (merge e4e5da2796 sb/status-doc-fix later to maint).
  379    (merge 7976e901c8 gs/test-unset-xdg-cache-home later to maint).
  380    (merge d023df1ee6 tg/worktree-create-tracking later to maint).
  381    (merge 4cbe92fd41 sm/mv-dry-run-update later to maint).
  382    (merge 75e5e9c3f7 sb/color-h-cleanup later to maint).
  383    (merge 2708ef4af6 sg/t6300-modernize later to maint).
  384    (merge d88e92d4e0 bw/doc-submodule-recurse-config-with-clone later to maint).
  385    (merge f74bbc8dd2 jk/cached-commit-buffer later to maint).
  386    (merge 1316416903 ms/non-ascii-ticks later to maint).
  387    (merge 878056005e rs/strbuf-read-file-or-whine later to maint).
  388    (merge 79f0ba1547 jk/strbuf-read-file-close-error later to maint).
  389    (merge edfb8ba068 ot/ref-filter-cleanup later to maint).
  390    (merge 11395a3b4b jc/test-must-be-empty later to maint).
  391    (merge 768b9d6db7 mk/doc-pretty-fill later to maint).
  392    (merge 2caa7b8d27 ab/man-sec-list later to maint).
  393    (merge 40c17eb184 ks/t3200-typofix later to maint).
  394    (merge bd9958c358 dp/merge-strategy-doc-fix later to maint).
  395    (merge 9ee0540a40 js/ming-strftime later to maint).
  396    (merge 1775e990f7 tz/complete-tag-delete-tagname later to maint).
  397    (merge 00a4b03501 rj/warning-uninitialized-fix later to maint).
  398    (merge b635ed97a0 jk/attributes-path-doc later to maint).