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