{"thread":{"id":"37221","subject":"[ANNOUNCE] Git v2.1.0-rc0","startedAt":"2014-07-27T23:18:27Z","lastAt":"2014-07-27T23:18:27Z","messageCount":1,"participants":["Junio C Hamano"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"246763","messageId":"xmqq38dm5r24.fsf@gitster.dls.corp.google.com","threadId":"37221","inReplyTo":null,"subject":"[ANNOUNCE] Git v2.1.0-rc0","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2014-07-27T23:18:27Z","receivedAt":"2014-07-27T23:18:27Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"An early preview release Git v2.1.0-rc0 is now available for testing\nat the usual places.\n\nThe tarballs are found at:\n\n    https://www.kernel.org/pub/software/scm/git/testing/\n\nThe following public repositories all have a copy of the 'v2.1.0-rc0'\ntag and the 'master' branch that the tag points at:\n\n  url = https://kernel.googlesource.com/pub/scm/git/git\n  url = git://repo.or.cz/alt-git.git\n  url = https://code.google.com/p/git-core/\n  url = git://git.sourceforge.jp/gitroot/git-core/git.git\n  url = git://git-core.git.sourceforge.net/gitroot/git-core/git-core\n  url = https://github.com/gitster/git\n\nGit v2.1 Release Notes (draft)\n==============================\n\nBackward compatibility notes\n----------------------------\n\n * The default value we give to the environment variable LESS has been\n   changed from \"FRSX\" to \"FRX\", losing \"S\" (chop long lines instead\n   of wrapping).  Existing users who prefer not to see line-wrapped\n   output may want to set\n\n     $ git config core.pager \"less -S\"\n\n   to restore the traditional behaviour.  It is expected that people\n   find output from the most subcommands easier to read with the new\n   default, except for \"blame\" which tends to produce really long\n   lines.  To override the new default only for \"git blame\", you can\n   do this:\n\n     $ git config pager.blame \"less -S\"\n\n * A few disused directories in contrib/ have been retired.\n\n\nUpdates since v2.0\n------------------\n\nUI, Workflows & Features\n\n * Since the very beginning of Git, we gave the LESS environment a\n   default value \"FRSX\" when we spawn \"less\" as the pager.  \"S\" (chop\n   long lines instead of wrapping) has been removed from this default\n   set of options, because it is more or less a personal taste thing,\n   as opposed to others that have good justifications (i.e. \"R\" is\n   very much justified because many kinds of output we produce are\n   colored and \"FX\" is justified because output we produce is often\n   shorter than a page).\n\n * The logic and data used to compute the display width needed for\n   UTF-8 strings have been updated to match Unicode 7.0 better.\n\n * HTTP-based transports learned to propagate the error messages from\n   the webserver better to the client coming over the HTTP transport.\n\n * The completion script for bash (in contrib/) has been updated to\n   handle aliases that define complex sequence of commands better.\n\n * The \"core.preloadindex\" configuration variable is by default\n   enabled, allowing modern platforms to take advantage of the\n   multiple cores they have.\n\n * \"git clone\" applies the \"if cloning from a local disk, physically\n   copy repository using hardlinks, unless otherwise told not to with\n   --no-local\" optimization when url.*.insteadOf mechanism rewrites a\n   \"git clone $URL\" that refers to a repository over the network to a\n   clone from a local disk.\n\n * \"git commit --date=<date>\" option learned to read from more\n   timestamp formats, including \"--date=now\".\n\n * The `core.commentChar` configuration variable is used to specify a\n   custom comment character other than the default \"#\" to be used in\n   the commit log editor.  This can be set to `auto` to attempt to\n   choose a different character that does not conflict with what\n   already starts a line in the message being edited for cases like\n   \"git commit --amend\".\n\n * \"git format-patch\" learned --signature-file=<file> to take the mail\n   signature from.\n\n * \"git grep\" learned grep.fullname configuration variable to force\n   \"--full-name\" to be default.  This may cause regressions on\n   scripted users that do not expect this new behaviour.\n\n * \"git imap-send\" learned to ask the credential helper for auth\n   material.\n\n * \"git log\" and friends now understand the value \"auto\" set to the\n   \"log.decorate\" configuration variable to enable the \"--decorate\"\n   option automatically when the output is sent to tty.\n\n * \"git merge\" without argument, even when there is an upstream\n   defined for the current branch, refused to run until\n   merge.defaultToUpstream is set to true.  Flip the default of that\n   configuration variable to true.\n\n * \"git mergetool\" learned to drive the vimdiff3 backend.\n\n * mergetool.prompt used to default to 'true', always asking \"do you\n   really want to run the tool on this path?\".  Among the two\n   purposes this prompt serves, ignore the use case to confirm that\n   the user wants to view particular path with the named tool, and\n   redefine the meaning of the prompt only to confirm the choice of\n   the tool made by the autodetection (for those who configured the\n   tool explicitly, the prompt shown for the latter purpose is\n   simply annoying).\n\n   Strictly speaking, this is a backward incompatible change and the\n   users need to explicitly set the variable to 'true' if they want\n   to resurrect the now-ignored use case.\n\n * \"git replace\" learned the \"--edit\" subcommand to create a\n   replacement by editing an existing object.\n\n * \"git replace\" learned a \"--graft\" option to rewrite parents of a\n   commit.\n\n * \"git send-email\" learned \"--to-cover\" and \"--cc-cover\" options, to\n   tell it to copy To: and Cc: headers found in the first input file\n   when emitting later input files.\n\n * \"git svn\" learned to cope with malformed timestamps with only one\n   digit in the hour part, e.g. 2014-01-07T5:01:02.048176Z, emitted\n   by some broken subversion server implementations.\n\n * \"git tag\" when editing the tag message shows the name of the tag\n   being edited as a comment in the editor.\n\n * \"git tag\" learned to pay attention to \"tag.sort\" configuration, to\n   be used as the default sort order when no --sort=<value> the option\n   is given.\n\n * \"git verify-commit\" command to check GPG signature in signed\n   commits, in a way similar to \"git verify-tag\" is used to check\n   signed tags, was added.\n\n\nPerformance, Internal Implementation, etc.\n\n * Build procedure for 'subtree' (in contrib/) has been cleaned up.\n\n * The support for the profile-feedback build, which has been left\n   bit-rotten for quite a while, has been updated.\n\n * An experimental format to use two files (the base file and\n   incremental changes relative to it) to represent the index has been\n   introduced; this may reduce I/O cost of rewriting a large index\n   when only small part of the working tree changes.\n\n * Effort to shrink the size of patches Windows folks maintain on top\n   by upstreaming them continues.\n\n * Patches maintained by msysgit folks for Windows port are being\n   upstreamed here a bit by bit.\n\n * The leaf function to check validity of a refname format has been\n   micro-optimized, using SSE2 instructions when available.  A few\n   breakages during its development have been caught and fixed already\n   but there might remain some more still; please test and report if\n   you find any.\n\n * The `core.deltabasecachelimit` used to default to 16 MiB , but this\n   proved to be too small, and has been bumped to 96 MiB.\n\n * \"git blame\" has been optimized greatly by reorganising the data\n   structure that is used to keep track of the work to be done.\n\n * \"git diff\" that compares 3-or-more trees (e.g. parents and the\n   result of a merge) have been optimized.\n\n * The API to update/delete references are being converted to handle\n   updates to multiple references in a transactional way.  As an\n   example, \"update-ref --stdin [-z]\" has been updated to use this\n   API.\n\n * skip_prefix() and strip_suffix() API functions are used a lot more\n   widely throughout the codebase now.\n\n * Parts of the test scripts can be skipped by using a range notation,\n   e.g. \"sh t1234-test.sh --run='1-4 6 8-'\" to omit test piece 5 and 7\n   and run everything else.\n\n\nAlso contains various documentation updates and code clean-ups.\n\n\nFixes since v2.0\n----------------\n\nUnless otherwise noted, all the fixes since v2.0 in the maintenance\ntrack are contained in this release (see the maintenance releases'\nnotes for details).\n\n * We used to unconditionally disable the pager in the pager process\n   we spawn to feed out output, but that prevented people who want to\n   run \"less\" within \"less\" from doing so.\n   (merge c0459ca je/pager-do-not-recurse later to maint).\n\n * Tools that read diagnostic output in our standard error stream do\n   not want to see terminal control sequence (e.g. erase-to-eol).\n   Detect them by checking if the standard error stream is connected\n   to a tty.\n   (merge 38de156 mn/sideband-no-ansi later to maint).\n\n * Mishandling of patterns in .gitignore that has trailing SPs quoted\n   with backslashes (e.g. ones that end with \"\\ \") have been\n   corrected.\n   (merge 97c1364be6b pb/trim-trailing-spaces later to maint).\n\n * Reworded the error message given upon a failure to open an existing\n   loose object file due to e.g. permission issues; it was reported as\n   the object being corrupt, but that is not quite true.\n   (merge d6c8a05 jk/report-fail-to-read-objects-better later to maint).\n\n * \"git log -2master\" is a common typo that shows two commits starting\n   from whichever random branch that is not 'master' that happens to\n   be checked out currently.\n   (merge e3fa568 jc/revision-dash-count-parsing later to maint).\n\n * Code to avoid adding the same alternate object store twice was\n   subtly broken for a long time, but nobody seems to have noticed.\n   (merge 80b4785 rs/fix-alt-odb-path-comparison later to maint).\n   (merge 539e750 ek/alt-odb-entry-fix later to maint).\n\n * The \"%<(10,trunc)%s\" pretty format specifier in the log family of\n   commands is used to truncate the string to a given length (e.g. 10\n   in the example) with padding to column-align the output, but did\n   not take into account that number of bytes and number of display\n   columns are different.\n   (merge 7d50987 as/pretty-truncate later to maint).\n\n * \"%G\" (nothing after G) is an invalid pretty format specifier, but\n   the parser did not notice it as garbage.\n   (merge 958b2eb jk/pretty-G-format-fixes later to maint).\n\n * A handful of code paths had to read the commit object more than\n   once when showing header fields that are usually not parsed.  The\n   internal data structure to keep track of the contents of the commit\n   object has been updated to reduce the need for this double-reading,\n   and to allow the caller find the length of the object.\n   (merge 218aa3a jk/commit-buffer-length later to maint).\n\n * The \"mailmap.file\" configuration option did not support the tilde\n   expansion (i.e. ~user/path and ~/path).\n   (merge 9352fd5 ow/config-mailmap-pathname later to maint).\n\n * The completion scripts (in contrib/) did not know about quite a few\n   options that are common between \"git merge\" and \"git pull\", and a\n   couple of options unique to \"git merge\".\n   (merge 8fee872 jk/complete-merge-pull later to maint).\n\n * The unix-domain socket used by the sample credential cache daemon\n   tried to unlink an existing stale one at a wrong path, if the path\n   to the socket was given as an overlong path that does not fit in\n   sun_path member of the sockaddr_un structure.\n   (merge 2869b3e rs/fix-unlink-unix-socket later to maint).\n\n * An ancient rewrite passed a wrong pointer to a curl library\n   function in a rarely used code path.\n   (merge 479eaa8 ah/fix-http-push later to maint).\n\n * \"--ignore-space-change\" option of \"git apply\" ignored the spaces\n   at the beginning of line too aggressively, which is inconsistent\n   with the option of the same name \"diff\" and \"git diff\" have.\n   (merge 14d3bb4 jc/apply-ignore-whitespace later to maint).\n\n * \"git blame\" miscounted number of columns needed to show localized\n   timestamps, resulting in jaggy left-side-edge of the source code\n   lines in its output.\n   (merge dd75553 jx/blame-align-relative-time later to maint).\n\n * \"git blame\" assigned the blame to the copy in the working-tree if\n   the repository is set to core.autocrlf=input and the file used CRLF\n   line endings.\n   (merge 4d4813a bc/blame-crlf-test later to maint).\n\n * \"git clone -b brefs/tags/bar\" would have mistakenly thought we were\n   following a single tag, even though it was a name of the branch,\n   because it incorrectly used strstr().\n   (merge 60a5f5f jc/fix-clone-single-starting-at-a-tag later to maint).\n\n * \"git commit --allow-empty-messag -C $commit\" did not work when the\n   commit did not have any log message.\n   (merge 076cbd6 jk/commit-C-pick-empty later to maint).\n\n * \"git diff --find-copies-harder\" sometimes pretended as if the mode\n   bits have changed for paths that are marked with assume-unchanged\n   bit.\n   (merge 5304810 jk/diff-files-assume-unchanged later to maint).\n\n * \"filter-branch\" left an empty single-parent commit that results when\n   all parents of a merge commit gets mapped to the same commit, even\n   under \"--prune-empty\".\n   (merge 79bc4ef cb/filter-branch-prune-empty-degenerate-merges later to maint).\n\n * \"git format-patch\" did not enforce the rule that the \"--follow\"\n   option from the log/diff family of commands must be used with\n   exactly one pathspec.\n   (merge dd63f16 jk/diff-follow-must-take-one-pathspec later to maint).\n\n * \"git gc --auto\" was recently changed to run in the background to\n   give control back early to the end-user sitting in front of the\n   terminal, but it forgot that housekeeping involving reflogs should\n   be done without other processes competing for accesses to the refs.\n   (merge 62aad18 nd/daemonize-gc later to maint).\n\n * \"git grep -O\" to show the lines that hit in the pager did not work\n   well with case insensitive search.  We now spawn \"less\" with its\n   \"-I\" option when it is used as the pager (which is the default).\n   (merge f7febbe sk/spawn-less-case-insensitively-from-grep-O-i later to maint).\n\n * We used to disable threaded \"git index-pack\" on platforms without\n   thread-safe pread(); use a different workaround for such\n   platforms to allow threaded \"git index-pack\".\n   (merge 3953949 nd/index-pack-one-fd-per-thread later to maint).\n\n * The error reporting from \"git index-pack\" has been improved to\n   distinguish missing objects from type errors.\n   (merge 77583e7 jk/index-pack-report-missing later to maint).\n\n * \"log --show-signature\" incorrectly decided the color to paint a\n   mergetag that was and was not correctly validated.\n   (merge 42c55ce mg/fix-log-mergetag-color later to maint).\n\n * \"log --show-signature\" did not pay attention to \"--graph\" option.\n   (merge cf3983d zk/log-graph-showsig later to maint).\n\n * \"git mailinfo\" used to read beyond the end of header string while\n   parsing an incoming e-mail message to extract the patch.\n   (merge b1a013d rs/mailinfo-header-cmp later to maint).\n\n * On a case insensitive filesystem, merge-recursive incorrectly\n   deleted the file that is to be renamed to a name that is the same\n   except for case differences.\n   (merge baa37bf dt/merge-recursive-case-insensitive later to maint).\n\n * Merging changes into a file that ends in an incomplete line made the\n   last line into a complete one, even when the other branch did not\n   change anything around the end of file.\n   (merge ba31180 mk/merge-incomplete-files later to maint).\n\n * \"git pack-objects\" unnecessarily copied the previous contents when\n   extending the hashtable, even though it will populate the table\n   from scratch anyway.\n   (merge fb79947 rs/pack-objects-no-unnecessary-realloc later to maint).\n\n * Recent updates to \"git repack\" started to duplicate objects that\n   are in packfiles marked with .keep flag into the new packfile by\n   mistake.\n   (merge d078d85 jk/repack-pack-keep-objects later to maint).\n\n * \"git rerere forget\" did not work well when merge.conflictstyle\n   was set to a non-default value.\n   (merge de3d8bb fc/rerere-conflict-style later to maint).\n\n * \"git remote rm\" and \"git remote prune\" can involve removing many\n   refs at once, which is not a very efficient thing to do when very\n   many refs exist in the packed-refs file.\n   (merge e6bea66 jl/remote-rm-prune later to maint).\n\n * \"git log --exclude=<glob> --all | git shortlog\" worked as expected,\n   but \"git shortlog --exclude=<glob> --all\", which is supposed to be\n   identical to the above pipeline, was not accepted at the command\n   line argument parser level.\n   (merge eb07774 jc/shortlog-ref-exclude later to maint).\n\n * The autostash mode of \"git rebase -i\" did not restore the dirty\n   working tree state if the user aborted the interactive rebase by\n   emptying the insn sheet.\n   (merge ddb5432 rr/rebase-autostash-fix later to maint).\n\n * \"git rebase --fork-point\" did not filter out patch-identical\n   commits correctly.\n\n * During \"git rebase --merge\", a conflicted patch could not be\n   skipped with \"--skip\" if the next one also conflicted.\n   (merge 95104c7 bc/fix-rebase-merge-skip later to maint).\n\n * \"git show -s\" (i.e. show log message only) used to incorrectly emit\n   an extra blank line after a merge commit.\n   (merge ad2f725 mk/show-s-no-extra-blank-line-for-merges later to maint).\n\n * \"git status\", even though it is a read-only operation, tries to\n   update the index with refreshed lstat(2) info to optimize future\n   accesses to the working tree opportunistically, but this could\n   race with a \"read-write\" operation that modify the index while it\n   is running.  Detect such a race and avoid overwriting the index.\n   (merge 426ddee ym/fix-opportunistic-index-update-race later to maint).\n\n * \"git status\" (and \"git commit\") behaved as if changes in a modified\n   submodule are not there if submodule.*.ignore configuration is set,\n   which was misleading.  The configuration is only to unclutter diff\n   output during the course of development, and should not to hide\n   changes in the \"status\" output to cause the users forget to commit\n   them.\n   (merge c215d3d jl/status-added-submodule-is-never-ignored later to maint).\n\n * Documentation for \"git submodule sync\" forgot to say that the subcommand\n   can take the \"--recursive\" option.\n   (merge 9393ae7 mc/doc-submodule-sync-recurse later to maint).\n\n * \"git update-index --cacheinfo\" in 2.0 release crashed on a\n   malformed command line.\n   (merge c8e1ee4 jc/rev-parse-argh-dashed-multi-words later to maint).\n\n * The mode to run tests with HTTP server tests disabled was broken.\n   (merge afa53fe na/no-http-test-in-the-middle later to maint).\n\n----------------------------------------------------------------\n\nChanges since v2.0.0, 643 non-merge changes from 80 contributors,\nare as follows:\n\nAbbaad Haider (1):\n      http-push.c: make CURLOPT_IOCTLDATA a usable pointer\n\nAlexey Shumkin (5):\n      t4205 (log-pretty-formats): don't hardcode SHA-1 in expected outputs\n      t4041, t4205, t6006, t7102: don't hardcode tested encoding value\n      t4205 (log-pretty-format): use `tformat` rather than `format`\n      t4205, t6006: add tests that fail with i18n.logOutputEncoding set\n      pretty.c: format string with truncate respects logOutputEncoding\n\nAnders Kaseorg (1):\n      gitk: Allow displaying time zones from author and commit dates timestamps\n\nAndi Kleen (4):\n      Use BASIC_FLAGS for profile feedback\n      Don't define away __attribute__ on gcc\n      Run the perf test suite for profile feedback too\n      Fix profile feedback with -jN and add profile-fast\n\nAndreas Schwab (1):\n      grep: add grep.fullName config variable\n\nBen Walton (1):\n      compat/bswap.h: fix endianness detection\n\nBrian Gesiak (14):\n      strbuf: use _rtrim and _ltrim in strbuf_trim\n      api-strbuf.txt: add docs for _trim and _ltrim\n      builtin/ls-remote.c: rearrange xcalloc arguments\n      builtin/remote.c: rearrange xcalloc arguments\n      commit.c: rearrange xcalloc arguments\n      config.c: rearrange xcalloc arguments\n      diff.c: rearrange xcalloc arguments\n      http-push.c: rearrange xcalloc arguments\n      imap-send.c: rearrange xcalloc arguments\n      notes.c: rearrange xcalloc arguments\n      pack-revindex.c: rearrange xcalloc arguments\n      reflog-walk.c: rearrange xcalloc arguments\n      remote.c: rearrange xcalloc arguments\n      transport-helper.c: rearrange xcalloc arguments\n\nCezary Zawadka (1):\n      Windows: allow using UNC path for git repository\n\nCharles Bailey (3):\n      compat/bswap.h: detect endianness on more platforms that don't use BYTE_ORDER\n      filter-branch: eliminate duplicate mapped parents\n      Fix contrib/subtree Makefile to patch #! line\n\nChristian Couder (16):\n      replace: make sure --edit results in a different object\n      replace: refactor checking ref validity\n      replace: die early if replace ref already exists\n      replace: add tests for --edit\n      replace: add --edit to usage string\n      Documentation: replace: describe new --edit option\n      commit: add for_each_mergetag()\n      replace: cleanup redirection style in tests\n      replace: add --graft option\n      replace: add test for --graft\n      Documentation: replace: add --graft option\n      contrib: add convert-grafts-to-replace-refs.sh\n      replace: remove signature when using --graft\n      replace: add test for --graft with signed commit\n      replace: check mergetags when using --graft\n      replace: add test for --graft with a mergetag\n\nDan Albert (1):\n      imap-send: use git-credential\n\nDavid Aguilar (3):\n      gitk: Honor TMPDIR when viewing external diffs\n      gitk: Use mktemp -d to avoid predictable temporary directories\n      gitk: Catch mkdtemp errors\n\nDavid Kastrup (2):\n      blame: large-scale performance rewrite\n      Bump core.deltaBaseCacheLimit to 96m\n\nDavid Turner (7):\n      docs: document RUN_SETUP_GENTLY and clarify RUN_SETUP\n      merge-recursive.c: fix case-changing merge bug\n      mv: allow renaming to fix case on case insensitive filesystems\n      refs.c: optimize check_refname_component()\n      refs.c: SSE2 optimizations for check_refname_component\n      refs.c: handle REFNAME_REFSPEC_PATTERN at end of page\n      refs: fix valgrind suppression file\n\nElia Pinto (62):\n      t9365-continuing-queries.sh: use the $( ... ) construct for command substitution\n      test-gitmw-lib.sh: use the $( ... ) construct for command substitution\n      t7900-subtree.sh: use the $( ... ) construct for command substitution\n      appp.sh: use the $( ... ) construct for command substitution\n      git-pull.sh: use the $( ... ) construct for command substitution\n      git-rebase--merge.sh: use the $( ... ) construct for command substitution\n      git-rebase.sh: use the $( ... ) construct for command substitution\n      git-stash.sh: use the $( ... ) construct for command substitution\n      git-web--browse.sh: use the $( ... ) construct for command substitution\n      lib-credential.sh: use the $( ... ) construct for command substitution\n      lib-cvs.sh: use the $( ... ) construct for command substitution\n      lib-gpg.sh: use the $( ... ) construct for command substitution\n      p5302-pack-index.sh: use the $( ... ) construct for command substitution\n      t0001-init.sh: use the $( ... ) construct for command substitution\n      t0010-racy-git.sh: use the $( ... ) construct for command substitution\n      t0020-crlf.sh: use the $( ... ) construct for command substitution\n      t0025-crlf-auto.sh: use the $( ... ) construct for command substitution\n      t0026-eol-config.sh: use the $( ... ) construct for command substitution\n      t0030-stripspace.sh: use the $( ... ) construct for command substitution\n      t0300-credentials.sh: use the $( ... ) construct for command substitution\n      t1000-read-tree-m-3way.sh: use the $( ... ) construct for command substitution\n      t1001-read-tree-m-2way.sh: use the $( ... ) construct for command substitution\n      t1002-read-tree-m-u-2way.sh: use the $( ... ) construct for command substitution\n      t1003-read-tree-prefix.sh: use the $( ... ) construct for command substitution\n      t1004-read-tree-m-u-wf.sh: use the $( ... ) construct for command substitution\n      t1020-subdirectory.sh: use the $( ... ) construct for command substitution\n      t1050-large.sh: use the $( ... ) construct for command substitution\n      t3905-stash-include-untracked.sh: use the $( ... ) construct for command substitution\n      t3910-mac-os-precompose.sh: use the $( ... ) construct for command substitution\n      t4006-diff-mode.sh: use the $( ... ) construct for command substitution\n      t4010-diff-pathspec.sh: use the $( ... ) construct for command substitution\n      t4012-diff-binary.sh: use the $( ... ) construct for command substitution\n      t4013-diff-various.sh: use the $( ... ) construct for command substitution\n      t4014-format-patch.sh: use the $( ... ) construct for command substitution\n      t4036-format-patch-signer-mime.sh: use the $( ... ) construct for command substitution\n      t4038-diff-combined.sh: use the $( ... ) construct for command substitution\n      t4057-diff-combined-paths.sh: use the $( ... ) construct for command substitution\n      t4116-apply-reverse.sh: use the $( ... ) construct for command substitution\n      t4119-apply-config.sh: use the $( ... ) construct for command substitution\n      t4204-patch-id.sh: use the $( ... ) construct for command substitution\n      t5000-tar-tree.sh: use the $( ... ) construct for command substitution\n      scripts: \"export VAR=VALUE\" construct is not portable\n      check_bindir: avoid \"test <cond> -a/-o <cond>\"\n      contrib/examples/git-clone.sh: avoid \"test <cond> -a/-o <cond>\"\n      contrib/examples/git-commit.sh: avoid \"test <cond> -a/-o <cond>\"\n      contrib/examples/git-merge.sh: avoid \"test <cond> -a/-o <cond>\"\n      contrib/examples/git-repack.sh: avoid \"test <cond> -a/-o <cond>\"\n      contrib/examples/git-resolve.sh: avoid \"test <cond> -a/-o <cond>\"\n      git-bisect.sh: avoid \"test <cond> -a/-o <cond>\"\n      git-mergetool.sh: avoid \"test <cond> -a/-o <cond>\"\n      git-rebase--interactive.sh: avoid \"test <cond> -a/-o <cond>\"\n      t/lib-httpd.sh: avoid \"test <cond> -a/-o <cond>\"\n      t/t0025-crlf-auto.sh: avoid \"test <cond> -a/-o <cond>\"\n      t/t0026-eol-config.sh: avoid \"test <cond> -a/-o <cond>\"\n      t/t4102-apply-rename.sh: avoid \"test <cond> -a/-o <cond>\"\n      t/t5000-tar-tree.sh: avoid \"test <cond> -a/-o <cond>\"\n      t/t5403-post-checkout-hook.sh: avoid \"test <cond> -a/-o <cond>\"\n      t/t5538-push-shallow.sh: avoid \"test <cond> -a/-o <cond>\"\n      t/t9814-git-p4-rename.sh: avoid \"test <cond> -a/-o <cond>\"\n      t/test-lib-functions.sh: avoid \"test <cond> -a/-o <cond>\"\n      git-submodule.sh: avoid \"test <cond> -a/-o <cond>\"\n      submodule.c: use the ARRAY_SIZE macro\n\nEphrim Khong (1):\n      sha1_file: do not add own object directory as alternate\n\nEric Wong (1):\n      config: preserve config file permissions on edits\n\nErik Faye-Lund (1):\n      send-email: recognize absolute path on Windows\n\nFabian Ruch (1):\n      sequencer: signal failed ff as an aborted, not a conflicted merge\n\nFelipe Contreras (13):\n      fast-export: improve argument parsing\n      fast-export: add new --refspec option\n      transport-helper: add support for old:new refspec\n      transport-helper: add support to push symbolic refs\n      fast-import: add support to delete refs\n      fast-export: add support to delete refs\n      transport-helper: add support to delete branches\n      transport-helper: remove unnecessary strbuf resets\n      mergetools: add vimdiff3 mode\n      mergetool: run prompt only if guessed tool\n      merge: enable defaulttoupstream by default\n      rerere: fix for merge.conflictstyle\n      silence a bunch of format-zero-length warnings\n\nIlya Bobyr (4):\n      test-lib: document short options in t/README\n      test-lib: tests skipped by GIT_SKIP_TESTS say so\n      test-lib: '--run' to run only specific tests\n      gitk: Replace SHA1 entry field on keyboard paste\n\nJacek Konieczny (1):\n      pull: do not abuse 'break' inside a shell 'case'\n\nJacob Keller (2):\n      tag: fix --sort tests to use cat<<-\\EOF format\n      tag: support configuring --sort via .gitconfig\n\nJames Denholm (6):\n      contrib/subtree/Makefile: scrap unused $(gitdir)\n      contrib/subtree/Makefile: use GIT-VERSION-FILE\n      contrib/subtree/Makefile: s/libexecdir/gitexecdir/\n      contrib/subtree/Makefile: clean up rules to generate documentation\n      contrib/subtree/Makefile: clean up rule for \"clean\"\n      contrib/subtree: allow adding an annotated tag\n\nJason St. John (1):\n      Documentation: use \"command-line\" when used as a compound adjective, and fix other minor grammatical issues\n\nJean-Jacques Lafay (1):\n      git tag --contains: avoid stack overflow\n\nJeff King (131):\n      run_external_diff: use an argv_array for the environment\n      run_external_diff: clean up error handling\n      run_external_diff: drop fflush(NULL)\n      run_external_diff: hoist common bits out of conditional\n      run_external_diff: refactor cmdline setup logic\n      commit: do not complain of empty messages from -C\n      t3910: show failure of core.precomposeunicode with decomposed filenames\n      replace: refactor command-mode determination\n      replace: use OPT_CMDMODE to handle modes\n      replace: factor object resolution out of replace_object\n      replace: add --edit option\n      commit: use split_ident_line to compare author/committer\n      pretty: make show_ident_date public\n      commit: print \"Date\" line when the user has set date\n      commit: accept more date formats for \"--date\"\n      inline constant return from error() function\n      let clang use the constant-return error() macro\n      grep: use run-command's \"dir\" option for --open-files-in-pager\n      t/lib-httpd: require SANITY prereq\n      index-pack: distinguish missing objects from type errors\n      run_diff_files: do not look at uninitialized stat data\n      run-command: store an optional argv_array\n      run_column_filter: use argv_array\n      git_connect: use argv_array\n      get_helper: use run-command's internal argv_array\n      get_exporter: use argv_array\n      get_importer: use run-command's internal argv_array\n      argv-array: drop \"detach\" code\n      open_sha1_file: report \"most interesting\" errno\n      move \"--follow needs one pathspec\" rule to diff_setup_done\n      format-patch: make newline after signature conditional\n      daemon/config: factor out duplicate xstrdup_tolower\n      test-lib: preserve GIT_CURL_VERBOSE from the environment\n      t/lib-httpd: use write_script to copy CGI scripts\n      t5550: test display of remote http error messages\n      strbuf: add strbuf_tolower function\n      http: extract type/subtype portion of content-type\n      http: optionally extract charset parameter from content-type\n      strbuf: add strbuf_reencode helper\n      remote-curl: reencode http error messages\n      http: default text charset to iso-8859-1\n      t5537: re-drop http tests\n      error_resolve_conflict: rewrap advice message\n      error_resolve_conflict: drop quotations around operation\n      update-index: fix segfault with missing --cacheinfo argument\n      repack: do not accidentally pack kept objects by default\n      repack: respect pack.writebitmaps\n      repack: s/write_bitmap/&s/ in code\n      pack-objects: stop respecting pack.writebitmaps\n      repack: simplify handling of --write-bitmap-index\n      repack: introduce repack.writeBitmaps config option\n      commit_tree: take a pointer/len pair rather than a const strbuf\n      replace dangerous uses of strbuf_attach\n      alloc: include any-object allocations in alloc_report\n      commit: push commit_index update into alloc_commit_node\n      do not create \"struct commit\" with xcalloc\n      logmsg_reencode: return const buffer\n      sequencer: use logmsg_reencode in get_message\n      t7700: drop explicit --no-pack-kept-objects from .keep test\n      provide a helper to free commit buffer\n      provide a helper to set the commit buffer\n      provide helpers to access the commit buffer\n      use get_cached_commit_buffer where appropriate\n      use get_commit_buffer to avoid duplicate code\n      convert logmsg_reencode to get_commit_buffer\n      use get_commit_buffer everywhere\n      commit-slab: provide a static initializer\n      commit: convert commit->buffer to a slab\n      commit: record buffer length in cache\n      reuse cached commit buffer when parsing signatures\n      t7510: stop referring to master in later tests\n      t7510: test a commit signed by an unknown key\n      t7510: check %G* pretty-format output\n      pretty: avoid reading past end-of-string with \"%G\"\n      parse_diff_color_slot: drop ofs parameter\n      daemon: mark some strings as const\n      avoid using skip_prefix as a boolean\n      strbuf: add xstrfmt helper\n      use xstrfmt in favor of manual size calculations\n      use xstrdup instead of xmalloc + strcpy\n      use xstrfmt to replace xmalloc + sprintf\n      use xstrfmt to replace xmalloc + strcpy/strcat\n      setup_git_env: use git_pathdup instead of xmalloc + sprintf\n      sequencer: use argv_array_pushf\n      merge: use argv_array when spawning merge strategy\n      walker_fetch: fix minor memory leak\n      unique_path: fix unlikely heap overflow\n      refactor skip_prefix to return a boolean\n      apply: use skip_prefix instead of raw addition\n      fast-import: fix read of uninitialized argv memory\n      transport-helper: avoid reading past end-of-string\n      use skip_prefix to avoid magic numbers\n      use skip_prefix to avoid repeating strings\n      fast-import: use skip_prefix for parsing input\n      daemon: use skip_prefix to avoid magic numbers\n      stat_opt: check extra strlen call\n      fast-import: refactor parsing of spaces\n      fetch-pack: refactor parsing in get_ack\n      git: avoid magic number with skip_prefix\n      use skip_prefix to avoid repeated calculations\n      http-push: refactor parsing of remote object names\n      setup_git_env(): introduce git_path_from_env() helper\n      move \"%G\" format test from t7510 to t6006\n      replace: replace spaces with tabs in indentation\n      avoid double close of descriptors handed to run_command\n      replace: use argv_array in export_object\n      replace: add a --raw mode for --edit\n      add strip_suffix function\n      implement ends_with via strip_suffix\n      replace has_extension with ends_with\n      use strip_suffix instead of ends_with in simple cases\n      index-pack: use strip_suffix to avoid magic numbers\n      strbuf: implement strbuf_strip_suffix\n      verify-pack: use strbuf_strip_suffix\n      prepare_packed_git_one: refactor duplicate-pack check\n      t7300: repair filesystem permissions with test_when_finished\n      remote-curl: do not complain on EOF from parent git\n      remote-curl: use error instead of fprintf(stderr)\n      remote-curl: mark helper-protocol errors more clearly\n      tag: use skip_prefix instead of magic numbers\n      alloc: write out allocator definitions\n      move setting of object->type to alloc_* functions\n      parse_object_buffer: do not set object type\n      add object_as_type helper for casting objects\n      alloc: factor out commit index\n      object_as_type: set commit index\n      diff-tree: avoid lookup_unknown_object\n      prio-queue: factor out compare and swap operations\n      prio-queue: make output stable with respect to insertion\n      paint_down_to_common: use prio_queue\n      t5539: update a flaky test\n\nJens Lehmann (21):\n      status/commit: show staged submodules regardless of ignore config\n      commit -m: commit staged submodules regardless of ignore config\n      git-gui: show staged submodules regardless of ignore config\n      git-gui: tolerate major version changes when comparing the git version\n      gitk: Show staged submodules regardless of ignore config\n      test-lib: add test_dir_is_empty()\n      t/Makefile: check helper scripts for non-portable shell commands too\n      t/Makefile: always test all lint targets when running tests\n      submodules: add the lib-submodule-update.sh test library\n      checkout: call the new submodule update test framework\n      apply: add t4137 for submodule updates\n      read-tree: add t1013 for submodule updates\n      reset: add t7112 for submodule updates\n      bisect: add t6041 for submodule updates\n      merge: add t7613 for submodule updates\n      rebase: add t3426 for submodule updates\n      pull: add t5572 for submodule updates\n      cherry-pick: add t3512 for submodule updates\n      am: add t4255 for submodule updates\n      stash: add t3906 for submodule updates\n      revert: add t3513 for submodule updates\n\nJens Lindström (3):\n      remote rm: delete remote configuration as the last\n      remote: repack packed-refs once when deleting multiple refs\n      remote prune: optimize \"dangling symref\" check/warning\n\nJeremiah Mahler (7):\n      format-patch: add \"--signature-file=<file>\" option\n      t9138-git-svn-authors-prog.sh fixups\n      Documentation: wording fixes in the user manual and glossary\n      t/t7810-grep.sh: remove duplicate test_config()\n      api-strbuf.txt minor typos\n      name-hash.c: replace cache_name_compare() with memcmp(3)\n      cleanup duplicate name_compare() functions\n\nJiang Xin (2):\n      blame: fix broken time_buf paddings in relative timestamp\n      blame: dynamic blame_date_width for different locales\n\nJohannes Schindelin (2):\n      git grep -O -i: if the pager is 'less', pass the '-I' option\n      Win32: let mingw_execve() return an int\n\nJohannes Sixt (1):\n      fix brown paper bag breakage in t5150-request-pull.sh\n\nJohn Keeping (4):\n      completion: add a note that merge options are shared\n      completion: add missing options for git-merge\n      rebase--am: use --cherry-pick instead of --ignore-if-in-upstream\n      rebase: omit patch-identical commits with --fork-point\n\nJonathan McCrohan (1):\n      git-instaweb: add support for Apache 2.4\n\nJonathan Nieder (4):\n      contrib: remove vim support instructions\n      contrib: remove git-diffall\n      test-lint: find unportable sed, echo, test, and export usage after &&\n      test doc: test_write_lines does not split its arguments\n\nJunio C Hamano (49):\n      apply --ignore-space-change: lines with and without leading whitespaces do not match\n      send-email: windows drive prefix (e.g. C:) appears only at the beginning\n      mergetool: document the default for --[no-]prompt\n      compat/bswap.h: restore preference __BIG_ENDIAN over BIG_ENDIAN\n      CodingGuidelines: once it is in, it is not worth the code churn\n      CodingGuidelines: give an example for case/esac statement\n      CodingGuidelines: give an example for redirection\n      CodingGuidelines: give an example for control statements\n      CodingGuidelines: give an example for shell function preamble\n      CodingGuidelines: do not call the conditional statement \"if()\"\n      CodingGuidelines: on comparison\n      CodingGuidelines: on splitting a long line\n      CodingGuidelines: avoid \"test <cond> -a/-o <cond>\"\n      scripts: more \"export VAR=VALUE\" fixes\n      Git 1.9.4\n      fetch doc: update introductory part for clarity\n      fetch doc: update note on '+' in front of the refspec\n      fetch doc: remove notes on outdated \"mixed layout\"\n      First batch for 2.1\n      shortlog: allow --exclude=<glob> to be passed\n      fetch doc: on pulling multiple refspecs\n      fetch doc: update refspec format description\n      fetch doc: remove \"short-cut\" section\n      fetch doc: add a section on configured remote-tracking branches\n      fetch: allow explicit --refmap to override configuration\n      Second batch for 2.1\n      Update draft release notes to 2.1\n      test: turn EXPENSIVE into a lazy prerequisite\n      test: turn USR_BIN_TIME into a lazy prerequisite\n      t3302: coding style updates\n      t3302: do not chdir around in the primary test process\n      t3302: drop unnecessary NOT_EXPENSIVE pseudo-prerequisite\n      t3419: drop unnecessary NOT_EXPENSIVE pseudo-prerequisite\n      revision: parse \"git log -<count>\" more carefully\n      t0008: do not depend on 'echo' handling backslashes specially\n      Third batch for 2.1\n      git-submodule.sh: avoid \"echo\" path-like values\n      Fourth batch for 2.1\n      builtin/clone.c: detect a clone starting at a tag correctly\n      Git 2.0.1\n      Fifth batch for 2.1\n      Sixth batch for 2.1\n      Start preparing for 2.0.2\n      Seventh batch for 2.1\n      Git 2.0.2\n      Eighth batch for 2.1\n      Ninth batch for 2.1\n      Git 2.0.3\n      Git 2.1.0-rc0\n\nJörn Engel (1):\n      pager: do allow spawning pager recursively\n\nKarsten Blees (46):\n      MSVC: link dynamically to the CRT\n      Win32 dirent: remove unused dirent.d_ino member\n      Win32 dirent: remove unused dirent.d_reclen member\n      Win32 dirent: change FILENAME_MAX to MAX_PATH\n      Win32 dirent: clarify #include directives\n      Win32 dirent: improve dirent implementation\n      Win32: move main macro to a function\n      Win32: support Unicode console output\n      Win32: detect console streams more reliably\n      Win32: warn if the console font doesn't support Unicode\n      Win32: add Unicode conversion functions\n      Win32: Thread-safe windows console output\n      Win32: fix broken pipe detection\n      Win32: reliably detect console pipe handles\n      Win32: simplify internal mingw_spawn* APIs\n      Win32: fix potential multi-threading issue\n      MinGW: disable CRT command line globbing\n      Win32: Unicode arguments (outgoing)\n      Win32: Unicode arguments (incoming)\n      trace: move trace declarations from cache.h to new trace.h\n      trace: consistently name the format parameter\n      trace: remove redundant printf format attribute\n      symlinks: remove PATH_MAX limitation\n      hashmap: factor out getting a hash code from a SHA1\n      hashmap: improve struct hashmap member documentation\n      hashmap: add simplified hashmap_get_from_hash() API\n      hashmap: add string interning API\n      cache.h: rename cache_def_free to cache_def_clear\n      trace: improve trace performance\n      Documentation/git.txt: improve documentation of 'GIT_TRACE*' variables\n      sha1_file: change GIT_TRACE_PACK_ACCESS logging to use trace API\n      trace: add infrastructure to augment trace output with additional info\n      trace: disable additional trace output for unit tests\n      trace: add current timestamp to all trace output\n      trace: move code around, in preparation to file:line output\n      trace: add 'file:line' to all trace output\n      trace: add high resolution timer function to debug performance issues\n      trace: add trace_performance facility to debug performance issues\n      git: add performance tracing for git's main() function to debug scripts\n      wt-status: simplify performance measurement by using getnanotime()\n      progress: simplify performance measurement by using getnanotime()\n      api-trace.txt: add trace API documentation\n      Win32: Unicode file name support (except dirent)\n      Win32: Unicode file name support (dirent)\n      MinGW: fix compile error due to missing ELOOP\n      config: use chmod() instead of fchmod()\n\nKirill Smelkov (20):\n      combine-diff: move show_log_first logic/action out of paths scanning\n      combine-diff: move changed-paths scanning logic into its own function\n      tree-diff: no need to manually verify that there is no mode change for a path\n      tree-diff: no need to pass match to skip_uninteresting()\n      tree-diff: show_tree() is not needed\n      tree-diff: consolidate code for emitting diffs and recursion in one place\n      tree-diff: don't assume compare_tree_entry() returns -1,0,1\n      tree-diff: move all action-taking code out of compare_tree_entry()\n      tree-diff: rename compare_tree_entry -> tree_entry_pathcmp\n      tree-diff: show_path prototype is not needed anymore\n      tree-diff: simplify tree_entry_pathcmp\n      tree-diff: remove special-case diff-emitting code for empty-tree cases\n      tree-diff: diff_tree() should now be static\n      tree-diff: rework diff_tree interface to be sha1 based\n      tree-diff: no need to call \"full\" diff_tree_sha1 from show_path()\n      tree-diff: reuse base str(buf) memory on sub-tree recursion\n      Portable alloca for Git\n      tree-diff: rework diff_tree() to generate diffs for multiparent cases as well\n      combine-diff: speed it up, by using multiparent diff tree-walker directly\n      mingw: activate alloca\n\nLinus Torvalds (1):\n      git log: support \"auto\" decorations\n\nLuis R. Rodriguez (1):\n      git.c: treat RUN_SETUP_GENTLY and RUN_SETUP as mutually exclusive\n\nMarc Branchaud (2):\n      fetch doc: move FETCH_HEAD material lower and add an example\n      docs: Explain the purpose of fetch's and pull's <refspec> parameter.\n\nMatthew Chen (1):\n      submodule: document \"sync --recursive\"\n\nMatthieu Moy (4):\n      git-remote-mediawiki: allow stop/start-ing the test server\n      git-remote-mediawiki: fix encoding issue for UTF-8 media files\n      pager: remove 'S' from $LESS by default\n      rebase -i: test \"Nothing to do\" case with autostash\n\nMax Kirillov (5):\n      git-show: fix 'git show -s' to not add extra terminator after merge commit\n      gitk: Switch to patch mode when searching for line origin\n      gitk: Add visiblerefs option, which lists always-shown branches\n      t6023-merge-file.sh: fix and mark as broken invalid tests\n      git-merge-file: do not add LF at EOF while applying unrelated change\n\nMaxime Coste (2):\n      git-p4: Do not include diff in spec file when just preparing p4\n      git-p4: fix submit in non --prepare-p4-only mode\n\nMichael Barabanov (1):\n      use local cloning if insteadOf makes a local URL\n\nMichael Haggerty (27):\n      t1400: fix name and expected result of one test\n      t1400: provide more usual input to the command\n      parse_arg(): really test that argument is properly terminated\n      t1400: add some more tests involving quoted arguments\n      refs.h: rename the action_on_err constants\n      update_refs(): fix constness\n      update-ref --stdin: read the whole input at once\n      parse_cmd_verify(): copy old_sha1 instead of evaluating <oldvalue> twice\n      update-ref.c: extract a new function, parse_refname()\n      update-ref --stdin: improve error messages for invalid values\n      update-ref --stdin: make error messages more consistent\n      update-ref --stdin: simplify error messages for missing oldvalues\n      t1400: test that stdin -z update treats empty <newvalue> as zeros\n      update-ref.c: extract a new function, parse_next_sha1()\n      update-ref --stdin -z: deprecate interpreting the empty string as zeros\n      t1400: test one mistake at a time\n      update-ref --stdin: improve the error message for unexpected EOF\n      update-ref --stdin: harmonize error messages\n      refs: add a concept of a reference transaction\n      update-ref --stdin: reimplement using reference transactions\n      refs: remove API function update_refs()\n      struct ref_update: rename field \"ref_name\" to \"refname\"\n      struct ref_update: store refname as a FLEX_ARRAY\n      ref_transaction_commit(): simplify code using temporary variables\n      struct ref_update: add a lock field\n      struct ref_update: add a type field\n      ref_transaction_commit(): work with transaction->updates in place\n\nMichael J Gruber (7):\n      t7510: use consistent &&-chains in loop\n      gpg-interface: provide clear helper for struct signature_check\n      gpg-interface: provide access to the payload\n      verify-commit: scriptable commit signature verification\n      t7510: exit for loop with test result\n      t7510: test verify-commit\n      log: correctly identify mergetag signature verification status\n\nMichael Naumov (1):\n      sideband.c: do not use ANSI control sequence on non-terminal\n\nMichael S. Tsirkin (6):\n      git-send-email: two new options: to-cover, cc-cover\n      test/send-email: to-cover, cc-cover tests\n      rebase --keep-empty -i: add test\n      test: add test_write_lines helper\n      patch-id: make it stable against hunk reordering\n      patch-id-test: test stable and unstable behaviour\n\nNguyễn Thái Ngọc Duy (40):\n      index-pack: work around thread-unsafe pread()\n      ewah: fix constness of ewah_read_mmap\n      ewah: delete unused ewah_read_mmap_native declaration\n      sequencer: do not update/refresh index if the lock cannot be held\n      config: be strict on core.commentChar\n      commit: allow core.commentChar=auto for character auto selection\n      gc --auto: do not lock refs in the background\n      git potty: restore environments after alias expansion\n      read-cache: new API write_locked_index instead of write_index/write_cache\n      read-cache: relocate and unexport commit_locked_index()\n      read-cache: store in-memory flags in the first 12 bits of ce_flags\n      read-cache: be strict about \"changed\" in remove_marked_cache_entries()\n      read-cache: be specific what part of the index has changed\n      update-index: be specific what part of the index has changed\n      resolve-undo: be specific what part of the index has changed\n      unpack-trees: be specific what part of the index has changed\n      cache-tree: mark istate->cache_changed on cache tree invalidation\n      cache-tree: mark istate->cache_changed on cache tree update\n      cache-tree: mark istate->cache_changed on prime_cache_tree()\n      entry.c: update cache_changed if refresh_cache is set in checkout_entry()\n      read-cache: save index SHA-1 after reading\n      read-cache: split-index mode\n      read-cache: mark new entries for split index\n      read-cache: save deleted entries in split index\n      read-cache: mark updated entries for split index\n      split-index: the writing part\n      split-index: the reading part\n      split-index: do not invalidate cache-tree at read time\n      split-index: strip pathname of on-disk replaced entries\n      update-index: new options to enable/disable split index mode\n      update-index --split-index: do not split if $GIT_DIR is read only\n      rev-parse: add --shared-index-path to get shared index path\n      read-tree: force split-index mode off on --index-output\n      read-tree: note about dropping split-index mode or index version\n      read-cache: force split index mode with GIT_TEST_SPLIT_INDEX\n      t2104: make sure split index mode is off for the version test\n      t1700: new tests for split-index mode\n      dir.c: coding style fix\n      dir.h: move struct exclude declaration to top level\n      prep_exclude: remove the artificial PATH_MAX limit\n\nNick Alcock (1):\n      t5538: move http push tests out to t5542\n\nPasha Bolokhov (1):\n      dir.c:trim_trailing_spaces(): fix for \" \\ \" sequence\n\nPat Thoyts (2):\n      wincred: add install target\n      wincred: avoid overwriting configured variables\n\nPhilip Oakley (1):\n      doc: give some guidelines for error messages\n\nRamkumar Ramachandra (1):\n      rebase -i: handle \"Nothing to do\" case with autostash\n\nRamsay Allan Jones (2):\n      t0000-*.sh: fix the GIT_SKIP_TESTS sub-tests\n      alloc.c: remove the alloc_raw_commit_node() function\n\nRené Scharfe (28):\n      mailinfo: use strcmp() for string comparison\n      pack-objects: use free()+xcalloc() instead of xrealloc()+memset()\n      Use starts_with() for C strings instead of memcmp()\n      blame: factor out get_next_line()\n      blame: simplify prepare_lines()\n      wt-status: use argv_array for environment\n      wt-status: simplify building of summary limit argument\n      sha1_file: replace PATH_MAX buffer with strbuf in prepare_packed_git_one()\n      sha1_file: avoid overrunning alternate object base string\n      t5000, t5003: simplify commit\n      diff-tree: call free_commit_list() instead of duplicating its code\n      line-log: use commit_list_append() instead of duplicating its code\n      use strbuf_addbuf for adding strbufs\n      use strbuf_addch for adding single characters\n      merge: simplify merge_trivial() by using commit_list_append()\n      commit: use commit_list_append() instead of duplicating its code\n      fsck: simplify fsck_commit_buffer() by using commit_list_count()\n      annotate: use argv_array\n      strbuf: use strbuf_addstr() for adding C strings\n      use commit_list_count() to count the members of commit_lists\n      run-command: use internal argv_array of struct child_process in run_hook_ve()\n      transport: simplify fetch_objs_via_rsync() using argv_array\n      fast-import: use hashcmp() for SHA1 hash comparison\n      bundle: use internal argv_array of struct child_process in create_bundle()\n      remote-testsvn: use internal argv_array of struct child_process in cmd_import()\n      unix-socket: remove stale socket before calling chdir()\n      use xcalloc() to allocate zero-initialized memory\n      use xmemdupz() to allocate copies of strings given by start and length\n\nRomanBelinsky (1):\n      SVN.pm::parse_svn_date: allow timestamps with a single-digit hour\n\nRonnie Sahlberg (27):\n      sequencer.c: check for lock failure and bail early in fast_forward_to\n      commit.c: check for lock error and return early\n      refs.c: add new functions reflog_exists and delete_reflog\n      checkout.c: use ref_exists instead of file_exist\n      refs.c: change read_ref_at to use the reflog iterators\n      enums: remove trailing ',' after last item in enum\n      enums: remove trailing ',' after last item in enum\n      refs.c: remove ref_transaction_rollback\n      refs.c: ref_transaction_commit should not free the transaction\n      refs.c: constify the sha arguments for ref_transaction_create|delete|update\n      refs.c: allow passing NULL to ref_transaction_free\n      refs.c: add a strbuf argument to ref_transaction_commit for error logging\n      lockfile.c: add a new public function unable_to_lock_message\n      lockfile.c: make lock_file return a meaningful errno on failurei\n      refs.c: add an err argument to repack_without_refs\n      refs.c: make sure log_ref_setup returns a meaningful errno\n      refs.c: verify_lock should set errno to something meaningful\n      refs.c: make remove_empty_directories always set errno to something sane\n      refs.c: commit_packed_refs to return a meaningful errno on failure\n      refs.c: make resolve_ref_unsafe set errno to something meaningful on error\n      refs.c: log_ref_write should try to return meaningful errno\n      refs.c: make ref_update_reject_duplicates take a strbuf argument for errors\n      refs.c: make update_ref_write update a strbuf on failure\n      update-ref: use err argument to get error from ref_transaction_commit\n      refs.c: remove the onerr argument to ref_transaction_commit\n      refs.c: change ref_transaction_update() to do error checking and return status\n      refs.c: add a public is_branch function\n\nStefan Beller (3):\n      .mailmap: map different names with the same email address together\n      git.1: switch homepage for stats\n      .mailmap: combine Stefan Beller's emails\n\nSteffen Prohaska (1):\n      completion: handle '!f() { ... }; f' and \"!sh -c '...' -\" aliases\n\nStepan Kasal (3):\n      Revert \"submodules: fix ambiguous absolute paths under Windows\"\n      t5000, t5003: do not use test_cmp to compare binary files\n      mingw: avoid const warning\n\nStephen P. Smith (1):\n      How to keep a project's canonical history correct.\n\nSteve Hoelzer (1):\n      environment.c: enable core.preloadindex by default\n\nTanay Abhra (4):\n      string-list: spell all values out that are given to a string_list initializer\n      imap-send: use skip_prefix instead of using magic numbers\n      string-list: add string_list initializer helper function\n      replace memset with string-list initializers\n\nTheodore Leblond (1):\n      compat/poll: sleep 1 millisecond to avoid busy wait\n\nThorsten Glaser (1):\n      builtin/tag.c: show tag name to hint in the message editor\n\nTorsten Bögershausen (7):\n      utf8.c: use a table for double_width\n      utf8: make it easier to auto-update git_wcwidth()\n      t5551: fix the 50,000 tag test\n      t9001: avoid non-portable '\\n' with sed\n      Update of unicode_width.h to Unicode Version 7.0\n      t0025: rename the test files\n      t0027: combinations of core.autocrlf, core.eol and text\n\nTrần Ngọc Quân (1):\n      l10n: Init Vietnamese translation\n\nW. Trevor King (1):\n      Documentation: mention config sources for @{upstream}\n\nWilliam Giokas (1):\n      svn-fe: conform to pep8\n\nYi EungJun (2):\n      http-protocol.txt: Basic Auth is defined in RFC 2617, not RFC 2616\n      http: fix charset detection of extract_content_type()\n\nYiannis Marangos (2):\n      wrapper.c: add xpread() similar to xread()\n      read-cache.c: verify index file before we opportunistically update it\n\nZoltan Klinger (1):\n      log: fix indentation for --graph --show-signature\n\nbrian m. carlson (3):\n      blame: correctly handle files regardless of autocrlf\n      rebase--merge: fix --skip with two conflicts in a row\n      Documentation: fix missing text for rev-parse --verify\n\nØystein Walle (1):\n      config: respect '~' and '~user' in mailmap.file\n\nØyvind A. Holm (1):\n      .gitignore: \"git-verify-commit\" is a generated file\n"}]}