Documentation / RelNotes / 1.7.9.txton commit Update draft release notes in preparation for 1.7.9-rc0 (ec33015)
   1Git v1.7.9 Release Notes (draft)
   2========================
   3
   4Updates since v1.7.8
   5--------------------
   6
   7 * gitk updates accumulated since early 2011.
   8
   9 * git-gui updated to 0.16.0.
  10
  11 * git-p4 (in contrib/) updates.
  12
  13 * Git uses gettext to translate its most common interface messages
  14   into the user's language if translations are available and the
  15   locale is appropriately set. Distributors can drop in new PO files
  16   in po/ to add new translations.
  17
  18 * Porcelain commands like "git reset" did not distinguish deletions
  19   and type-changes from ordinary modification, and reported them with
  20   the same 'M' moniker. They now use 'D' (for deletion) and 'T' (for
  21   type-change) to match "git status -s" and "git diff --name-status".
  22
  23 * The code to handle username/password for HTTP transaction used in
  24   "git push" & "git fetch" learned to talk "credential API" to
  25   external programs to cache or store them, to allow integration with
  26   platform native keychain mechanisms.
  27
  28 * The prompted input in the terminal use our own getpass() replacement
  29   when possible. HTTP transactions used to ask username without echoing
  30   back what was typed, but with this change you will see it as you type.
  31
  32 * The internal of "revert/cherry-pick" has been tweaked to prepare
  33   building more generic "sequencer" on top of the implementation that
  34   drives them.
  35
  36 * "git add" learned to stream large files directly into a packfile
  37   instead of writing them into individual loose object files.
  38
  39 * "git branch -m <current branch> HEAD" is an obvious no-op and is
  40   now allowed.
  41
  42 * "git checkout -B <current branch> <elsewhere>" is a more intuitive
  43   way to spell "git reset --keep <elsewhere>".
  44
  45 * "git checkout" and "git merge" learned "--no-overwrite-ignore" option
  46   to tell Git that untracked and ignored files are not expendable.
  47
  48 * "git commit --amend" learned "--no-edit" option to say that the
  49   user is amending the tree being recorded, without updating the
  50   commit log message.
  51
  52 * "git commit" and "git reset" re-learned the optimization to prime
  53   the cache-tree information in the index, which makes it faster to
  54   write a tree object out after the index entries are updated.
  55
  56 * "git commit" detects and rejects an attempt to stuff NUL byte in
  57   the commit log message.
  58
  59 * fsck and prune are relatively lengthy operations that still go
  60   silent while making the end-user wait. They learned to give progress
  61   output like other slow operations.
  62
  63 * The set of built-in function-header patterns for various languages
  64   knows MATLAB.
  65
  66 * "git log --follow" honors the rename threshold score given with the
  67   -M option (e.g. "-M50%").
  68
  69 * "git log --format='<format>'" learned new %g[nNeE] specifiers to
  70   show information from the reflog entries when warlking the reflog
  71   (i.e. with "-g").
  72
  73 * "git pull" can be used to fetch and merge an annotated/signed tag,
  74   instead of the tip of a topic branch. The GPG signature from the
  75   signed tag is recorded in the resulting merge commit for later
  76   auditing.
  77
  78 * "git branch --edit-description" can be used to add descriptive text
  79   to explain what a topic branch is about.
  80
  81 * "git fmt-merge-msg" learned to take the branch description into
  82   account when preparing a merge summary that "git merge" records
  83   when merging a local branch.
  84
  85 * "git request-pull" has been updated to convey more information
  86   useful for integrators to decide if a topic is worth merging and
  87   what is pulled is indeed what the requestor asked to pull,
  88   including:
  89
  90   - the tip of the branch being requested to be merged;
  91   - the branch description describing what the topic is about;
  92   - the contents of the annotated tag, when requesting to pull a tag.
  93
  94 * "git pull" learned to notice 'pull.rebase' configuration variable,
  95   which serves as a global fallback for setting 'branch.<name>.rebase'
  96   configuration variable per branch.
  97
  98 * "git tag" learned "--cleanup" option to control how the whitespaces
  99   and empty lines in tag message are cleaned up.
 100
 101 * "gitweb" learned to show side-by-side diff.
 102
 103Also contains minor documentation updates and code clean-ups.
 104
 105
 106Fixes since v1.7.8
 107------------------
 108
 109 * The replacement implemention for snprintf used on platforms with
 110   native snprintf that is broken did not use va_copy correctly.
 111   (merge a9bfbc5 jk/maint-snprintf-va-copy later to maint).
 112
 113 * git native connection going over TCP (not over SSH) did not set
 114   SO_KEEPALIVE option which failed to receive link layer errors.
 115   (merge e47a858 ew/keepalive later to maint).
 116
 117 * LF-to-CRLF streaming filter replaced all LF with CRLF, which might
 118   be techinically correct but not friendly to people who are trying
 119   to recover from earlier mistakes of using CRLF in the repository
 120   data in the first place. It now refrains from doing so for LF that
 121   follows a CR.
 122   (merge 8496f56 jc/maint-lf-to-crlf-keep-crlf later to maint).
 123
 124 * "git checkout -m" did not recreate the conflicted state in a "both
 125   sides added, without any common ancestor version" conflict
 126   situation.
 127   (merge 5cd7fadc jc/checkout-m-twoway later to maint).
 128
 129 * "git cherry-pick $commit" (not a range) created an unnecessary
 130   sequencer state and interfered with valid workflow to use the
 131   command during a session to cherry-pick multiple commits.
 132   (merge d596118 jn/maint-sequencer-fixes later to maint).
 133
 134 * You could make "git commit" segfault by giving the "--no-message"
 135   option.
 136   (merge 03f94ae jk/maint-strbuf-missing-init later to maint).
 137
 138 * "fast-import" did not correctly update an existing notes tree,
 139   possibly corrupting the fan-out.
 140
 141 * "git fetch-pack" accepted unqualified refs that do not begin with
 142   refs/ by mistake and compensated it by matching the refspec with
 143   tail-match, which was doubly wrong. This broke fetching from a
 144   repository with a funny named ref "refs/foo/refs/heads/master" and a
 145   'master' branch with "git fetch-pack refs/heads/master", as the
 146   command incorrectly considered the former a "match".
 147   (merge bab8d28 jk/fetch-no-tail-match-refs later to maint).
 148
 149 * "git mv" gave suboptimal error/warning messages when it overwrites
 150   target files. It also did not pay attention to "-v" option.
 151   (merge 534376c jk/maint-mv later to maint).
 152
 153 * When a "reword" action in "git rebase -i" failed to run "commit --amend",
 154   we did not give the control back to the user to resolve the situation, and
 155   instead kept the original commit log message.
 156   (merge 0becb3e aw/rebase-i-stop-on-failure-to-amend later to maint).
 157
 158 * Authenticated "git push" over dumb HTTP were broken with a recent
 159   change and failed without asking for password when username is
 160   given.
 161   (merge a4ddbc3 jk/maint-push-over-dav later to maint).
 162
 163 * "git push" to an empty repository over HTTP were broken with a
 164   recent change to the ref handling.
 165   (merge 02f7914 jk/http-push-to-empty later to maint).
 166
 167 * "git push -v" forgot how to be verbose by mistake. It now properly is.
 168   (merge bd2c86e jk/maint-push-v-is-verbose later to maint).
 169
 170 * gitweb did not correctly fall back to configured $fallback_encoding
 171   that is not 'latin1'.
 172   (merge b13e3ea jn/maint-gitweb-utf8-fix later to maint).
 173
 174--
 175exec >/var/tmp/1
 176O=v1.7.8.1-384-g2b6dd6a
 177echo O=$(git describe master)
 178git log --first-parent --oneline --reverse ^$O master
 179echo
 180git shortlog --no-merges ^$O ^maint master