Documentation / RelNotes / 1.7.8.txton commit Merge branch 'maint' (cf8ddee)
   1Git v1.7.8 Release Notes (draft)
   2================================
   3
   4Updates since v1.7.7
   5--------------------
   6
   7 * The build procedure has been taught to take advantage of computed
   8   dependency automatically when the complier supports it.
   9
  10 * The date parser now accepts timezone designators that lack minutes
  11   part and also has a colon between "hh:mm".
  12
  13 * On some BSD systems, adding +s bit on directories is detrimental
  14   (it is not necessary on BSD to begin with). The installation
  15   procedure has been updated to take this into account.
  16
  17 * The contents of the /etc/mailname file, if exists, is used as the
  18   default value of the hostname part of the committer/author e-mail.
  19
  20 * "git am" learned how to read from patches generated by Hg.
  21
  22 * "git archive" talking with a remote repository can report errors
  23   from the remote side in a more informative way.
  24
  25 * "git branch" learned an explicit --list option to ask for branches
  26   listed, optionally with a glob matching pattern to limit its output.
  27
  28 * "git check-attr" learned "--cached" option to look at .gitattributes
  29   files from the index, not from the working tree.
  30
  31 * Variants of "git cherry-pick" and "git revert" that take multiple
  32   commits learned to "--continue".
  33
  34 * Errors at the network layer is logged by "git daemon".
  35
  36 * "git diff" learned "--minimal" option to spend extra cycles to come
  37   up with a minimal patch output.
  38
  39 * "git fetch" learned to honor transfer.fsckobjects configuration to
  40   validate the objects that were received from the other end, just like
  41   "git receive-pack" (the receiving end of "git push") does.
  42
  43 * "git fetch" makes sure that the set of objects it received from the
  44   other end actually completes the history before updating the refs.
  45   "git receive-pack" (the receiving end of "git push") learned to do the
  46   same.
  47
  48 * "git for-each-ref" learned "%(contents:subject)", "%(contents:body)"
  49   and "%(contents:signature)". The last one is useful for signed tags.
  50
  51 * "git grep" used to incorrectly pay attention to .gitignore files
  52   scattered in the directory it was working in even when "--no-index"
  53   option was used. It no longer does this. The "--exclude-standard"
  54   option needs to be given to explicitly activate the ignore
  55   mechanism.
  56
  57 * "git grep" learned "--untracked" option, where given patterns are
  58    searched in untracked (but not ignored) files as well as tracked
  59    files in the working tree, so that matches in new but not yet
  60    added files do not get missed.
  61
  62 * "git ls-remote" learned to respond to "-h"(elp) requests.
  63
  64 * "git send-email" learned to respond to "-h"(elp) requests.
  65
  66 * "git send-email" allows the value given to sendemail.aliasfile to begin
  67   with "~/" to refer to the $HOME directory.
  68
  69 * "git send-email" forces use of Authen::SASL::Perl to work around
  70   issues between Authen::SASL::Cyrus and AUTH PLAIN/LOGIN.
  71
  72 * "git stash" learned "--include-untracked" option to stash away
  73   untracked/ignored cruft from the working tree.
  74
  75 * "git submodule update" learned to honor "none" as the value for
  76   submodule.<name>.update to specify that the named submodule should
  77   not be checked out by default.
  78
  79 * When populating a new submodule directory with "git submodule init",
  80   the $GIT_DIR metainformation directory for submodules is created inside
  81   $GIT_DIR/modules/<name>/ directory of the superproject and referenced
  82   via the gitfile mechanism. This is to make it possible to switch
  83   between commits in the superproject that has and does not have the
  84   submodule in the tree without re-cloning.
  85
  86 * "mediawiki" remote helper can interact with (surprise!) MediaWiki
  87   with "git fetch" & "git push".
  88
  89 * "gitweb" leaked unescaped control characters from syntax hiliter
  90   outputs.
  91
  92
  93Also contains other documentation updates and minor code cleanups.
  94
  95
  96Fixes since v1.7.7
  97------------------
  98
  99Unless otherwise noted, all fixes in the 1.7.7.X maintenance track are
 100included in this release.
 101
 102 * We used to drop error messages from libcurl on certain kinds of
 103   errors.
 104   (merge be22d92eac8 jn/maint-http-error-message later to maint).
 105
 106 * Error report from smart HTTP transport, when the connection was
 107   broken in the middle of a transfer, showed a useless message on
 108   a corrupt packet.
 109   (merge 6cdf022 sp/smart-http-failure later to maint).
 110
 111 * Adding many refs to the local repository in one go (e.g. "git fetch"
 112   that fetches many tags) and looking up a ref by name in a repository
 113   with too many refs were unnecessarily slow.
 114   (merge 17d68a54d jp/get-ref-dir-unsorted later to maint).
 115
 116 * After incorrectly written third-party tools store a tag object in
 117   HEAD, git diagnosed it as a repository corruption and refused to
 118   proceed in order to avoid spreading the damage. We now gracefully
 119   recover from such a situation by pretending as if the commit that
 120   is pointed at by the tag were in HEAD.
 121   (merge baf18fc nd/maint-autofix-tag-in-head later to maint).
 122
 123 * "git apply --whitespace=error" did not bother to report the exact
 124   line number in the patch that introduced new blank lines at the end
 125   of the file.
 126   (merge 8557263 jc/apply-blank-at-eof-fix later to maint).
 127
 128
 129 * "git remote rename $a $b" were not careful to match the remote name
 130   against $a (i.e. source side of the remote nickname).
 131   (merge b52d00aed mz/remote-rename later to maint).
 132
 133 * "git diff $tree $path" used to apply the pathspec at the output stage,
 134   reading the whole tree, wasting resources.
 135   (merge 2f88c1970 jc/diff-index-unpack later to maint).
 136
 137 * "git diff --[num]stat" used to use the number of lines of context
 138   different from the default, potentially giving different results from
 139   "git diff | diffstat" and confusing the users.
 140   (merge f01cae918 jc/maint-diffstat-numstat-context later to maint).
 141
 142 * The code to check for updated submodules during a "git fetch" of the
 143   superproject had an unnecessary quadratic loop.
 144   (merge 6859de45 jk/maint-fetch-submodule-check-fix later to maint).
 145
 146 * "git fetch" from a large bundle did not enable the progress output.
 147   (merge be042aff jc/maint-bundle-too-quiet later to maint).
 148
 149 * When "git fsck --lost-and-found" found that an empty blob object in the
 150   object store is unreachable, it incorrectly reported an error after
 151   writing the lost blob out successfully.
 152   (merge eb726f2d jc/maint-fsck-fwrite-size-check later to maint).
 153
 154 * "git filter-branch" did not refresh the index before checking that the
 155   working tree was clean.
 156   (merge 5347a50f jk/filter-branch-require-clean-work-tree later to maint).
 157
 158 * "git grep $tree" when run with multiple threads had an unsafe access to
 159   the object database that should have been protected with mutex.
 160   (merge 8cb5775b2 nm/grep-object-sha1-lock later to maint).
 161
 162 * The "--ancestry-path" option to "git log" and friends misbehaved in a
 163   history with complex criss-cross merges and showed an uninteresting
 164   side history as well.
 165   (merge c05b988a6 bk/ancestry-path later to maint).
 166
 167 * "git merge" did not understand ":/<pattern>" as a way to name a commit.
 168
 169 * "git mergetool" learned to use its arguments as pathspec, not a path to
 170   the file that may not even have any conflict.
 171   (merge 6d9990a jm/mergetool-pathspec later to maint).
 172
 173 * Tests with --valgrind failed to find "mergetool" scriptlets.
 174   (merge ee0d7bf92 tr/mergetool-valgrind later to maint).
 175
 176 * "git patch-id" miscomputed the patch-id in a patch that has a line longer
 177   than 1kB.
 178   (merge b9ab810b ms/patch-id-with-overlong-line later to maint).
 179
 180 * When an "exec" insn failed after modifying the index and/or the working
 181   tree during "rebase -i", we now check and warn that the changes need to
 182   be cleaned up.
 183   (merge 1686519a mm/rebase-i-exec-edit later to maint).
 184
 185 * "gitweb" used to produce a non-working link while showing the contents
 186   of a blob, when JavaScript actions are enabled.
 187   (merge 2b07ff3ff ps/gitweb-js-with-lineno later to maint).
 188
 189---
 190exec >/var/tmp/1
 191O=v1.7.7-289-gb73c683
 192echo O=$(git describe --always master)
 193git log --first-parent --oneline --reverse ^$O master
 194echo
 195git shortlog --no-merges ^$O master