What's cooking (2018/08 #01)

Junio C Hamano committed Aug 2, 2018 at 16:00 UTC c8dfb872eb8aaeb9cbffc71bf132ef880f919e97
1 file changed +1035 -1006
whats-cooking.txt
+1035 -1006
@@ -1,10 +1,10 @@
1 To: git@vger.kernel.org
2 Bcc: lwn@lwn.net
3 -Subject: What's cooking in git.git (Jul 2018, #03; Wed, 25)
4 -X-master-at: ffc6fa0e396238de3a30623912980263b4f283ab
5 -X-next-at: a71716f1adea8665ad1231d8d929021f562d287b
3 +Subject: What's cooking in git.git (Aug 2018, #01; Thu, 2)
4 +X-master-at: 1d89318c48d233d52f1db230cf622935ac3c69fa
5 +X-next-at: f7a957e2e7d6c0922e75e5f5e5e1a0bb01cfe2bb
6
7 -What's cooking in git.git (Jul 2018, #03; Wed, 25)
7 +What's cooking in git.git (Aug 2018, #01; Thu, 2)
8 --------------------------------------------------
9
10 Here are the topics that have been cooking. Commits prefixed with
@@ -13,14 +13,7 @@ Here are the topics that have been cooking. Commits prefixed with
13 the integration branches, but I am still holding onto them.
14
15 Many topics have moved to 'master' and 'next' from 'next' to 'pu'
16 -respectively. As I needed to re-resolve semantic merge conflicts
17 -while reordering some topics (i.e. some that were merged earlier in
18 -'pu' are left in 'pu' while another topic that had interactions with
19 -them and required evil merge to resolve semantic conflicts
20 -leapfrogged to 'next'---the semantic conflict resolution then need
21 -to happen at a different merge than done earlier in 'pu' while
22 -rebuilding today's integration), I didn't have enough time to spend
23 -on new topics posted to the list in the past few days.
16 +respectively.
17
18 You can find the changes described here in the integration branches
19 of the repositories listed at
@@ -30,648 +23,766 @@ of the repositories listed at
23 --------------------------------------------------
24 [Graduated to "master"]
25
33 -* ag/rebase-p (2018-07-06) 1 commit
34 - (merged to 'next' on 2018-07-18 at c36ebba99b)
35 - + git-rebase--preserve-merges: fix formatting of todo help message
36 -
37 - The help message shown in the editor to edit todo list in "rebase -p"
38 - has regressed recently, which has been corrected.
39 -
40 -
41 -* as/sequencer-customizable-comment-char (2018-07-16) 1 commit
42 - (merged to 'next' on 2018-07-18 at 4163e23f29)
43 - + sequencer: use configured comment character
44 -
45 - Honor core.commentchar when preparing the list of commits to replay
46 - in "rebase -i".
47 -
26 +* ab/checkout-default-remote (2018-06-11) 8 commits
27 + (merged to 'next' on 2018-07-24 at 6ef645f485)
28 + + checkout & worktree: introduce checkout.defaultRemote
29 + + checkout: add advice for ambiguous "checkout <branch>"
30 + + builtin/checkout.c: use "ret" variable for return
31 + + checkout: pass the "num_matches" up to callers
32 + + checkout.c: change "unique" member to "num_matches"
33 + + checkout.c: introduce an *_INIT macro
34 + + checkout.h: wrap the arguments to unique_tracking_name()
35 + + checkout tests: index should be clean after dwim checkout
36 + (this branch is used by ab/test-must-be-empty.)
37
49 -* bb/pedantic (2018-07-09) 8 commits
50 - (merged to 'next' on 2018-07-18 at e9d075e8ed)
51 - + utf8.c: avoid char overflow
52 - + string-list.c: avoid conversion from void * to function pointer
53 - + sequencer.c: avoid empty statements at top level
54 - + convert.c: replace "\e" escapes with "\033".
55 - + fixup! refs/refs-internal.h: avoid forward declaration of an enum
56 - + refs/refs-internal.h: avoid forward declaration of an enum
57 - + fixup! connect.h: avoid forward declaration of an enum
58 - + connect.h: avoid forward declaration of an enum
59 - (this branch is used by bb/make-developer-pedantic.)
38 + "git checkout" and "git worktree add" learned to honor
39 + checkout.defaultRemote when auto-vivifying a local branch out of a
40 + remote tracking branch in a repository with multiple remotes that
41 + have tracking branches that share the same names.
42
61 - The codebase has been updated to compile cleanly with -pedantic
62 - option.
43
44 +* bc/object-id (2018-07-16) 16 commits
45 + (merged to 'next' on 2018-07-24 at 23680778a9)
46 + + pretty: switch hard-coded constants to the_hash_algo
47 + + sha1-file: convert constants to uses of the_hash_algo
48 + + log-tree: switch GIT_SHA1_HEXSZ to the_hash_algo->hexsz
49 + + diff: switch GIT_SHA1_HEXSZ to use the_hash_algo
50 + + builtin/merge-recursive: make hash independent
51 + + builtin/merge: switch to use the_hash_algo
52 + + builtin/fmt-merge-msg: make hash independent
53 + + builtin/update-index: simplify parsing of cacheinfo
54 + + builtin/update-index: convert to using the_hash_algo
55 + + refs/files-backend: use the_hash_algo for writing refs
56 + + sha1-name: use the_hash_algo when parsing object names
57 + + strbuf: allocate space with GIT_MAX_HEXSZ
58 + + commit: express tree entry constants in terms of the_hash_algo
59 + + hex: switch to using the_hash_algo
60 + + tree-walk: replace hard-coded constants with the_hash_algo
61 + + cache: update object ID functions for the_hash_algo
62
65 -* bb/unicode-11-width (2018-07-09) 1 commit
66 - (merged to 'next' on 2018-07-18 at 075648ed37)
67 - + unicode: update the width tables to Unicode 11
63 + Conversion from uchar[40] to struct object_id continues.
64
69 - The character display width table has been updated to match the
70 - latest Unicode standard.
65
66 +* bc/sequencer-export-work-tree-as-well (2018-07-16) 1 commit
67 + (merged to 'next' on 2018-07-24 at 0b83ade721)
68 + + sequencer: pass absolute GIT_WORK_TREE to exec commands
69
73 -* bc/send-email-auto-cte (2018-07-09) 4 commits
74 - (merged to 'next' on 2018-07-18 at d16c2a301a)
75 - + docs: correct RFC specifying email line length
76 - + send-email: automatically determine transfer-encoding
77 - + send-email: accept long lines with suitable transfer encoding
78 - + send-email: add an auto option for transfer encoding
70 + "git rebase" started exporting GIT_DIR environment variable and
71 + exposing it to hook scripts when part of it got rewritten in C.
72 + Instead of matching the old scripted Porcelains' behaviour,
73 + compensate by also exporting GIT_WORK_TREE environment as well to
74 + lessen the damage. This can harm existing hooks that want to
75 + operate on different repository, but the current behaviour is
76 + already broken for them anyway.
77
80 - The content-transfer-encoding of the message "git send-email" sends
81 - out by default was 8bit, which can cause trouble when there is an
82 - overlong line to bust RFC 5322/2822 limit. A new option 'auto' to
83 - automatically switch to quoted-printable when there is such a line
84 - in the payload has been introduced and is made the default.
78
79 +* bp/test-drop-caches-for-windows (2018-07-12) 1 commit
80 + (merged to 'next' on 2018-07-24 at 257bb336c6)
81 + + handle lower case drive letters on Windows
82
87 -* bp/log-ref-write-fd-with-strbuf (2018-07-10) 1 commit
88 - (merged to 'next' on 2018-07-18 at 25a3a99528)
89 - + convert log_ref_write_fd() to use strbuf
83 + A test helper update for Windows.
84
91 - Code clean-up.
85
86 +* ds/commit-graph-fsck (2018-07-16) 23 commits
87 + (merged to 'next' on 2018-07-24 at 6a802adc7a)
88 + + coccinelle: update commit.cocci
89 + + commit-graph: update design document
90 + + gc: automatically write commit-graph files
91 + + commit-graph: add '--reachable' option
92 + + commit-graph: use string-list API for input
93 + + fsck: verify commit-graph
94 + + commit-graph: verify contents match checksum
95 + + commit-graph: test for corrupted octopus edge
96 + + commit-graph: verify commit date
97 + + commit-graph: verify generation number
98 + + commit-graph: verify parent list
99 + + commit-graph: verify root tree OIDs
100 + + commit-graph: verify objects exist
101 + + commit-graph: verify corrupt OID fanout and lookup
102 + + commit-graph: verify required chunks are present
103 + + commit-graph: verify catches corrupt signature
104 + + commit-graph: add 'verify' subcommand
105 + + commit-graph: load a root tree from specific graph
106 + + commit: force commit to parse from object database
107 + + commit-graph: parse commit from chosen graph
108 + + commit-graph: fix GRAPH_MIN_SIZE
109 + + commit-graph: UNLEAK before die()
110 + + t5318-commit-graph.sh: use core.commitGraph
111 + (this branch is used by ds/commit-graph-with-grafts, ds/reachable and jt/commit-graph-per-object-store.)
112
94 -* bw/ref-in-want (2018-06-28) 8 commits
95 - (merged to 'next' on 2018-07-18 at 7e9f8db37c)
96 - + fetch-pack: implement ref-in-want
97 - + fetch-pack: put shallow info in output parameter
98 - + fetch: refactor to make function args narrower
99 - + fetch: refactor fetch_refs into two functions
100 - + fetch: refactor the population of peer ref OIDs
101 - + upload-pack: test negotiation with changing repository
102 - + upload-pack: implement ref-in-want
103 - + test-pkt-line: add unpack-sideband subcommand
104 - (this branch is used by bw/fetch-pack-i18n, jt/connectivity-check-after-unshallow, jt/partial-clone-fsck-connectivity and jt/tags-to-promised-blobs-fix.)
113 + "git fsck" learns to make sure the optional commit-graph file is in
114 + a sane state.
115
106 - Protocol v2 has been updated to allow slightly out-of-sync set of
107 - servers to work together to serve a single client, which would be
108 - useful with load-balanced servers that talk smart HTTP transport.
116
117 +* en/dirty-merge-fixes (2018-07-11) 9 commits
118 + (merged to 'next' on 2018-07-24 at 7b6ca3507c)
119 + + merge: fix misleading pre-merge check documentation
120 + + merge-recursive: enforce rule that index matches head before merging
121 + + t6044: add more testcases with staged changes before a merge is invoked
122 + + merge-recursive: fix assumption that head tree being merged is HEAD
123 + + merge-recursive: make sure when we say we abort that we actually abort
124 + + t6044: add a testcase for index matching head, when head doesn't match HEAD
125 + + t6044: verify that merges expected to abort actually abort
126 + + index_has_changes(): avoid assuming operating on the_index
127 + + read-cache.c: move index_has_changes() from merge.c
128
111 -* en/apply-comment-fix (2018-06-28) 1 commit
112 - (merged to 'next' on 2018-07-18 at 31d818f17d)
113 - + apply: fix grammar error in comment
129 + The recursive merge strategy did not properly ensure there was no
130 + change between HEAD and the index before performing its operation,
131 + which has been corrected.
132
133
116 -* en/rebase-consistency (2018-06-27) 9 commits
117 - (merged to 'next' on 2018-07-18 at d597206c79)
118 - + git-rebase: make --allow-empty-message the default
119 - + t3401: add directory rename testcases for rebase and am
120 - + git-rebase.txt: document behavioral differences between modes
121 - + directory-rename-detection.txt: technical docs on abilities and limitations
122 - + git-rebase.txt: address confusion between --no-ff vs --force-rebase
123 - + git-rebase: error out when incompatible options passed
124 - + t3422: new testcases for checking when incompatible options passed
125 - + git-rebase.sh: update help messages a bit
126 - + git-rebase.txt: document incompatible options
134 +* en/t6036-merge-recursive-tests (2018-07-11) 6 commits
135 + (merged to 'next' on 2018-07-24 at 75055cb6e1)
136 + + t6036: add a failed conflict detection case: regular files, different modes
137 + + t6036: add a failed conflict detection case with conflicting types
138 + + t6036: add a failed conflict detection case with submodule add/add
139 + + t6036: add a failed conflict detection case with submodule modify/modify
140 + + t6036: add a failed conflict detection case with symlink add/add
141 + + t6036: add a failed conflict detection case with symlink modify/modify
142
128 - "git rebase" behaved slightly differently depending on which one of
129 - the three backends gets used; this has been documented and an
130 - effort to make them more uniform has begun.
143 + Tests to cover various conflicting cases have been added for
144 + merge-recursive.
145
146
133 -* en/t5407-rebase-m-fix (2018-06-28) 1 commit
134 - (merged to 'next' on 2018-07-18 at 459875daeb)
135 - + t5407: fix test to cover intended arguments
147 +* en/t6036-recursive-corner-cases (2018-07-12) 2 commits
148 + (merged to 'next' on 2018-07-24 at b7b3514ef4)
149 + + t6036: fix broken && chain in sub-shell
150 + + t6036: add lots of detail for directory/file conflicts in recursive case
151
152 + Tests to cover more D/F conflict cases have been added for
153 + merge-recursive.
154
138 -* es/test-lint-one-shot-export (2018-07-16) 5 commits
139 - (merged to 'next' on 2018-07-18 at 26a6124963)
140 - + t/check-non-portable-shell: detect "FOO=bar shell_func"
141 - + t/check-non-portable-shell: make error messages more compact
142 - + t/check-non-portable-shell: stop being so polite
143 - + t6046/t9833: fix use of "VAR=VAL cmd" with a shell function
144 - + Merge branch 'jc/t3404-one-shot-export-fix' into es/test-lint-one-shot-export
145 - (this branch uses jc/t3404-one-shot-export-fix.)
155
147 - Look for broken use of "VAR=VAL shell_func" in test scripts as part
148 - of test-lint.
156 +* en/t6042-insane-merge-rename-testcases (2018-07-03) 3 commits
157 + (merged to 'next' on 2018-07-24 at 65c80f72da)
158 + + t6042: add testcase covering long chains of rename conflicts
159 + + t6042: add testcase covering rename/rename(2to1)/delete/delete conflict
160 + + t6042: add testcase covering rename/add/delete conflict type
161
162 + Various glitches in the heuristics of merge-recursive strategy have
163 + been documented in new tests.
164
151 -* hs/push-cert-check-cleanup (2018-07-11) 2 commits
152 - (merged to 'next' on 2018-07-18 at 1ed25fbd77)
153 - + gpg-interface: make parse_gpg_output static and remove from interface header
154 - + builtin/receive-pack: use check_signature from gpg-interface
155 - (this branch is used by hs/gpgsm.)
165 + I am not sure if there is a single "correct" answer everybody can
166 + agree on for each of these "insane" cases, though.
167
157 - Code clean-up.
168
169 +* en/t7405-recursive-submodule-conflicts (2018-07-11) 3 commits
170 + (merged to 'next' on 2018-07-24 at 6cb7d02298)
171 + + t7405: verify 'merge --abort' works after submodule/path conflicts
172 + + t7405: add a directory/submodule conflict
173 + + t7405: add a file/submodule conflict
174
160 -* jc/t3404-one-shot-export-fix (2018-07-12) 1 commit
161 - (merged to 'next' on 2018-07-18 at e15a79dca7)
162 - + t3404: fix use of "VAR=VAL cmd" with a shell function
163 - (this branch is used by es/test-lint-one-shot-export.)
175 + Tests to cover conflict cases that involve submodules have been
176 + added for merge-recursive.
177
165 - Correct a broken use of "VAR=VAL shell_func" in a test.
178
179 +* es/chain-lint-in-subshell (2018-07-31) 11 commits
180 + (merged to 'next' on 2018-07-31 at 4ce2a8faa4)
181 + + t/chainlint.sed: drop extra spaces from regex character class
182 + (merged to 'next' on 2018-07-24 at 9370bbdfaf)
183 + + t/chainlint: add chainlint "specialized" test cases
184 + + t/chainlint: add chainlint "complex" test cases
185 + + t/chainlint: add chainlint "cuddled" test cases
186 + + t/chainlint: add chainlint "loop" and "conditional" test cases
187 + + t/chainlint: add chainlint "nested subshell" test cases
188 + + t/chainlint: add chainlint "one-liner" test cases
189 + + t/chainlint: add chainlint "whitespace" test cases
190 + + t/chainlint: add chainlint "basic" test cases
191 + + t/Makefile: add machinery to check correctness of chainlint.sed
192 + + t/test-lib: teach --chain-lint to detect broken &&-chains in subshells
193 + (this branch uses es/test-fixes.)
194
168 -* jk/empty-pick-fix (2018-07-11) 2 commits
169 - (merged to 'next' on 2018-07-18 at 43bfa862f2)
170 - + sequencer: don't say BUG on bogus input
171 - + sequencer: handle empty-set cases consistently
195 + Look for broken "&&" chains that are hidden in subshell, many of
196 + which have been found and corrected.
197
173 - Handling of an empty range by "git cherry-pick" was inconsistent
174 - depending on how the range ended up to be empty, which has been
175 - corrected.
198
199 +* es/test-fixes (2018-07-17) 26 commits
200 + (merged to 'next' on 2018-07-24 at fd6796a3ef)
201 + + t5608: fix broken &&-chain
202 + + t9119: fix broken &&-chains
203 + + t9000-t9999: fix broken &&-chains
204 + + t7000-t7999: fix broken &&-chains
205 + + t6000-t6999: fix broken &&-chains
206 + + t5000-t5999: fix broken &&-chains
207 + + t4000-t4999: fix broken &&-chains
208 + + t3030: fix broken &&-chains
209 + + t3000-t3999: fix broken &&-chains
210 + + t2000-t2999: fix broken &&-chains
211 + + t1000-t1999: fix broken &&-chains
212 + + t0000-t0999: fix broken &&-chains
213 + + t9814: simplify convoluted check that command correctly errors out
214 + + t9001: fix broken "invoke hook" test
215 + + t7810: use test_expect_code() instead of hand-rolled comparison
216 + + t7400: fix broken "submodule add/reconfigure --force" test
217 + + t7201: drop pointless "exit 0" at end of subshell
218 + + t6036: fix broken "merge fails but has appropriate contents" tests
219 + + t5505: modernize and simplify hard-to-digest test
220 + + t5406: use write_script() instead of birthing shell script manually
221 + + t5405: use test_must_fail() instead of checking exit code manually
222 + + t/lib-submodule-update: fix "absorbing" test
223 + + t: drop unnecessary terminating semicolon in subshell
224 + + t: use sane_unset() rather than 'unset' with broken &&-chain
225 + + t: use test_write_lines() instead of series of 'echo' commands
226 + + t: use test_might_fail() instead of manipulating exit code manually
227 + (this branch is used by es/chain-lint-in-subshell.)
228
178 -* jk/fetch-all-peeled-fix (2018-07-06) 1 commit
179 - (merged to 'next' on 2018-07-18 at d06c6f1665)
180 - + t5500: prettify non-commit tag tests
229 + Test clean-up and corrections.
230
182 - Test modernization.
231
232 +* is/parsing-line-range (2018-06-15) 2 commits
233 + (merged to 'next' on 2018-07-24 at a06b453f32)
234 + + log: prevent error if line range ends past end of file
235 + + blame: prevent error if range ends past end of file
236
185 -* jk/for-each-ref-icase (2018-07-03) 3 commits
186 - (merged to 'next' on 2018-07-18 at 4c86d62adb)
187 - + ref-filter: avoid backend filtering with --ignore-case
188 - + for-each-ref: consistently pass WM_IGNORECASE flag
189 - + t6300: add a test for --ignore-case
237 + Parsing of -L[<N>][,[<M>]] parameters "git blame" and "git log"
238 + take has been tweaked.
239
191 - The "--ignore-case" option of "git for-each-ref" (and its friends)
192 - did not work correctly, which has been fixed.
240
241 +* jk/fsck-gitmodules-gently (2018-07-16) 6 commits
242 + (merged to 'next' on 2018-07-24 at 5b15c800db)
243 + + fsck: downgrade gitmodulesParse default to "info"
244 + + fsck: split ".gitmodules too large" error from parse failure
245 + + fsck: silence stderr when parsing .gitmodules
246 + + config: add options parameter to git_config_from_mem
247 + + config: add CONFIG_ERROR_SILENT handler
248 + + config: turn die_on_error into caller-facing enum
249
195 -* jt/connectivity-check-after-unshallow (2018-07-03) 1 commit
196 - (merged to 'next' on 2018-07-18 at 8e7ee889c3)
197 - + fetch-pack: write shallow, then check connectivity
198 - (this branch is used by jt/partial-clone-fsck-connectivity and jt/tags-to-promised-blobs-fix; uses bw/ref-in-want; is tangled with bw/fetch-pack-i18n.)
250 + Recent "security fix" to pay attention to contents of ".gitmodules"
251 + while accepting "git push" was a bit overly strict than necessary,
252 + which has been adjusted.
253
200 - "git fetch" failed to correctly validate the set of objects it
201 - received when making a shallow history deeper, which has been
202 - corrected.
254
255 +* jk/has-uncommitted-changes-fix (2018-07-11) 1 commit
256 + (merged to 'next' on 2018-07-24 at 2ea14c0afb)
257 + + has_uncommitted_changes(): fall back to empty tree
258
205 -* jt/partial-clone-fsck-connectivity (2018-07-09) 2 commits
206 - (merged to 'next' on 2018-07-18 at 968fd9c9f0)
207 - + clone: check connectivity even if clone is partial
208 - + upload-pack: send refs' objects despite "filter"
209 - (this branch is used by jt/tags-to-promised-blobs-fix; uses bw/ref-in-want and jt/connectivity-check-after-unshallow; is tangled with bw/fetch-pack-i18n.)
259 + "git pull --rebase" on a corrupt HEAD caused a segfault. In
260 + general we substitute an empty tree object when running the in-core
261 + equivalent of the diff-index command, and the codepath has been
262 + corrected to do so as well to fix this issue.
263
211 - Partial clone support of "git clone" has been updated to correctly
212 - validate the objects it receives from the other side. The server
213 - side has been corrected to send objects that are directly
214 - requested, even if they may match the filtering criteria (e.g. when
215 - doing a "lazy blob" partial clone).
264
265 +* jm/cache-entry-from-mem-pool (2018-07-03) 8 commits
266 + (merged to 'next' on 2018-07-24 at 9be51a88dc)
267 + + block alloc: add validations around cache_entry lifecyle
268 + + block alloc: allocate cache entries from mem_pool
269 + + mem-pool: fill out functionality
270 + + mem-pool: add life cycle management functions
271 + + mem-pool: only search head block for available space
272 + + block alloc: add lifecycle APIs for cache_entry structs
273 + + read-cache: teach make_cache_entry to take object_id
274 + + read-cache: teach refresh_cache_entry to take istate
275
218 -* kn/userdiff-php (2018-07-06) 2 commits
219 - (merged to 'next' on 2018-07-18 at 9a533dc33a)
220 - + userdiff: support new keywords in PHP hunk header
221 - + t4018: add missing test cases for PHP
276 + For a large tree, the index needs to hold many cache entries
277 + allocated on heap. These cache entries are now allocated out of a
278 + dedicated memory pool to amortize malloc(3) overhead.
279
223 - The userdiff pattern for .php has been updated.
280 + This makes each cache-entry larger by either 4 or 8 bytes, which is
281 + a bit sad, though.
282
283
226 -* mh/fast-import-no-diff-delta-empty (2018-07-06) 1 commit
227 - (merged to 'next' on 2018-07-18 at eb393871f4)
228 - + fast-import: do not call diff_delta() with empty buffer
284 +* jm/send-email-tls-auth-on-batch (2018-07-16) 1 commit
285 + (merged to 'next' on 2018-07-24 at fb3e653f44)
286 + + send-email: fix tls AUTH when sending batch
287
230 - "git fast-import" has been updated to avoid attempting to create
231 - delta against a zero-byte-long string, which is pointless.
288 + "git send-email" when using in a batched mode that limits the
289 + number of messages sent in a single SMTP session lost the contents
290 + of the variable used to choose between tls/ssl, unable to send the
291 + second and later batches, which has been fixed.
292
293 + This is marked to be merged to 'next' already, but I do not mind
294 + getting an updated version with an improved log message before that
295 + happens.
296
234 -* mk/merge-in-sparse-checkout (2018-07-11) 1 commit
235 - (merged to 'next' on 2018-07-18 at d2a6d2684d)
236 - + unpack-trees: do not fail reset because of unmerged skipped entry
297
238 - "git reset --merge" (hence "git merge ---abort") and "git reset --hard"
239 - had trouble working correctly in a sparsely checked out working
240 - tree after a conflict, which has been corrected.
298 +* js/rebase-merge-octopus (2018-07-11) 3 commits
299 + (merged to 'next' on 2018-07-24 at 14ad8699de)
300 + + rebase --rebase-merges: adjust man page for octopus support
301 + + rebase --rebase-merges: add support for octopus merges
302 + + merge: allow reading the merge commit message from a file
303
304 + "git rebase --rebase-merges" mode now handles octopus merges as
305 + well.
306
243 -* nd/command-list (2018-07-16) 1 commit
244 - (merged to 'next' on 2018-07-18 at 77ed2a3914)
245 - + vcbuild/README: update to accommodate for missing common-cmds.h
307
247 - Build doc update for Windows.
308 +* jt/commit-graph-per-object-store (2018-07-17) 7 commits
309 + (merged to 'next' on 2018-07-24 at 090d1a4d59)
310 + + commit-graph: add repo arg to graph readers
311 + + commit-graph: store graph in struct object_store
312 + + commit-graph: add free_commit_graph
313 + + commit-graph: add missing forward declaration
314 + + object-store: add missing include
315 + + commit-graph: refactor preparing commit graph
316 + + Merge branch 'ds/commit-graph-fsck' into jt/commit-graph-per-object-store
317 + (this branch is used by ds/commit-graph-with-grafts and ds/reachable; uses ds/commit-graph-fsck and sb/object-store-lookup.)
318
319 + The singleton commit-graph in-core instance is made per in-core
320 + repository instance.
321
250 -* rj/submodule-fsck-skip (2018-07-03) 1 commit
251 - (merged to 'next' on 2018-07-11 at 985f88cf7e)
252 - + fsck: check skiplist for object in fsck_blob()
322
254 - "fsck.skipList" did not prevent a blob object listed there from
255 - being inspected for is contents (e.g. we recently started to
256 - inspect the contents of ".gitmodules" for certain malicious
257 - patterns), which has been corrected.
323 +* jt/fetch-nego-tip (2018-07-03) 1 commit
324 + (merged to 'next' on 2018-07-24 at a9e299006d)
325 + + fetch-pack: support negotiation tip whitelist
326 + (this branch is used by ab/fetch-nego; uses jt/fetch-pack-negotiator; is tangled with jt/fetch-negotiator-skipping.)
327
328 + "git fetch" learned a new option "--negotiation-tip" to limit the
329 + set of commits it tells the other end as "have", to reduce wasted
330 + bandwidth and cycles, which would be helpful when the receiving
331 + repository has a lot of refs that have little to do with the
332 + history at the remote it is fetching from.
333
260 -* sb/blame-color (2018-07-16) 1 commit
261 - (merged to 'next' on 2018-07-18 at c319268502)
262 - + blame: prefer xsnprintf to strcpy for colors
263 - (this branch is used by jk/banned-function.)
334
265 - Code clean-up.
335 +* jt/fetch-negotiator-skipping (2018-07-16) 1 commit
336 + (merged to 'next' on 2018-07-24 at 8e25a49405)
337 + + negotiator/skipping: skip commits during fetch
338 + (this branch is used by ab/fetch-nego; uses jt/fetch-pack-negotiator; is tangled with jt/fetch-nego-tip.)
339
340 + Add a server-side knob to skip commits in exponential/fibbonacci
341 + stride in an attempt to cover wider swath of history with a smaller
342 + number of iterations, potentially accepting a larger packfile
343 + transfer, instead of going back one commit a time during common
344 + ancestor discovery during the "git fetch" transaction.
345
268 -* sb/submodule-move-head-error-msg (2018-06-25) 1 commit
269 - (merged to 'next' on 2018-07-18 at 9e213ad1aa)
270 - + submodule.c: report the submodule that an error occurs in
346
272 - "git checkout --recurse-submodules another-branch" did not report
273 - in which submodule it failed to update the working tree, which
274 - resulted in an unhelpful error message.
347 +* jt/fetch-pack-negotiator (2018-06-15) 7 commits
348 + (merged to 'next' on 2018-07-24 at 438efcd6b1)
349 + + fetch-pack: introduce negotiator API
350 + + fetch-pack: move common check and marking together
351 + + fetch-pack: make negotiation-related vars local
352 + + fetch-pack: use ref adv. to prune "have" sent
353 + + fetch-pack: directly end negotiation if ACK ready
354 + + fetch-pack: clear marks before re-marking
355 + + fetch-pack: split up everything_local()
356 + (this branch is used by ab/fetch-nego, jt/fetch-nego-tip and jt/fetch-negotiator-skipping.)
357
358 + Code restructuring and a small fix to transport protocol v2 during
359 + fetching.
360
277 -* tb/config-default (2018-07-06) 1 commit
278 - (merged to 'next' on 2018-07-18 at 7994476f6f)
279 - + builtin/config: work around an unsized array forward declaration
361
281 - Compilation fix.
362 +* jt/tags-to-promised-blobs-fix (2018-07-16) 2 commits
363 + (merged to 'next' on 2018-07-24 at 8d7e78a671)
364 + + tag: don't warn if target is missing but promised
365 + + revision: tolerate promised targets of tags
366
367 + The lazy clone support had a few places where missing but promised
368 + objects were not correctly tolerated, which have been fixed.
369
284 -* wc/find-commit-with-pattern-on-detached-head (2018-07-12) 1 commit
285 - (merged to 'next' on 2018-07-18 at 334d2420c0)
286 - + sha1-name.c: for ":/", find detached HEAD commits
370
288 - "git rev-parse ':/substring'" did not consider the history leading
289 - only to HEAD when looking for a commit with the given substring,
290 - when the HEAD is detached. This has been fixed.
371 +* kg/gc-auto-windows-workaround (2018-07-09) 1 commit
372 + (merged to 'next' on 2018-07-24 at 71c05d27b6)
373 + + gc --auto: release pack files before auto packing
374
292 ---------------------------------------------------
293 -[New Topics]
375 + "git gc --auto" opens file descriptors for the packfiles before
376 + spawning "git repack/prune", which would upset Windows that does
377 + not want a process to work on a file that is open by another
378 + process. The issue has been worked around.
379
295 -* ds/commit-graph-with-grafts (2018-07-19) 8 commits
296 - - commit-graph: close_commit_graph before shallow walk
297 - - commit-graph: not compatible with uninitialized repo
298 - - commit-graph: not compatible with grafts
299 - - commit-graph: not compatible with replace objects
300 - - test-repository: properly init repo
301 - - commit-graph: update design document
302 - - refs.c: upgrade for_each_replace_ref to be a each_repo_ref_fn callback
303 - - refs.c: migrate internal ref iteration to pass thru repository argument
304 - (this branch uses ds/commit-graph-fsck, jt/commit-graph-per-object-store and sb/object-store-lookup; is tangled with ds/reachable.)
380
306 - The recently introduced commit-graph auxiliary data is incompatible
307 - with mechanisms such as replace & grafts that "breaks" immutable
308 - nature of the object reference relationship. Disable optimizations
309 - based on its use (and updating existing commit-graph) when these
310 - incompatible features are in use in the repository.
381 +* sb/diff-color-move-more (2018-07-19) 10 commits
382 + (merged to 'next' on 2018-07-24 at 89c893cab2)
383 + + diff.c: offer config option to control ws handling in move detection
384 + + diff.c: add white space mode to move detection that allows indent changes
385 + + diff.c: factor advance_or_nullify out of mark_color_as_moved
386 + + diff.c: decouple white space treatment from move detection algorithm
387 + + diff.c: add a blocks mode for moved code detection
388 + + diff.c: adjust hash function signature to match hashmap expectation
389 + + diff.c: do not pass diff options as keydata to hashmap
390 + + t4015: avoid git as a pipe input
391 + + xdiff/xdiffi.c: remove unneeded function declarations
392 + + xdiff/xdiff.h: remove unused flags
393
312 - Will merge to 'next'.
394 + "git diff --color-moved" feature has further been tweaked.
395
396
315 -* jk/core-use-replace-refs (2018-07-18) 3 commits
316 - - add core.usereplacerefs config option
317 - - check_replace_refs: rename to read_replace_refs
318 - - check_replace_refs: fix outdated comment
397 +* sb/object-store-lookup (2018-06-29) 33 commits
398 + (merged to 'next' on 2018-07-24 at dd96e29376)
399 + + commit.c: allow lookup_commit_reference to handle arbitrary repositories
400 + + commit.c: allow lookup_commit_reference_gently to handle arbitrary repositories
401 + + tag.c: allow deref_tag to handle arbitrary repositories
402 + + object.c: allow parse_object to handle arbitrary repositories
403 + + object.c: allow parse_object_buffer to handle arbitrary repositories
404 + + commit.c: allow get_cached_commit_buffer to handle arbitrary repositories
405 + + commit.c: allow set_commit_buffer to handle arbitrary repositories
406 + + commit.c: migrate the commit buffer to the parsed object store
407 + + commit-slabs: remove realloc counter outside of slab struct
408 + + commit.c: allow parse_commit_buffer to handle arbitrary repositories
409 + + tag: allow parse_tag_buffer to handle arbitrary repositories
410 + + tag: allow lookup_tag to handle arbitrary repositories
411 + + commit: allow lookup_commit to handle arbitrary repositories
412 + + tree: allow lookup_tree to handle arbitrary repositories
413 + + blob: allow lookup_blob to handle arbitrary repositories
414 + + object: allow lookup_object to handle arbitrary repositories
415 + + object: allow object_as_type to handle arbitrary repositories
416 + + tag: add repository argument to deref_tag
417 + + tag: add repository argument to parse_tag_buffer
418 + + tag: add repository argument to lookup_tag
419 + + commit: add repository argument to get_cached_commit_buffer
420 + + commit: add repository argument to set_commit_buffer
421 + + commit: add repository argument to parse_commit_buffer
422 + + commit: add repository argument to lookup_commit
423 + + commit: add repository argument to lookup_commit_reference
424 + + commit: add repository argument to lookup_commit_reference_gently
425 + + tree: add repository argument to lookup_tree
426 + + blob: add repository argument to lookup_blob
427 + + object: add repository argument to object_as_type
428 + + object: add repository argument to parse_object_buffer
429 + + object: add repository argument to lookup_object
430 + + object: add repository argument to parse_object
431 + + Merge branch 'sb/object-store-grafts' into sb/object-store-lookup
432 + (this branch is used by ds/commit-graph-with-grafts, ds/reachable and jt/commit-graph-per-object-store.)
433
320 - A new configuration variable core.usereplacerefs has been added,
321 - primarily to help server installations that want to ignore the
322 - replace mechanism altogether.
434 + lookup_commit_reference() and friends have been updated to find
435 + in-core object for a specific in-core repository instance.
436
324 - Will merge to 'next'.
437
438 +* sg/httpd-test-unflake (2018-07-12) 3 commits
439 + (merged to 'next' on 2018-07-24 at b7df820256)
440 + + t/lib-httpd: avoid occasional failures when checking access.log
441 + + t/lib-httpd: add the strip_access_log() helper function
442 + + t5541: clean up truncating access log
443
327 -* nd/i18n (2018-07-23) 23 commits
328 - - transport-helper.c: mark more strings for translation
329 - - transport.c: mark more strings for translation
330 - - sha1-file.c: mark more strings for translation
331 - - sequencer.c: mark more strings for translation
332 - - replace-object.c: mark more strings for translation
333 - - refspec.c: mark more strings for translation
334 - - refs.c: mark more strings for translation
335 - - pkt-line.c: mark more strings for translation
336 - - object.c: mark more strings for translation
337 - - exec-cmd.c: mark more strings for translation
338 - - environment.c: mark more strings for translation
339 - - dir.c: mark more strings for translation
340 - - convert.c: mark more strings for translation
341 - - connect.c: mark more strings for translation
342 - - config.c: mark more strings for translation
343 - - commit-graph.c: mark more strings for translation
344 - - builtin/replace.c: mark more strings for translation
345 - - builtin/pack-objects.c: mark more strings for translation
346 - - builtin/grep.c: mark strings for translation
347 - - builtin/config.c: mark more strings for translation
348 - - archive-zip.c: mark more strings for translation
349 - - archive-tar.c: mark more strings for translation
350 - - Update messages in preparation for i18n
444 + httpd tests saw occasional breakage due to the way its access log
445 + gets inspected by the tests, which has been updated to make them
446 + less flaky.
447
352 - Many more strings are prepared for l10n.
448 +
449 +* tb/grep-only-matching (2018-07-09) 2 commits
450 + (merged to 'next' on 2018-07-24 at 7e878b9d95)
451 + + grep.c: teach 'git grep --only-matching'
452 + + grep.c: extract show_line_header()
453 +
454 + "git grep" learned the "--only-matching" option.
455 +
456 +--------------------------------------------------
457 +[New Topics]
458 +
459 +* ab/fsck-transfer-updates (2018-07-27) 10 commits
460 + - fsck: test and document unknown fsck.<msg-id> values
461 + - fsck: add stress tests for fsck.skipList
462 + - fsck: test & document {fetch,receive}.fsck.* config fallback
463 + - fetch: implement fetch.fsck.*
464 + - transfer.fsckObjects tests: untangle confusing setup
465 + - config doc: elaborate on fetch.fsckObjects security
466 + - config doc: elaborate on what transfer.fsckObjects does
467 + - config doc: unify the description of fsck.* and receive.fsck.*
468 + - config doc: don't describe *.fetchObjects twice
469 + - receive.fsck.<msg-id> tests: remove dead code
470 +
471 + The test performed at the receiving end of "git push" to prevent
472 + bad objects from entering repository can be customized via
473 + receive.fsck.* configuration variables; we now have gained a
474 + counterpart to do the same on the "git fetch" side, with
475 + fetch.fsck.* configuration variables.
476
477 Will merge to 'next'.
478
479
357 -* sb/histogram-less-memory (2018-07-23) 4 commits
358 - - xdiff/histogram: remove tail recursion
359 - - xdiff/xhistogram: move index allocation into find_lcs
360 - - xdiff/xhistogram: factor out memory cleanup into free_index()
361 - - xdiff/xhistogram: pass arguments directly to fall_back_to_classic_diff
480 +* ab/test-must-be-empty (2018-07-30) 1 commit
481 + - tests: make use of the test_must_be_empty function
482
363 - "git diff --histogram" had a bad memory usage pattern, which has
364 - been rearranged to reduce the peak usage.
483 + Test updates.
484
485 Will merge to 'next'.
486
487
369 -* bb/make-developer-pedantic (2018-07-25) 1 commit
370 - - Makefile: add a DEVOPTS flag to get pedantic compilation
488 +* ab/test-must-be-empty-for-master (2018-07-30) 1 commit
489 + - tests: make use of the test_must_be_empty function
490
372 - "make DEVELOPER=1 DEVOPTS=pedantic" allows developers to compile
373 - with -pedantic option, which may catch more problematic program
374 - constructs and potential bugs.
491 + Test updates.
492
376 - Will merge to 'next' and then to 'master'.
493 + Did anybody spot incorrect conversion in this yet?
494
495
379 -* bw/clone-ref-prefixes (2018-07-20) 1 commit
380 - - clone: send ref-prefixes when using protocol v2
496 +* cb/p4-pre-submit-hook (2018-08-01) 1 commit
497 + - git-p4: add the `p4-pre-submit` hook
498
382 - The wire-protocol v2 relies on the client to send "ref prefixes" to
383 - limit the bandwidth spent on the initial ref advertisement. "git
384 - clone" when learned to speak v2 forgot to do so, which has been
385 - corrected.
499 + "git p4 submit" learns to ask its own pre-submit hook if it should
500 + continue with submitting.
501
502 Will merge to 'next'.
503
504
390 -* bw/fetch-pack-i18n (2018-07-23) 1 commit
391 - - fetch-pack: mark die strings for translation
392 -
393 - i18n updates.
505 +* es/rebase-i-author-script-fix (2018-07-31) 4 commits
506 + - sequencer: don't die() on bogus user-edited timestamp
507 + - sequencer: fix "rebase -i --root" corrupting author header timestamp
508 + - sequencer: fix "rebase -i --root" corrupting author header timezone
509 + - sequencer: fix "rebase -i --root" corrupting author header
510 + (this branch is used by pw/rebase-i-author-script-fix.)
511
395 - Will merge to 'next' and then to 'master'.
512 + The "author-script" file "git rebase -i" creates got broken when
513 + we started to move the command away from shell script, which is
514 + getting fixed now.
515
516 + Will merge to 'next'.
517
398 -* bw/protocol-v2 (2018-07-24) 1 commit
399 - - pack-protocol: mention and point to docs for protocol v2
518
401 - Doc update.
519 +* hn/highlight-sideband-keywords (2018-07-31) 1 commit
520 + - sideband: highlight keywords in remote output
521
403 - Will merge to 'next' and then to 'master'.
522 + The sideband code learned to optionally paint selected keywords at
523 + the beginning of incoming lines on the receiving end.
524
525
406 -* ds/reachable (2018-07-20) 18 commits
407 - - commit-reach: use can_all_from_reach
408 - - commit-reach: make can_all_from_reach... linear
409 - - commit-reach: replace ref_newer logic
410 - - test-reach: test commit_contains
411 - - test-reach: test can_all_from_reach_with_flags
412 - - test-reach: test reduce_heads
413 - - test-reach: test get_merge_bases_many
414 - - test-reach: test is_descendant_of
415 - - test-reach: test in_merge_bases
416 - - test-reach: create new test tool for ref_newer
417 - - commit-reach: move can_all_from_reach_with_flags
418 - - upload-pack: generalize commit date cutoff
419 - - upload-pack: refactor ok_to_give_up()
420 - - upload-pack: make reachable() more generic
421 - - commit-reach: move commit_contains from ref-filter
422 - - commit-reach: move ref_newer from remote.c
423 - - commit.h: remove method declarations
424 - - commit-reach: move walk methods from commit.c
425 - (this branch uses ds/commit-graph-fsck, jt/commit-graph-per-object-store and sb/object-store-lookup; is tangled with ds/commit-graph-with-grafts.)
526 +* jn/subtree-test-fixes (2018-07-30) 2 commits
527 + - subtree test: simplify preparation of expected results
528 + - subtree test: add missing && to &&-chain
529
427 - The code for computing history reachability has been shuffled,
428 - obtained a bunch of new tests to cover them, and then being
429 - improved.
530 + Test fix.
531
431 - Stuck in review?
432 - cf. <20180723203500.231932-1-jonathantanmy@google.com>
433 - cf. <20180723204112.233274-1-jonathantanmy@google.com>
434 - cf. <CAGZ79kb7tWV=cmboA+nsChAUaiC+fVVM-GBCuWfsypC+-wyaVg@mail.gmail.com>
532 + Will merge to 'next'.
533
534
437 -* en/merge-recursive-skip-fix (2018-07-23) 2 commits
438 - - merge-recursive: preserve skip_worktree bit when necessary
439 - - t3507: add a testcase showing failure with sparse checkout
535 +* ms/http-proto-doc (2018-07-30) 1 commit
536 + - doc: fix want-capability separator
537
441 - When the sparse checkout feature is in use, "git cherry-pick" and
442 - other mergy operations lost the skip_worktree bit when a path that
443 - is excluded from checkout requires content level merge, which is
444 - resolved as the same as the HEAD version, without materializing the
445 - merge result in the working tree, which made the path appear as
446 - deleted. This has been corrected by preserving the skip_worktree
447 - bit (and not materializing the file in the working tree).
538 + Doc fix.
539
449 - Stuck in review?
450 - cf. <75aa297e-4857-d92a-7041-618ff3b0b77a@gmail.com>
540 + Will merge to 'next'.
541
542
453 -* es/format-patch-interdiff (2018-07-23) 6 commits
454 - - format-patch: allow --interdiff to apply to a lone-patch
455 - - log-tree: show_log: make commentary block delimiting reusable
456 - - interdiff: teach show_interdiff() to indent interdiff
457 - - format-patch: teach --interdiff to respect -v/--reroll-count
458 - - format-patch: add --interdiff option to embed diff in cover letter
459 - - format-patch: allow additional generated content in make_cover_letter()
460 - (this branch is used by es/format-patch-rangediff.)
543 +* nd/pack-objects-threading-doc (2018-07-30) 1 commit
544 + - pack-objects: document about thread synchronization
545
462 - "git format-patch" learned a new "--interdiff" option to explain
463 - the difference between this version and the previous atttempt in
464 - the cover letter (or after the tree-dashes as a comment).
546 + Doc fix.
547
466 - Stuck in review?
467 - cf. <CAPig+cSuYUYSPTuKx08wcmQM-G12_-W2T4BS07fA=6grM1b8Gw@mail.gmail.com>
548 + Will merge to 'next'.
549
550
470 -* es/format-patch-rangediff (2018-07-25) 10 commits
471 - - format-patch: allow --range-diff to apply to a lone-patch
472 - - format-patch: add --creation-factor tweak for --range-diff
473 - - format-patch: teach --range-diff to respect -v/--reroll-count
474 - - format-patch: extend --range-diff to accept revision range
475 - - format-patch: add --range-diff option to embed diff in cover letter
476 - - range-diff: relieve callers of low-level configuration burden
477 - - range-diff: publish default creation factor
478 - - range-diff: respect diff_option.file rather than assuming 'stdout'
479 - - Merge branch 'es/format-patch-interdiff' into es/format-patch-rangediff
480 - - Merge branch 'js/range-diff' into es/format-patch-rangediff
481 - (this branch uses es/format-patch-interdiff and js/range-diff.)
551 +* sb/indent-heuristic-optim (2018-08-01) 1 commit
552 + - xdiff: reduce indent heuristic overhead
553
483 - "git format-patch" learned a new "--range-diff" option to explain
484 - the difference between this version and the previous atttempt in
485 - the cover letter (or after the tree-dashes as a comment).
554 + "git diff --indent-heuristic" had a bad corner case performance.
555
487 - Need to wait for the prereq topics to solidify a bit more.
556 + Will merge to 'next'.
557
558
490 -* jk/banned-function (2018-07-24) 5 commits
491 - - banned.h: mark strncpy() as banned
492 - - banned.h: mark sprintf() as banned
493 - - banned.h: mark strcat() as banned
494 - - automatically ban strcpy()
495 - - Merge branch 'sb/blame-color' into jk/banned-function
559 +* ab/fetch-nego (2018-08-01) 3 commits
560 + - fetch doc: cross-link two new negotiation options
561 + - negotiator: unknown fetch.negotiationAlgorithm should error out
562 + - Merge branch 'jt/fetch-nego-tip' into ab/fetch-nego
563
497 - It is too easy to misuse system API functions such as strcat();
498 - these selected functions are now forbidden in this codebase and
499 - will cause a compilation failure.
564 + Update to a few other topics.
565
566 Will merge to 'next'.
567
568
504 -* jk/size-t (2018-07-24) 6 commits
505 - - strbuf_humanise: use unsigned variables
506 - - pass st.st_size as hint for strbuf_readlink()
507 - - strbuf_readlink: use ssize_t
508 - - strbuf: use size_t for length in intermediate variables
509 - - reencode_string: use size_t for string lengths
510 - - reencode_string: use st_add/st_mult helpers
569 +* ab/fetch-tags-noclobber (2018-07-31) 10 commits
570 + - fetch: stop clobbering existing tags without --force
571 + - pull doc: fix a long-standing grammar error
572 + - fetch tests: add a test clobbering tag behavior
573 + - fetch tests: correct a comment "remove it" -> "remove them"
574 + - push doc: correct lies about how push refspecs work
575 + - push tests: assert re-pushing annotated tags
576 + - push tests: add more testing for forced tag pushing
577 + - push tests: fix logic error in "push" test assertion
578 + - push tests: remove redundant 'git push' invocation
579 + - fetch tests: change "Tag" test tag to "testTag"
580 +
581 + "git fetch" used to apply the same "fast-forward" rule and allow
582 + tags to move without "--force" option, which made little sense,
583 + which has been corrected.
584
512 - Code clean-up to use size_t/ssize_t when they are the right type.
585 + Expecting a reroll.
586 + cf. <xmqq4lgfcn5a.fsf@gitster-ct.c.googlers.com>
587 + cf. <xmqqzhy7b7v9.fsf@gitster-ct.c.googlers.com>
588
514 - Will merge to 'next'.
589
590 +* bp/checkout-new-branch-optim (2018-07-31) 1 commit
591 + - checkout: optimize "git checkout -b <new_branch>"
592
517 -* js/t7406-recursive-submodule-update-order-fix (2018-07-23) 1 commit
518 - - t7406: avoid failures solely due to timing issues
593 + "git checkout -b newbranch [HEAD]" should not have to do as much as
594 + checking out a commit different from HEAD. An attempt is made to
595 + optimize this special case.
596 +
597 + Waiting for review comments to be responded.
598 + cf. <CACsJy8DMEMsDnKZc65K-0EJcm2udXZ7OKY=xoFmX4COM0dSH=g@mail.gmail.com>
599 +
600 +
601 +* es/mw-to-git-chain-fix (2018-07-31) 1 commit
602 + - mw-to-git/t9360: fix broken &&-chain
603
604 Test fix.
605
522 - Will merge to 'next' and then to 'master'.
606 + Will merge to 'next'.
607
608
525 -* js/vscode (2018-07-23) 9 commits
526 - - vscode: let cSpell work on commit messages, too
527 - - vscode: add a dictionary for cSpell
528 - - vscode: use 8-space tabs, no trailing ws, etc for Git's source code
529 - - vscode: wrap commit messages at column 72 by default
530 - - vscode: only overwrite C/C++ settings
531 - - mingw: define WIN32 explicitly
532 - - cache.h: extract enum declaration from inside a struct declaration
533 - - vscode: hard-code a couple defines
534 - - contrib: add a script to initialize VS Code configuration
609 +* jk/merge-subtree-heuristics (2018-08-02) 1 commit
610 + - score_trees(): fix iteration over trees with missing entries
611
536 - Add a script (in contrib/) to help users of VSCode work better with
537 - our codebase.
612 + The automatic tree-matching in "git merge -s subtree" was broken 5
613 + years ago and nobody has noticed since then, which is now fixed.
614
539 - Stuck in review?
540 - cf. <20180723165719.GA16420@aiede.svl.corp.google.com>
541 - cf. <20180723174108.GA9285@aiede.svl.corp.google.com>
615 + Will merge to 'next'.
616
617
544 -* jt/tag-following-with-proto-v2-fix (2018-07-24) 2 commits
545 - - fetch: send "refs/tags/" prefix upon CLI refspecs
546 - - t5702: test fetch with multiple refspecs at a time
618 +* jt/connectivity-check-after-unshallow (2018-08-01) 1 commit
619 + - fetch-pack: unify ref in and out param
620
548 - The wire-protocol v2 relies on the client to send "ref prefixes" to
549 - limit the bandwidth spent on the initial ref advertisement. "git
550 - fetch $remote branch:branch" that asks tags that point into the
551 - history leading to the "branch" automatically followed sent to
552 - narrow prefix and broke the tag following, which has been fixed.
621 + Recent update to the transport layer broke ref updates after "git
622 + fetch", which is now fixed.
623
624 Will merge to 'next'.
625
626
557 -* nd/pack-deltify-regression-fix (2018-07-23) 1 commit
558 - - pack-objects: fix performance issues on packing large deltas
627 +* jt/refspec-dwim-precedence-fix (2018-08-02) 1 commit
628 + - remote: make refspec follow the same disambiguation rule as local refs
629
560 - In a recent update in 2.18 era, "git pack-objects" started
561 - producing a larger than necessary packfiles by missing
562 - opportunities to use large deltas.
630 + "git fetch $there refs/heads/s" ought to fetch the tip of the
631 + branch 's', but when "refs/heads/refs/heads/s", i.e. a branch whose
632 + name is "refs/heads/s" exists at the same time, fetched that one
633 + instead by mistake. This has been corrected to honor the usual
634 + disambiguation rules for abbreviated refnames.
635
564 - Will merge to and cook in 'next'.
636 + Will merge to 'next'.
637
638
567 -* sb/trailers-docfix (2018-07-20) 1 commit
568 - - Documentation/git-interpret-trailers: explain possible values
639 +* nd/clone-case-smashing-warning (2018-07-31) 1 commit
640 + - clone: report duplicate entries on case-insensitive filesystems
641
570 - Doc update.
642 + Running "git clone" against a project that contain two files with
643 + pathnames that differ only in cases on a case insensitive
644 + filesystem would result in one of the files lost because the
645 + underlying filesystem is incapable of holding both at the same
646 + time. An attempt is made to detect such a case and warn.
647
572 - Will merge to 'next' and then to 'master'.
648 + Discussion getting petered out.
649 + Doing this portably and extending it to UTF-8 normalization issue
650 + HFS+ has would be costly.
651
652 + cf. <20180728095659.GA21450@sigill.intra.peff.net>
653 + cf. <xmqq1sbh7phx.fsf@gitster-ct.c.googlers.com>
654
575 -* sg/coccicheck-updates (2018-07-23) 5 commits
576 - - coccinelle: extract dedicated make target to clean Coccinelle's results
577 - - coccinelle: put sane filenames into output patches
578 - - coccinelle: exclude sha1dc source files from static analysis
579 - - coccinelle: use $(addsuffix) in 'coccicheck' make target
580 - - coccinelle: mark the 'coccicheck' make target as .PHONY
655
582 - Update the way we use Coccinelle to find out-of-style code that
583 - need to be modernised.
656 +* nd/unpack-trees-with-cache-tree (2018-07-31) 4 commits
657 + - unpack-trees: cheaper index update when walking by cache-tree
658 + - unpack-trees: reduce malloc in cache-tree walk
659 + - unpack-trees: optimize walking same trees with cache-tree
660 + - unpack-trees.c: add performance tracing
661
585 - Will merge to 'next'.
662 + The unpack_trees() API used in checking out a branch and merging
663 + walks one or more trees along with the index. When the cache-tree
664 + in the index tells us that we are walking a tree whose flattened
665 + contents is known (i.e. matches a span in the index), as linearly
666 + scanning a span in the index is much more efficient than having to
667 + open tree objects recursively and listing their entries, the walk
668 + can be optimized, which is done in this topic.
669
670
588 -* sg/fast-import-dump-refs-on-checkpoint-fix (2018-07-20) 1 commit
589 - - t9300: wait for background fast-import process to die after killing it
671 +* rs/remote-mv-leakfix (2018-08-01) 1 commit
672 + - remote: clear string_list after use in mv()
673
591 - Test update.
674 + Leakfix.
675
593 - Will merge to 'next' and then to 'master'.
676 + Will merge to 'next'.
677
678
596 -* sg/travis-cocci-diagnose-failure (2018-07-23) 2 commits
597 - - travis-ci: fail if Coccinelle static analysis found something to transform
598 - - travis-ci: run Coccinelle static analysis with two parallel jobs
679 +* sb/config-write-fix (2018-08-01) 3 commits
680 + - git-config: document accidental multi-line setting in deprecated syntax
681 + - config: fix case sensitive subsection names on writing
682 + - t1300: document current behavior of setting options
683
600 - Update the way we run static analysis tool at TravisCI to make it
601 - easier to use its findings.
684 + Recent update to "git config" broke updating variable in a
685 + subsection, which has been corrected.
686
603 - Will merge to 'next' and then to 'master'.
687 + Not quite?
688 + cf. <xmqq4lgc1rbv.fsf@gitster-ct.c.googlers.com>
689
690
606 -* ab/newhash-is-sha256 (2018-07-25) 1 commit
607 - - doc hash-function-transition: note the lack of a changelog
691 +* sb/range-diff-colors (2018-08-01) 9 commits
692 + - fixup! t3206: add color test for range-diff --dual-color
693 + - diff.c: rewrite emit_line_0 more understandably
694 + - diff.c: compute reverse locally in emit_line_0
695 + - diff: use emit_line_0 once per line
696 + - diff.c: add set_sign to emit_line_0
697 + - diff.c: reorder arguments for emit_line_ws_markup
698 + - diff.c: simplify caller of emit_line_0
699 + - t3206: add color test for range-diff --dual-color
700 + - test_decode_color: understand FAINT and ITALIC
701 + (this branch uses js/range-diff; is tangled with es/format-patch-rangediff.)
702
609 - Documentation update.
703
611 - Waiting for another attempt for the second part.
704 +* sg/t1404-update-ref-test-timeout (2018-08-01) 1 commit
705 + - t1404: increase core.packedRefsTimeout to avoid occasional test failure
706
707 + An attempt to unflake a test a bit.
708
614 -* bb/redecl-enum-fix (2018-07-25) 1 commit
615 - - packfile: drop a repeated enum declaration
709
617 - Compilation fix.
710 +* sg/travis-retrieve-trash-upon-failure (2018-08-01) 1 commit
711 + - travis-ci: include the trash directories of failed tests in the trace log
712
713 + The Travis CI scripts were taught to ship back the test data from
714 + failed tests.
715
620 -* es/diff-color-move-fix (2018-07-25) 1 commit
621 - - diff: --color-moved: rename "dimmed_zebra" to "dimmed-zebra"
716 + Will merge to 'next'.
717
623 - One of the "diff --color-moved" mode "dimmed_zebra" that was named
624 - in an unusual way has been deprecated and replaced by
625 - "dimmed-zebra".
718
627 - Will merge to 'next' and then to 'master'.
719 +* jt/fetch-follow-fix (2018-08-01) 1 commit
720 + - fetch-pack: unify ref in and out param
721
722 + "git fetch" sometimes failed to update the remote-tracking refs,
723 + which has been corrected.
724
630 -* jh/structured-logging (2018-07-25) 25 commits
631 - - structured-logging: add config data facility
632 - - structured-logging: t0420 tests for interacitve child_summary
633 - - structured-logging: t0420 tests for child process detail events
634 - - structured-logging: add child process classification
635 - - structured-logging: add detail-events for child processes
636 - - structured-logging: add structured logging to remote-curl
637 - - structured-logging: t0420 tests for aux-data
638 - - structured-logging: add aux-data for size of sparse-checkout file
639 - - structured-logging: add aux-data for index size
640 - - structured-logging: add aux-data facility
641 - - structured-logging: t0420 tests for timers
642 - - structured-logging: add timer around preload_index
643 - - structured-logging: add timer around wt-status functions
644 - - structured-logging: add timer around do_write_index
645 - - structured-logging: add timer around do_read_index
646 - - structured-logging: add timer facility
647 - - structured-logging: add detail-event for lazy_init_name_hash
648 - - structured-logging: add detail-event facility
649 - - structured-logging: t0420 basic tests
650 - - structured-logging: set sub_command field for checkout command
651 - - structured-logging: set sub_command field for branch command
652 - - structured-logging: add session-id to log events
653 - - structured-logging: add structured logging framework
654 - - structured-logging: add STRUCTURED_LOGGING=1 to Makefile
655 - - structured-logging: design document
656 - (this branch uses jh/json-writer.)
725 + Will merge to 'next'.
726 +
727 +
728 +* ab/sha1dc (2018-08-02) 1 commit
729 + - sha1dc: update from upstream
730 +
731 + AIX portability update for SHADC hash, imported from upstream.
732
658 - X-Gah.
733 + Will merge to 'next'.
734 +
735 +
736 +* es/want-color-fd-defensive (2018-08-02) 1 commit
737 + - color: protect against out-of-bounds array access/assignment
738 +
739 + Futureproofing a helper function that can easily misused.
740 +
741 + Will merge to 'next'.
742 +
743 +
744 +* pw/rebase-i-author-script-fix (2018-08-02) 2 commits
745 + - sequencer: fix quoting in write_author_script
746 + - sequencer: handle errors in read_author_ident()
747 + (this branch uses es/rebase-i-author-script-fix.)
748 +
749 + Recent "git rebase -i" update started to write bogusly formatted
750 + author-script, with a matching broken reading code. These are
751 + being fixed.
752 +
753 + Undecided.
754 + Is it the list consensus to favor this "with extra code, read the
755 + script written by bad writer" approach?
756 +
757 +
758 +* rs/parse-opt-lithelp (2018-08-02) 6 commits
759 + - parse-options: automatically infer PARSE_OPT_LITERAL_ARGHELP
760 + - shortlog: correct option help for -w
761 + - send-pack: specify --force-with-lease argument help explicitly
762 + - pack-objects: specify --index-version argument help explicitly
763 + - difftool: remove angular brackets from argument help
764 + - add, update-index: fix --chmod argument help
765 +
766 + The parse-options machinery learned to refrain from enclosing
767 + placeholder string inside a "<bra" and "ket>" pair automatically
768 + without PARSE_OPT_LITERAL_ARGHELP. Existing help text for option
769 + arguments that are not formatted correctly have been identified and
770 + fixed.
771 +
772 + Will merge to 'next'.
773
774 --------------------------------------------------
775 [Stalled]
776
663 -* pw/add-p-select (2018-03-16) 3 commits
664 - - add -p: optimize line selection for short hunks
665 - - add -p: allow line selection to be inverted
666 - - add -p: select individual hunk lines
667 -
668 - "git add -p" interactive interface learned to let users choose
669 - individual added/removed lines to be used in the operation, instead
670 - of accepting or rejecting a whole hunk.
777 +* ma/wrapped-info (2018-05-28) 2 commits
778 + - usage: prefix all lines in `vreportf()`, not just the first
779 + - usage: extract `prefix_suffix_lines()` from `advise()`
780
672 - Expecting a reroll to reignite the discussion.
673 - cf. <9895c7b7-eac4-28c1-90c6-443acd1131b7@talktalk.net>
781 + An attempt to help making multi-line messages fed to warning(),
782 + error(), and friends more easily translatable.
783
784 + Will discard and wait for a cleaned-up rewrite.
785 + cf. <20180529213957.GF7964@sigill.intra.peff.net>
786
787 * hn/bisect-first-parent (2018-04-21) 1 commit
788 - bisect: create 'bisect_flags' parameter in find_bisection()
@@ -718,17 +829,6 @@ of the repositories listed at
829 in the thread above---we are still waiting for a reroll.
830
831
721 -* mk/http-backend-content-length (2018-06-11) 3 commits
722 - - http-backend: respect CONTENT_LENGTH for receive-pack
723 - - http-backend: respect CONTENT_LENGTH as specified by rfc3875
724 - - http-backend: cleanup writing to child process
725 -
726 - The http-backend (used for smart-http transport) used to slurp the
727 - whole input until EOF, without paying attention to CONTENT_LENGTH
728 - that is supplied in the environment and instead expecting the Web
729 - server to close the input stream. This has been fixed.
730 -
731 -
832 * jk/drop-ancient-curl (2017-08-09) 5 commits
833 - http: #error on too-old curl
834 - curl: remove ifdef'd code never used with curl >=7.19.4
@@ -754,457 +854,552 @@ of the repositories listed at
854 --------------------------------------------------
855 [Cooking]
856
757 -* am/sequencer-author-script-fix (2018-07-18) 1 commit
758 - - sequencer.c: terminate the last line of author-script properly
759 -
760 - The author-script that records the author information created by
761 - the sequencer machinery lacked the closing single quote on the last
762 - entry.
763 -
764 - Fixing this alone may or may not break the reader that may have
765 - been compensating for this bogus writer. I think I saw another fix
766 - to the same source file posted today---if we are fixing, we should
767 - fix them all at the same time to keep the reader and the writer in
768 - sync.
769 -
770 -
771 -* bc/sequencer-export-work-tree-as-well (2018-07-16) 1 commit
772 - (merged to 'next' on 2018-07-24 at 0b83ade721)
773 - + sequencer: pass absolute GIT_WORK_TREE to exec commands
857 +* es/diff-color-moved-fix (2018-07-25) 1 commit
858 + (merged to 'next' on 2018-08-02 at 233bccfbfb)
859 + + diff: --color-moved: rename "dimmed_zebra" to "dimmed-zebra"
860
775 - "git rebase" started exporting GIT_DIR environment variable and
776 - exposing it to hook scripts when part of it got rewritten in C.
777 - Instead of matching the old scripted Porcelains' behaviour,
778 - compensate by also exporting GIT_WORK_TREE environment as well to
779 - lessen the damage. This can harm existing hooks that want to
780 - operate on different repository, but the current behaviour is
781 - already broken for them anyway.
861 + One of the "diff --color-moved" mode "dimmed_zebra" that was named
862 + in an unusual way has been deprecated and replaced by
863 + "dimmed-zebra".
864
865 Will merge to 'master'.
866
867
786 -* bp/test-drop-caches-for-windows (2018-07-12) 1 commit
787 - (merged to 'next' on 2018-07-24 at 257bb336c6)
788 - + handle lower case drive letters on Windows
868 +* pw/add-p-select (2018-07-26) 4 commits
869 + - add -p: optimize line selection for short hunks
870 + - add -p: allow line selection to be inverted
871 + - add -p: select modified lines correctly
872 + - add -p: select individual hunk lines
873
790 - A test helper update for Windows.
874 + "git add -p" interactive interface learned to let users choose
875 + individual added/removed lines to be used in the operation, instead
876 + of accepting or rejecting a whole hunk.
877
792 - Will merge to 'master'.
878 + Will merge to and cook in 'next'.
879
880 + I found the feature to be hard to explain, and may result in more
881 + end-user complaints, but let's see.
882
795 -* en/abort-df-conflict-fixes (2018-07-16) 2 commits
796 - - read-cache: fix directory/file conflict handling in read_index_unmerged()
797 - - t1015: demonstrate directory/file conflict recovery failures
883
799 - "git merge --abort" etc. did not clean things up properly when
800 - there were conflicted entries in certain order that are involved
801 - in D/F conflicts. This has been corrected.
884 +* mk/http-backend-content-length (2018-07-30) 4 commits
885 + - t5562: avoid non-portable "export FOO=bar" construct
886 + - http-backend: respect CONTENT_LENGTH for receive-pack
887 + - http-backend: respect CONTENT_LENGTH as specified by rfc3875
888 + - http-backend: cleanup writing to child process
889
803 - This may have to be rebased on an older maintenance track before
804 - moving forward.
890 + The http-backend (used for smart-http transport) used to slurp the
891 + whole input until EOF, without paying attention to CONTENT_LENGTH
892 + that is supplied in the environment and instead expecting the Web
893 + server to close the input stream. This has been fixed.
894
895 + Will merge to 'next'.
896
807 -* es/chain-lint-in-subshell (2018-07-17) 10 commits
808 - (merged to 'next' on 2018-07-24 at 9370bbdfaf)
809 - + t/chainlint: add chainlint "specialized" test cases
810 - + t/chainlint: add chainlint "complex" test cases
811 - + t/chainlint: add chainlint "cuddled" test cases
812 - + t/chainlint: add chainlint "loop" and "conditional" test cases
813 - + t/chainlint: add chainlint "nested subshell" test cases
814 - + t/chainlint: add chainlint "one-liner" test cases
815 - + t/chainlint: add chainlint "whitespace" test cases
816 - + t/chainlint: add chainlint "basic" test cases
817 - + t/Makefile: add machinery to check correctness of chainlint.sed
818 - + t/test-lib: teach --chain-lint to detect broken &&-chains in subshells
819 - (this branch uses es/test-fixes.)
897
821 - Look for broken "&&" chains that are hidden in subshell, many of
822 - which have been found and corrected.
898 +* ds/commit-graph-with-grafts (2018-07-19) 8 commits
899 + (merged to 'next' on 2018-08-02 at 0ee624e329)
900 + + commit-graph: close_commit_graph before shallow walk
901 + + commit-graph: not compatible with uninitialized repo
902 + + commit-graph: not compatible with grafts
903 + + commit-graph: not compatible with replace objects
904 + + test-repository: properly init repo
905 + + commit-graph: update design document
906 + + refs.c: upgrade for_each_replace_ref to be a each_repo_ref_fn callback
907 + + refs.c: migrate internal ref iteration to pass thru repository argument
908 +
909 + The recently introduced commit-graph auxiliary data is incompatible
910 + with mechanisms such as replace & grafts that "breaks" immutable
911 + nature of the object reference relationship. Disable optimizations
912 + based on its use (and updating existing commit-graph) when these
913 + incompatible features are in use in the repository.
914
915 Will merge to 'master'.
916
917
827 -* hs/gpgsm (2018-07-20) 7 commits
828 - - gpg-interface t: extend the existing GPG tests with GPGSM
829 - - gpg-interface: introduce new signature format "x509" using gpgsm
830 - - gpg-interface: introduce new config to select per gpg format program
831 - - gpg-interface: do not hardcode the key string len anymore
832 - - gpg-interface: introduce an abstraction for multiple gpg formats
833 - - t/t7510: check the validation of the new config gpg.format
834 - - gpg-interface: add new config to select how to sign a commit
918 +* jk/core-use-replace-refs (2018-07-18) 3 commits
919 + (merged to 'next' on 2018-08-02 at 90fb6b1056)
920 + + add core.usereplacerefs config option
921 + + check_replace_refs: rename to read_replace_refs
922 + + check_replace_refs: fix outdated comment
923
836 - Teach "git tag -s" etc. a few configuration varaibles (gpg.format
837 - that can be set to "openpgp" or "x509", and gpg.<format>.program
838 - that is used to specify what program to use to deal with the format)
839 - to allow x.509 certs with CMS via "gpgsm" to be used instead of
840 - openpgp via "gnupg".
924 + A new configuration variable core.usereplacerefs has been added,
925 + primarily to help server installations that want to ignore the
926 + replace mechanism altogether.
927
842 - Will merge to 'next'.
928 + Will merge to 'master'.
929
930
845 -* jk/has-uncommitted-changes-fix (2018-07-11) 1 commit
846 - (merged to 'next' on 2018-07-24 at 2ea14c0afb)
847 - + has_uncommitted_changes(): fall back to empty tree
931 +* nd/i18n (2018-07-23) 23 commits
932 + (merged to 'next' on 2018-08-02 at 904a22a5d1)
933 + + transport-helper.c: mark more strings for translation
934 + + transport.c: mark more strings for translation
935 + + sha1-file.c: mark more strings for translation
936 + + sequencer.c: mark more strings for translation
937 + + replace-object.c: mark more strings for translation
938 + + refspec.c: mark more strings for translation
939 + + refs.c: mark more strings for translation
940 + + pkt-line.c: mark more strings for translation
941 + + object.c: mark more strings for translation
942 + + exec-cmd.c: mark more strings for translation
943 + + environment.c: mark more strings for translation
944 + + dir.c: mark more strings for translation
945 + + convert.c: mark more strings for translation
946 + + connect.c: mark more strings for translation
947 + + config.c: mark more strings for translation
948 + + commit-graph.c: mark more strings for translation
949 + + builtin/replace.c: mark more strings for translation
950 + + builtin/pack-objects.c: mark more strings for translation
951 + + builtin/grep.c: mark strings for translation
952 + + builtin/config.c: mark more strings for translation
953 + + archive-zip.c: mark more strings for translation
954 + + archive-tar.c: mark more strings for translation
955 + + Update messages in preparation for i18n
956
849 - "git pull --rebase" on a corrupt HEAD caused a segfault. In
850 - general we substitute an empty tree object when running the in-core
851 - equivalent of the diff-index command, and the codepath has been
852 - corrected to do so as well to fix this issue.
957 + Many more strings are prepared for l10n.
958
959 Will merge to 'master'.
960
961
857 -* jm/send-email-tls-auth-on-batch (2018-07-16) 1 commit
858 - (merged to 'next' on 2018-07-24 at fb3e653f44)
859 - + send-email: fix tls AUTH when sending batch
962 +* sb/histogram-less-memory (2018-07-23) 4 commits
963 + (merged to 'next' on 2018-08-02 at cfb02aa3b5)
964 + + xdiff/histogram: remove tail recursion
965 + + xdiff/xhistogram: move index allocation into find_lcs
966 + + xdiff/xhistogram: factor out memory cleanup into free_index()
967 + + xdiff/xhistogram: pass arguments directly to fall_back_to_classic_diff
968
861 - "git send-email" when using in a batched mode that limits the
862 - number of messages sent in a single SMTP session lost the contents
863 - of the variable used to choose between tls/ssl, unable to send the
864 - second and later batches, which has been fixed.
969 + "git diff --histogram" had a bad memory usage pattern, which has
970 + been rearranged to reduce the peak usage.
971
972 Will merge to 'master'.
973
868 - This is marked to be merged to 'next' already, but I do not mind
869 - getting an updated version with an improved log message before that
870 - happens.
871 -
974
873 -* jn/gc-auto (2018-07-17) 3 commits
874 - - gc: do not return error for prior errors in daemonized mode
875 - - gc: exit with status 128 on failure
876 - - gc: improve handling of errors reading gc.log
975 +* bb/make-developer-pedantic (2018-07-25) 1 commit
976 + (merged to 'next' on 2018-08-02 at c738a84b7e)
977 + + Makefile: add a DEVOPTS flag to get pedantic compilation
978
878 - "gc --auto" ended up calling exit(-1) upon error, which has been
879 - corrected to use exit(1). Also the error reporting behaviour when
880 - daemonized has been updated to exit with zero status when stopping
881 - due to a previously discovered error (which implies there is no
882 - point running gc to improve the situation); we used to exit with
883 - failure in such a case.
979 + "make DEVELOPER=1 DEVOPTS=pedantic" allows developers to compile
980 + with -pedantic option, which may catch more problematic program
981 + constructs and potential bugs.
982
885 - Stuck in review?
886 - cf. <20180717201348.GD26218@sigill.intra.peff.net>
983 + Will merge to 'master'.
984
985
889 -* js/rebase-merge-octopus (2018-07-11) 3 commits
890 - (merged to 'next' on 2018-07-24 at 14ad8699de)
891 - + rebase --rebase-merges: adjust man page for octopus support
892 - + rebase --rebase-merges: add support for octopus merges
893 - + merge: allow reading the merge commit message from a file
986 +* bw/clone-ref-prefixes (2018-07-20) 1 commit
987 + (merged to 'next' on 2018-08-02 at c8ad140ab0)
988 + + clone: send ref-prefixes when using protocol v2
989
895 - "git rebase --rebase-merges" mode now handles octopus merges as
896 - well.
990 + The wire-protocol v2 relies on the client to send "ref prefixes" to
991 + limit the bandwidth spent on the initial ref advertisement. "git
992 + clone" when learned to speak v2 forgot to do so, which has been
993 + corrected.
994
995 Will merge to 'master'.
996
997
901 -* jt/fetch-negotiator-skipping (2018-07-16) 1 commit
902 - (merged to 'next' on 2018-07-24 at 8e25a49405)
903 - + negotiator/skipping: skip commits during fetch
904 - (this branch uses jt/fetch-pack-negotiator; is tangled with jt/fetch-nego-tip.)
998 +* bw/fetch-pack-i18n (2018-07-23) 1 commit
999 + (merged to 'next' on 2018-08-02 at df72001755)
1000 + + fetch-pack: mark die strings for translation
1001
906 - Add a server-side knob to skip commits in exponential/fibbonacci
907 - stride in an attempt to cover wider swath of history with a smaller
908 - number of iterations, potentially accepting a larger packfile
909 - transfer, instead of going back one commit a time during common
910 - ancestor discovery during the "git fetch" transaction.
1002 + i18n updates.
1003
1004 Will merge to 'master'.
1005
1006
915 -* jt/tags-to-promised-blobs-fix (2018-07-16) 2 commits
916 - (merged to 'next' on 2018-07-24 at 8d7e78a671)
917 - + tag: don't warn if target is missing but promised
918 - + revision: tolerate promised targets of tags
1007 +* bw/protocol-v2 (2018-07-24) 1 commit
1008 + (merged to 'next' on 2018-08-02 at f4076b3e94)
1009 + + pack-protocol: mention and point to docs for protocol v2
1010
920 - The lazy clone support had a few places where missing but promised
921 - objects were not correctly tolerated, which have been fixed.
1011 + Doc update.
1012
1013 Will merge to 'master'.
1014
1015
926 -* sb/submodule-update-in-c (2018-07-18) 6 commits
927 - - submodule--helper: introduce new update-module-mode helper
928 - - builtin/submodule--helper: factor out method to update a single submodule
929 - - builtin/submodule--helper: store update_clone information in a struct
930 - - builtin/submodule--helper: factor out submodule updating
931 - - git-submodule.sh: rename unused variables
932 - - git-submodule.sh: align error reporting for update mode to use path
1016 +* ds/reachable (2018-07-20) 18 commits
1017 + - commit-reach: use can_all_from_reach
1018 + - commit-reach: make can_all_from_reach... linear
1019 + - commit-reach: replace ref_newer logic
1020 + - test-reach: test commit_contains
1021 + - test-reach: test can_all_from_reach_with_flags
1022 + - test-reach: test reduce_heads
1023 + - test-reach: test get_merge_bases_many
1024 + - test-reach: test is_descendant_of
1025 + - test-reach: test in_merge_bases
1026 + - test-reach: create new test tool for ref_newer
1027 + - commit-reach: move can_all_from_reach_with_flags
1028 + - upload-pack: generalize commit date cutoff
1029 + - upload-pack: refactor ok_to_give_up()
1030 + - upload-pack: make reachable() more generic
1031 + - commit-reach: move commit_contains from ref-filter
1032 + - commit-reach: move ref_newer from remote.c
1033 + - commit.h: remove method declarations
1034 + - commit-reach: move walk methods from commit.c
1035
934 - "git submodule update" is getting rewritten piece-by-piece into C.
1036 + The code for computing history reachability has been shuffled,
1037 + obtained a bunch of new tests to cover them, and then being
1038 + improved.
1039
936 - It seems to pass its own self-tests standalone, but seems to break
937 - horribly when merged to 'pu'.
1040 + Will merge to and cook in 'next'.
1041
1042
940 -* sg/httpd-test-unflake (2018-07-12) 3 commits
941 - (merged to 'next' on 2018-07-24 at b7df820256)
942 - + t/lib-httpd: avoid occasional failures when checking access.log
943 - + t/lib-httpd: add the strip_access_log() helper function
944 - + t5541: clean up truncating access log
1043 +* en/merge-recursive-skip-fix (2018-07-27) 2 commits
1044 + - merge-recursive: preserve skip_worktree bit when necessary
1045 + - t3507: add a testcase showing failure with sparse checkout
1046
946 - httpd tests saw occasional breakage due to the way its access log
947 - gets inspected by the tests, which has been updated to make them
948 - less flaky.
1047 + When the sparse checkout feature is in use, "git cherry-pick" and
1048 + other mergy operations lost the skip_worktree bit when a path that
1049 + is excluded from checkout requires content level merge, which is
1050 + resolved as the same as the HEAD version, without materializing the
1051 + merge result in the working tree, which made the path appear as
1052 + deleted. This has been corrected by preserving the skip_worktree
1053 + bit (and not materializing the file in the working tree).
1054
950 - Will merge to 'master'.
1055 + Will merge to 'next'.
1056
1057
953 -* sl/commit-dry-run-with-short-output-fix (2018-07-17) 3 commits
954 - - commit: fix exit code for --short/--porcelain
955 - - wt-status: teach wt_status_collect about merges in progress
956 - - t7501: add merge conflict tests for dry run
1058 +* es/format-patch-interdiff (2018-07-23) 6 commits
1059 + - format-patch: allow --interdiff to apply to a lone-patch
1060 + - log-tree: show_log: make commentary block delimiting reusable
1061 + - interdiff: teach show_interdiff() to indent interdiff
1062 + - format-patch: teach --interdiff to respect -v/--reroll-count
1063 + - format-patch: add --interdiff option to embed diff in cover letter
1064 + - format-patch: allow additional generated content in make_cover_letter()
1065 + (this branch is used by es/format-patch-rangediff.)
1066 +
1067 + "git format-patch" learned a new "--interdiff" option to explain
1068 + the difference between this version and the previous atttempt in
1069 + the cover letter (or after the tree-dashes as a comment).
1070 +
1071 + Stuck in review?
1072 + cf. <CAPig+cSuYUYSPTuKx08wcmQM-G12_-W2T4BS07fA=6grM1b8Gw@mail.gmail.com>
1073
958 - "git commit --dry-run" gave a correct exit status even during a
959 - conflict resolution toward a merge, but it did not with the
960 - "--short" option, which has been corrected.
1074 +
1075 +* es/format-patch-rangediff (2018-07-30) 10 commits
1076 + - format-patch: allow --range-diff to apply to a lone-patch
1077 + - format-patch: add --creation-factor tweak for --range-diff
1078 + - format-patch: teach --range-diff to respect -v/--reroll-count
1079 + - format-patch: extend --range-diff to accept revision range
1080 + - format-patch: add --range-diff option to embed diff in cover letter
1081 + - range-diff: relieve callers of low-level configuration burden
1082 + - range-diff: publish default creation factor
1083 + - range-diff: respect diff_option.file rather than assuming 'stdout'
1084 + - Merge branch 'es/format-patch-interdiff' into es/format-patch-rangediff
1085 + - Merge branch 'js/range-diff' into es/format-patch-rangediff
1086 + (this branch uses es/format-patch-interdiff and js/range-diff; is tangled with sb/range-diff-colors.)
1087 +
1088 + "git format-patch" learned a new "--range-diff" option to explain
1089 + the difference between this version and the previous atttempt in
1090 + the cover letter (or after the tree-dashes as a comment).
1091 +
1092 + Need to wait for the prereq topics to solidify a bit more.
1093 +
1094 +
1095 +* jk/banned-function (2018-07-26) 5 commits
1096 + - banned.h: mark strncpy() as banned
1097 + - banned.h: mark sprintf() as banned
1098 + - banned.h: mark strcat() as banned
1099 + - automatically ban strcpy()
1100 + - Merge branch 'sb/blame-color' into jk/banned-function
1101 +
1102 + It is too easy to misuse system API functions such as strcat();
1103 + these selected functions are now forbidden in this codebase and
1104 + will cause a compilation failure.
1105
1106 Will merge to 'next'.
1107
1108
965 -* tg/rerere (2018-07-16) 11 commits
966 - - rerere: recalculate conflict ID when unresolved conflict is committed
967 - - rerere: teach rerere to handle nested conflicts
968 - - rerere: return strbuf from handle path
969 - - rerere: factor out handle_conflict function
970 - - rerere: only return whether a path has conflicts or not
971 - - rerere: fix crash when conflict goes unresolved
972 - - rerere: add documentation for conflict normalization
973 - - rerere: mark strings for translation
974 - - rerere: wrap paths in output in sq
975 - - rerere: lowercase error messages
976 - - rerere: unify error messages when read_cache fails
1109 +* jk/size-t (2018-07-24) 6 commits
1110 + (merged to 'next' on 2018-08-02 at 6f861e05f0)
1111 + + strbuf_humanise: use unsigned variables
1112 + + pass st.st_size as hint for strbuf_readlink()
1113 + + strbuf_readlink: use ssize_t
1114 + + strbuf: use size_t for length in intermediate variables
1115 + + reencode_string: use size_t for string lengths
1116 + + reencode_string: use st_add/st_mult helpers
1117
1118 + Code clean-up to use size_t/ssize_t when they are the right type.
1119
979 -* jk/ui-color-always-to-auto (2018-07-18) 1 commit
980 - - Documentation: fix --color option formatting
1120 + Will merge to 'master'.
1121
982 - Doc formatting fix.
1122
984 - Will merge to 'next' and then to 'master'.
1123 +* js/t7406-recursive-submodule-update-order-fix (2018-07-23) 1 commit
1124 + (merged to 'next' on 2018-08-02 at 217ea36a37)
1125 + + t7406: avoid failures solely due to timing issues
1126
1127 + Test fix.
1128
987 -* jh/json-writer (2018-07-16) 1 commit
988 - - json_writer: new routines to create JSON data
989 - (this branch is used by jh/structured-logging.)
1129 + Will merge to 'master'.
1130
991 - Preparatory code to later add json output for telemetry data.
1131 +
1132 +* js/vscode (2018-07-30) 9 commits
1133 + - vscode: let cSpell work on commit messages, too
1134 + - vscode: add a dictionary for cSpell
1135 + - vscode: use 8-space tabs, no trailing ws, etc for Git's source code
1136 + - vscode: wrap commit messages at column 72 by default
1137 + - vscode: only overwrite C/C++ settings
1138 + - mingw: define WIN32 explicitly
1139 + - cache.h: extract enum declaration from inside a struct declaration
1140 + - vscode: hard-code a couple defines
1141 + - contrib: add a script to initialize VS Code configuration
1142 +
1143 + Add a script (in contrib/) to help users of VSCode work better with
1144 + our codebase.
1145
1146 Will merge to 'next'.
1147
1148
996 -* ag/rebase-i-in-c (2018-07-10) 13 commits
997 - - rebase -i: rewrite the rest of init_revisions_and_shortrevisions in C
998 - - rebase -i: implement the logic to initialize the variable $revision in C
999 - - rebase--interactive: remove unused modes and functions
1000 - - rebase--interactive: rewrite complete_action() in C
1001 - - sequencer: change the way skip_unnecessary_picks() returns its result
1002 - - sequencer: refactor append_todo_help() to write its message to a buffer
1003 - - rebase -i: rewrite checkout_onto() in C
1004 - - rebase -i: rewrite setup_reflog_action() in C
1005 - - sequencer: add a new function to silence a command, except if it fails
1006 - - rebase-interactive: rewrite the edit-todo functionality in C
1007 - - editor: add a function to launch the sequence editor
1008 - - rebase--interactive: rewrite append_todo_help() in C
1009 - - sequencer: make two functions and an enum from sequencer.c public
1149 +* jt/tag-following-with-proto-v2-fix (2018-07-24) 2 commits
1150 + (merged to 'next' on 2018-08-02 at d9eabdea95)
1151 + + fetch: send "refs/tags/" prefix upon CLI refspecs
1152 + + t5702: test fetch with multiple refspecs at a time
1153
1011 - Piecemeal rewrite of the remaining "rebase -i" machinery in C.
1154 + The wire-protocol v2 relies on the client to send "ref prefixes" to
1155 + limit the bandwidth spent on the initial ref advertisement. "git
1156 + fetch $remote branch:branch" that asks tags that point into the
1157 + history leading to the "branch" automatically followed sent to
1158 + narrow prefix and broke the tag following, which has been fixed.
1159
1013 - A reroll (which is rumored to be quite good) exists, but hasn't
1014 - been picked up yet.
1160 + Will merge to 'master'.
1161
1162
1017 -* sb/object-store-lookup (2018-06-29) 33 commits
1018 - (merged to 'next' on 2018-07-24 at dd96e29376)
1019 - + commit.c: allow lookup_commit_reference to handle arbitrary repositories
1020 - + commit.c: allow lookup_commit_reference_gently to handle arbitrary repositories
1021 - + tag.c: allow deref_tag to handle arbitrary repositories
1022 - + object.c: allow parse_object to handle arbitrary repositories
1023 - + object.c: allow parse_object_buffer to handle arbitrary repositories
1024 - + commit.c: allow get_cached_commit_buffer to handle arbitrary repositories
1025 - + commit.c: allow set_commit_buffer to handle arbitrary repositories
1026 - + commit.c: migrate the commit buffer to the parsed object store
1027 - + commit-slabs: remove realloc counter outside of slab struct
1028 - + commit.c: allow parse_commit_buffer to handle arbitrary repositories
1029 - + tag: allow parse_tag_buffer to handle arbitrary repositories
1030 - + tag: allow lookup_tag to handle arbitrary repositories
1031 - + commit: allow lookup_commit to handle arbitrary repositories
1032 - + tree: allow lookup_tree to handle arbitrary repositories
1033 - + blob: allow lookup_blob to handle arbitrary repositories
1034 - + object: allow lookup_object to handle arbitrary repositories
1035 - + object: allow object_as_type to handle arbitrary repositories
1036 - + tag: add repository argument to deref_tag
1037 - + tag: add repository argument to parse_tag_buffer
1038 - + tag: add repository argument to lookup_tag
1039 - + commit: add repository argument to get_cached_commit_buffer
1040 - + commit: add repository argument to set_commit_buffer
1041 - + commit: add repository argument to parse_commit_buffer
1042 - + commit: add repository argument to lookup_commit
1043 - + commit: add repository argument to lookup_commit_reference
1044 - + commit: add repository argument to lookup_commit_reference_gently
1045 - + tree: add repository argument to lookup_tree
1046 - + blob: add repository argument to lookup_blob
1047 - + object: add repository argument to object_as_type
1048 - + object: add repository argument to parse_object_buffer
1049 - + object: add repository argument to lookup_object
1050 - + object: add repository argument to parse_object
1051 - + Merge branch 'sb/object-store-grafts' into sb/object-store-lookup
1052 - (this branch is used by ds/commit-graph-with-grafts, ds/reachable and jt/commit-graph-per-object-store.)
1163 +* nd/pack-deltify-regression-fix (2018-07-23) 1 commit
1164 + (merged to 'next' on 2018-08-02 at f3b2bf0fef)
1165 + + pack-objects: fix performance issues on packing large deltas
1166
1054 - lookup_commit_reference() and friends have been updated to find
1055 - in-core object for a specific in-core repository instance.
1167 + In a recent update in 2.18 era, "git pack-objects" started
1168 + producing a larger than necessary packfiles by missing
1169 + opportunities to use large deltas.
1170 +
1171 + Will cook in 'next'.
1172 +
1173 +
1174 +* sb/trailers-docfix (2018-07-20) 1 commit
1175 + (merged to 'next' on 2018-08-02 at ba348fafcd)
1176 + + Documentation/git-interpret-trailers: explain possible values
1177 +
1178 + Doc update.
1179
1180 Will merge to 'master'.
1181
1182
1060 -* bc/object-id (2018-07-16) 16 commits
1061 - (merged to 'next' on 2018-07-24 at 23680778a9)
1062 - + pretty: switch hard-coded constants to the_hash_algo
1063 - + sha1-file: convert constants to uses of the_hash_algo
1064 - + log-tree: switch GIT_SHA1_HEXSZ to the_hash_algo->hexsz
1065 - + diff: switch GIT_SHA1_HEXSZ to use the_hash_algo
1066 - + builtin/merge-recursive: make hash independent
1067 - + builtin/merge: switch to use the_hash_algo
1068 - + builtin/fmt-merge-msg: make hash independent
1069 - + builtin/update-index: simplify parsing of cacheinfo
1070 - + builtin/update-index: convert to using the_hash_algo
1071 - + refs/files-backend: use the_hash_algo for writing refs
1072 - + sha1-name: use the_hash_algo when parsing object names
1073 - + strbuf: allocate space with GIT_MAX_HEXSZ
1074 - + commit: express tree entry constants in terms of the_hash_algo
1075 - + hex: switch to using the_hash_algo
1076 - + tree-walk: replace hard-coded constants with the_hash_algo
1077 - + cache: update object ID functions for the_hash_algo
1183 +* sg/coccicheck-updates (2018-07-23) 5 commits
1184 + (merged to 'next' on 2018-08-02 at b5548ff3a9)
1185 + + coccinelle: extract dedicated make target to clean Coccinelle's results
1186 + + coccinelle: put sane filenames into output patches
1187 + + coccinelle: exclude sha1dc source files from static analysis
1188 + + coccinelle: use $(addsuffix) in 'coccicheck' make target
1189 + + coccinelle: mark the 'coccicheck' make target as .PHONY
1190
1079 - Conversion from uchar[40] to struct object_id continues.
1191 + Update the way we use Coccinelle to find out-of-style code that
1192 + need to be modernised.
1193
1194 Will merge to 'master'.
1195
1196
1084 -* en/dirty-merge-fixes (2018-07-11) 9 commits
1085 - (merged to 'next' on 2018-07-24 at 7b6ca3507c)
1086 - + merge: fix misleading pre-merge check documentation
1087 - + merge-recursive: enforce rule that index matches head before merging
1088 - + t6044: add more testcases with staged changes before a merge is invoked
1089 - + merge-recursive: fix assumption that head tree being merged is HEAD
1090 - + merge-recursive: make sure when we say we abort that we actually abort
1091 - + t6044: add a testcase for index matching head, when head doesn't match HEAD
1092 - + t6044: verify that merges expected to abort actually abort
1093 - + index_has_changes(): avoid assuming operating on the_index
1094 - + read-cache.c: move index_has_changes() from merge.c
1197 +* sg/fast-import-dump-refs-on-checkpoint-fix (2018-07-20) 1 commit
1198 + (merged to 'next' on 2018-08-02 at f5c05b5a2c)
1199 + + t9300: wait for background fast-import process to die after killing it
1200
1096 - The recursive merge strategy did not properly ensure there was no
1097 - change between HEAD and the index before performing its operation,
1098 - which has been corrected.
1201 + Test update.
1202
1203 Will merge to 'master'.
1204
1205
1103 -* en/t6036-merge-recursive-tests (2018-07-11) 6 commits
1104 - (merged to 'next' on 2018-07-24 at 75055cb6e1)
1105 - + t6036: add a failed conflict detection case: regular files, different modes
1106 - + t6036: add a failed conflict detection case with conflicting types
1107 - + t6036: add a failed conflict detection case with submodule add/add
1108 - + t6036: add a failed conflict detection case with submodule modify/modify
1109 - + t6036: add a failed conflict detection case with symlink add/add
1110 - + t6036: add a failed conflict detection case with symlink modify/modify
1206 +* sg/travis-cocci-diagnose-failure (2018-07-23) 2 commits
1207 + (merged to 'next' on 2018-08-02 at 54808a8778)
1208 + + travis-ci: fail if Coccinelle static analysis found something to transform
1209 + + travis-ci: run Coccinelle static analysis with two parallel jobs
1210
1112 - Tests to cover various conflicting cases have been added for
1113 - merge-recursive.
1211 + Update the way we run static analysis tool at TravisCI to make it
1212 + easier to use its findings.
1213
1214 Will merge to 'master'.
1215
1216
1118 -* en/t6036-recursive-corner-cases (2018-07-12) 2 commits
1119 - (merged to 'next' on 2018-07-24 at b7b3514ef4)
1120 - + t6036: fix broken && chain in sub-shell
1121 - + t6036: add lots of detail for directory/file conflicts in recursive case
1217 +* ab/newhash-is-sha256 (2018-07-26) 2 commits
1218 + - doc hash-function-transition: pick SHA-256 as NewHash
1219 + - doc hash-function-transition: note the lack of a changelog
1220
1123 - Tests to cover more D/F conflict cases have been added for
1124 - merge-recursive.
1221 + Documentation update.
1222 +
1223 + Will merge to 'next'.
1224 +
1225 +
1226 +* bb/redecl-enum-fix (2018-07-26) 1 commit
1227 + - packfile: ensure that enum object_type is defined
1228 +
1229 + Compilation fix.
1230 +
1231 + Will merge to 'next'.
1232 +
1233 +
1234 +* jh/structured-logging (2018-07-25) 25 commits
1235 + - structured-logging: add config data facility
1236 + - structured-logging: t0420 tests for interacitve child_summary
1237 + - structured-logging: t0420 tests for child process detail events
1238 + - structured-logging: add child process classification
1239 + - structured-logging: add detail-events for child processes
1240 + - structured-logging: add structured logging to remote-curl
1241 + - structured-logging: t0420 tests for aux-data
1242 + - structured-logging: add aux-data for size of sparse-checkout file
1243 + - structured-logging: add aux-data for index size
1244 + - structured-logging: add aux-data facility
1245 + - structured-logging: t0420 tests for timers
1246 + - structured-logging: add timer around preload_index
1247 + - structured-logging: add timer around wt-status functions
1248 + - structured-logging: add timer around do_write_index
1249 + - structured-logging: add timer around do_read_index
1250 + - structured-logging: add timer facility
1251 + - structured-logging: add detail-event for lazy_init_name_hash
1252 + - structured-logging: add detail-event facility
1253 + - structured-logging: t0420 basic tests
1254 + - structured-logging: set sub_command field for checkout command
1255 + - structured-logging: set sub_command field for branch command
1256 + - structured-logging: add session-id to log events
1257 + - structured-logging: add structured logging framework
1258 + - structured-logging: add STRUCTURED_LOGGING=1 to Makefile
1259 + - structured-logging: design document
1260 + (this branch uses jh/json-writer.)
1261 +
1262 + Will merge to 'next'.
1263 +
1264 +
1265 +* en/abort-df-conflict-fixes (2018-07-31) 2 commits
1266 + - read-cache: fix directory/file conflict handling in read_index_unmerged()
1267 + - t1015: demonstrate directory/file conflict recovery failures
1268 +
1269 + "git merge --abort" etc. did not clean things up properly when
1270 + there were conflicted entries in certain order that are involved
1271 + in D/F conflicts. This has been corrected.
1272 +
1273 + Will merge to 'next'.
1274 +
1275 +
1276 +* hs/gpgsm (2018-07-20) 7 commits
1277 + (merged to 'next' on 2018-08-02 at db28bffe4f)
1278 + + gpg-interface t: extend the existing GPG tests with GPGSM
1279 + + gpg-interface: introduce new signature format "x509" using gpgsm
1280 + + gpg-interface: introduce new config to select per gpg format program
1281 + + gpg-interface: do not hardcode the key string len anymore
1282 + + gpg-interface: introduce an abstraction for multiple gpg formats
1283 + + t/t7510: check the validation of the new config gpg.format
1284 + + gpg-interface: add new config to select how to sign a commit
1285 +
1286 + Teach "git tag -s" etc. a few configuration varaibles (gpg.format
1287 + that can be set to "openpgp" or "x509", and gpg.<format>.program
1288 + that is used to specify what program to use to deal with the format)
1289 + to allow x.509 certs with CMS via "gpgsm" to be used instead of
1290 + openpgp via "gnupg".
1291
1292 Will merge to 'master'.
1293
1294
1129 -* en/t6042-insane-merge-rename-testcases (2018-07-03) 3 commits
1130 - (merged to 'next' on 2018-07-24 at 65c80f72da)
1131 - + t6042: add testcase covering long chains of rename conflicts
1132 - + t6042: add testcase covering rename/rename(2to1)/delete/delete conflict
1133 - + t6042: add testcase covering rename/add/delete conflict type
1295 +* jn/gc-auto (2018-07-17) 3 commits
1296 + - gc: do not return error for prior errors in daemonized mode
1297 + - gc: exit with status 128 on failure
1298 + - gc: improve handling of errors reading gc.log
1299
1135 - Various glitches in the heuristics of merge-recursive strategy have
1136 - been documented in new tests.
1300 + "gc --auto" ended up calling exit(-1) upon error, which has been
1301 + corrected to use exit(1). Also the error reporting behaviour when
1302 + daemonized has been updated to exit with zero status when stopping
1303 + due to a previously discovered error (which implies there is no
1304 + point running gc to improve the situation); we used to exit with
1305 + failure in such a case.
1306 +
1307 + Stuck in review?
1308 + cf. <20180717201348.GD26218@sigill.intra.peff.net>
1309 +
1310 +
1311 +* sb/submodule-update-in-c (2018-07-18) 6 commits
1312 + - submodule--helper: introduce new update-module-mode helper
1313 + - builtin/submodule--helper: factor out method to update a single submodule
1314 + - builtin/submodule--helper: store update_clone information in a struct
1315 + - builtin/submodule--helper: factor out submodule updating
1316 + - git-submodule.sh: rename unused variables
1317 + - git-submodule.sh: align error reporting for update mode to use path
1318 +
1319 + "git submodule update" is getting rewritten piece-by-piece into C.
1320 +
1321 + Will merge to 'next'.
1322 +
1323 +
1324 +* sl/commit-dry-run-with-short-output-fix (2018-07-30) 4 commits
1325 + . commit: fix exit code when doing a dry run
1326 + . wt-status: teach wt_status_collect about merges in progress
1327 + . wt-status: rename commitable to committable
1328 + . t7501: add coverage for flags which imply dry runs
1329 +
1330 + "git commit --dry-run" gave a correct exit status even during a
1331 + conflict resolution toward a merge, but it did not with the
1332 + "--short" option, which has been corrected.
1333 +
1334 + Seems to break 7512, 3404 and 7060 in 'pu'.
1335 +
1336 +
1337 +* tg/rerere (2018-07-16) 11 commits
1338 + - rerere: recalculate conflict ID when unresolved conflict is committed
1339 + - rerere: teach rerere to handle nested conflicts
1340 + - rerere: return strbuf from handle path
1341 + - rerere: factor out handle_conflict function
1342 + - rerere: only return whether a path has conflicts or not
1343 + - rerere: fix crash when conflict goes unresolved
1344 + - rerere: add documentation for conflict normalization
1345 + - rerere: mark strings for translation
1346 + - rerere: wrap paths in output in sq
1347 + - rerere: lowercase error messages
1348 + - rerere: unify error messages when read_cache fails
1349
1138 - Will merge to 'master'.
1350 + Fixes to "git rerere" corner cases, especially when conflict
1351 + markers cannot be parsed in the file.
1352
1140 - I am not sure if there is a single "correct" answer everybody can
1141 - agree on for each of these "insane" cases, though.
1353 + I am not sure about the "nested" stuff, though.
1354
1355
1144 -* en/t7405-recursive-submodule-conflicts (2018-07-11) 3 commits
1145 - (merged to 'next' on 2018-07-24 at 6cb7d02298)
1146 - + t7405: verify 'merge --abort' works after submodule/path conflicts
1147 - + t7405: add a directory/submodule conflict
1148 - + t7405: add a file/submodule conflict
1356 +* jk/ui-color-always-to-auto (2018-07-18) 1 commit
1357 + (merged to 'next' on 2018-08-02 at 1a054baf0e)
1358 + + Documentation: fix --color option formatting
1359
1150 - Tests to cover conflict cases that involve submodules have been
1151 - added for merge-recursive.
1360 + Doc formatting fix.
1361
1362 Will merge to 'master'.
1363
1364
1156 -* es/test-fixes (2018-07-17) 26 commits
1157 - (merged to 'next' on 2018-07-24 at fd6796a3ef)
1158 - + t5608: fix broken &&-chain
1159 - + t9119: fix broken &&-chains
1160 - + t9000-t9999: fix broken &&-chains
1161 - + t7000-t7999: fix broken &&-chains
1162 - + t6000-t6999: fix broken &&-chains
1163 - + t5000-t5999: fix broken &&-chains
1164 - + t4000-t4999: fix broken &&-chains
1165 - + t3030: fix broken &&-chains
1166 - + t3000-t3999: fix broken &&-chains
1167 - + t2000-t2999: fix broken &&-chains
1168 - + t1000-t1999: fix broken &&-chains
1169 - + t0000-t0999: fix broken &&-chains
1170 - + t9814: simplify convoluted check that command correctly errors out
1171 - + t9001: fix broken "invoke hook" test
1172 - + t7810: use test_expect_code() instead of hand-rolled comparison
1173 - + t7400: fix broken "submodule add/reconfigure --force" test
1174 - + t7201: drop pointless "exit 0" at end of subshell
1175 - + t6036: fix broken "merge fails but has appropriate contents" tests
1176 - + t5505: modernize and simplify hard-to-digest test
1177 - + t5406: use write_script() instead of birthing shell script manually
1178 - + t5405: use test_must_fail() instead of checking exit code manually
1179 - + t/lib-submodule-update: fix "absorbing" test
1180 - + t: drop unnecessary terminating semicolon in subshell
1181 - + t: use sane_unset() rather than 'unset' with broken &&-chain
1182 - + t: use test_write_lines() instead of series of 'echo' commands
1183 - + t: use test_might_fail() instead of manipulating exit code manually
1184 - (this branch is used by es/chain-lint-in-subshell.)
1365 +* jh/json-writer (2018-07-16) 1 commit
1366 + (merged to 'next' on 2018-08-02 at d841450c7d)
1367 + + json_writer: new routines to create JSON data
1368 + (this branch is used by jh/structured-logging.)
1369
1186 - Test clean-up and corrections.
1370 + Preparatory code to later add json output for telemetry data.
1371
1372 Will merge to 'master'.
1373
1374
1191 -* jk/fsck-gitmodules-gently (2018-07-16) 6 commits
1192 - (merged to 'next' on 2018-07-24 at 5b15c800db)
1193 - + fsck: downgrade gitmodulesParse default to "info"
1194 - + fsck: split ".gitmodules too large" error from parse failure
1195 - + fsck: silence stderr when parsing .gitmodules
1196 - + config: add options parameter to git_config_from_mem
1197 - + config: add CONFIG_ERROR_SILENT handler
1198 - + config: turn die_on_error into caller-facing enum
1375 +* ag/rebase-i-in-c (2018-07-31) 20 commits
1376 + - rebase -i: move rebase--helper modes to rebase--interactive
1377 + - rebase -i: remove git-rebase--interactive.sh
1378 + - rebase--interactive2: rewrite the submodes of interactive rebase in C
1379 + - rebase -i: implement the main part of interactive rebase as a builtin
1380 + - rebase -i: rewrite init_basic_state() in C
1381 + - rebase -i: rewrite write_basic_state() in C
1382 + - rebase -i: rewrite the rest of init_revisions_and_shortrevisions() in C
1383 + - rebase -i: implement the logic to initialize $revisions in C
1384 + - rebase -i: remove unused modes and functions
1385 + - rebase -i: rewrite complete_action() in C
1386 + - t3404: todo list with commented-out commands only aborts
1387 + - sequencer: change the way skip_unnecessary_picks() returns its result
1388 + - sequencer: refactor append_todo_help() to write its message to a buffer
1389 + - rebase -i: rewrite checkout_onto() in C
1390 + - rebase -i: rewrite setup_reflog_action() in C
1391 + - sequencer: add a new function to silence a command, except if it fails
1392 + - rebase -i: rewrite the edit-todo functionality in C
1393 + - editor: add a function to launch the sequence editor
1394 + - rebase -i: rewrite append_todo_help() in C
1395 + - sequencer: make two functions and an enum from sequencer.c public
1396
1200 - Recent "security fix" to pay attention to contents of ".gitmodules"
1201 - while accepting "git push" was a bit overly strict than necessary,
1202 - which has been adjusted.
1397 + Rewrite of the remaining "rebase -i" machinery in C.
1398
1204 - Will merge to 'master'.
1399 + Will merge to 'next'.
1400
1401
1207 -* js/range-diff (2018-07-25) 21 commits
1402 +* js/range-diff (2018-07-30) 21 commits
1403 - range-diff: use dim/bold cues to improve dual color mode
1404 - range-diff: make --dual-color the default mode
1405 - range-diff: left-pad patch numbers
@@ -1226,55 +1421,14 @@ of the repositories listed at
1421 - range-diff: first rudimentary implementation
1422 - Introduce `range-diff` to compare iterations of a topic branch
1423 - linear-assignment: a function to solve least-cost assignment problems
1229 - (this branch is used by es/format-patch-rangediff.)
1424 + (this branch is used by es/format-patch-rangediff and sb/range-diff-colors.)
1425
1426 "git tbdiff" that lets us compare individual patches in two
1427 iterations of a topic has been rewritten and made into a built-in
1428 command.
1429
1235 - Undecided.
1236 -
1237 - Many "The feature is useful" comments without much real review; we
1238 - know the feature is great as this mimicks tbdiff already so that is
1239 - not news.
1240 -
1241 - I've squashed an obvious documentation fix in before rebasing the
1242 - other topic that depends on it. I _think_ we would probably be
1243 - better off to _disable_ whitespace-error coloring altogether when
1244 - showing diff-of-diff, and get rid of the workaround that only is
1245 - applicable to the context lines of the outer diff (unless we first
1246 - define how whitespace errors in diff-of-diff should be colored and
1247 - implement it correctly, that is, but after seeing these two
1248 - attempts, it seems that is harder than it is worth).
1249 -
1250 -
1251 -* jt/commit-graph-per-object-store (2018-07-17) 7 commits
1252 - (merged to 'next' on 2018-07-24 at 090d1a4d59)
1253 - + commit-graph: add repo arg to graph readers
1254 - + commit-graph: store graph in struct object_store
1255 - + commit-graph: add free_commit_graph
1256 - + commit-graph: add missing forward declaration
1257 - + object-store: add missing include
1258 - + commit-graph: refactor preparing commit graph
1259 - + Merge branch 'ds/commit-graph-fsck' into jt/commit-graph-per-object-store
1260 - (this branch is used by ds/commit-graph-with-grafts and ds/reachable; uses ds/commit-graph-fsck and sb/object-store-lookup.)
1261 -
1262 - The singleton commit-graph in-core instance is made per in-core
1263 - repository instance.
1264 -
1265 - Will merge to 'master'.
1266 -
1267 -
1268 -* kg/gc-auto-windows-workaround (2018-07-09) 1 commit
1269 - (merged to 'next' on 2018-07-24 at 71c05d27b6)
1270 - + gc --auto: release pack files before auto packing
1271 -
1272 - "git gc --auto" opens file descriptors for the packfiles before
1273 - spawning "git repack/prune", which would upset Windows that does
1274 - not want a process to work on a file that is open by another
1275 - process. The issue has been worked around.
1276 -
1277 - Will merge to 'master'.
1430 + It seems there will another hopefully the final reroll coming.
1431 + cf. <nycvar.QRO.7.76.6.1808011800570.71@tvgsbejvaqbjf.bet>
1432
1433
1434 * lt/date-human (2018-07-09) 1 commit
@@ -1300,42 +1454,17 @@ of the repositories listed at
1454 header. These cases have been optimzied by calling
1455 oid_object_info() API.
1456
1303 - What's the doneness of this one?
1457 + Will merge to 'next'.
1458
1459
1306 -* pk/rebase-in-c (2018-07-23) 4 commits
1460 +* pk/rebase-in-c (2018-07-30) 3 commits
1461 - builtin/rebase: support running "git rebase <upstream>"
1308 - - sequencer: refactor the code to detach HEAD to checkout.c
1462 - rebase: refactor common shell functions into their own file
1463 - rebase: start implementing it as a builtin
1464
1312 - Piecemeal rewrite of the "rebase" machinery in C.
1313 - Expecting a reroll, but it seems that this is getting quite close.
1314 - cf. <CAOZc8M8YmLwJOzG-1jyz8ft4W_tJMwNs6kSV8inX1q_zmDW8Sg@mail.gmail.com>
1315 -
1316 -
1317 -* jt/fetch-nego-tip (2018-07-03) 1 commit
1318 - (merged to 'next' on 2018-07-24 at a9e299006d)
1319 - + fetch-pack: support negotiation tip whitelist
1320 - (this branch uses jt/fetch-pack-negotiator; is tangled with jt/fetch-negotiator-skipping.)
1321 -
1322 - "git fetch" learned a new option "--negotiation-tip" to limit the
1323 - set of commits it tells the other end as "have", to reduce wasted
1324 - bandwidth and cycles, which would be helpful when the receiving
1325 - repository has a lot of refs that have little to do with the
1326 - history at the remote it is fetching from.
1327 -
1328 - Will merge to 'master'.
1329 -
1330 -
1331 -* tb/grep-only-matching (2018-07-09) 2 commits
1332 - (merged to 'next' on 2018-07-24 at 7e878b9d95)
1333 - + grep.c: teach 'git grep --only-matching'
1334 - + grep.c: extract show_line_header()
1335 -
1336 - "git grep" learned the "--only-matching" option.
1465 + Rewrite of the "rebase" machinery in C.
1466
1338 - Will merge to 'master'.
1467 + Will merge to 'next'.
1468
1469
1470 * jk/branch-l-1-repurpose (2018-06-22) 1 commit
@@ -1346,7 +1475,7 @@ of the repositories listed at
1475 Will hold in 'pu' until jk/branch-l-0-deprecation progresses sufficiently.
1476
1477
1349 -* cc/remote-odb (2018-07-16) 9 commits
1478 +* cc/remote-odb (2018-08-02) 9 commits
1479 - Documentation/config: add odb.<name>.promisorRemote
1480 - t0410: test fetching from many promisor remotes
1481 - Use odb.origin.partialclonefilter instead of core.partialclonefilter
@@ -1357,6 +1486,17 @@ of the repositories listed at
1486 - Add initial remote odb support
1487 - fetch-object: make functions return an error code
1488
1489 + Implement lazy fetches of missing objects to complement the
1490 + experimental partial clone feature.
1491 +
1492 + I haven't seen much interest in this topic on list. What's the
1493 + doneness of this thing?
1494 +
1495 + I do not particularly mind adding code to support a niche feature
1496 + as long as it is cleanly made and it is clear that the feature
1497 + won't negatively affect those who do not use it, so a review from
1498 + that point of view may also be appropriate.
1499 +
1500
1501 * ds/multi-pack-index (2018-07-20) 23 commits
1502 - midx: clear midx on repack
@@ -1388,136 +1528,25 @@ of the repositories listed at
1528 consulting many pack .idx files; a new mechanism to have a single
1529 file that consolidates all of these .idx files is introduced.
1530
1391 - Ready to move to 'next', with some known issues to be followed up?
1392 - cf. <xmqqefg8uplg.fsf@gitster-ct.c.googlers.com>
1393 - cf. <CAPig+cTU--KrGcv4C_CwBZEuec4dgm_tJqL=CFWKT6vxxR016w@mail.gmail.com>
1394 -
1395 -
1396 -* jt/fetch-pack-negotiator (2018-06-15) 7 commits
1397 - (merged to 'next' on 2018-07-24 at 438efcd6b1)
1398 - + fetch-pack: introduce negotiator API
1399 - + fetch-pack: move common check and marking together
1400 - + fetch-pack: make negotiation-related vars local
1401 - + fetch-pack: use ref adv. to prune "have" sent
1402 - + fetch-pack: directly end negotiation if ACK ready
1403 - + fetch-pack: clear marks before re-marking
1404 - + fetch-pack: split up everything_local()
1405 - (this branch is used by jt/fetch-nego-tip and jt/fetch-negotiator-skipping.)
1406 -
1407 - Code restructuring and a small fix to transport protocol v2 during
1408 - fetching.
1409 -
1410 - Will merge to 'master'.
1411 -
1412 -
1413 -* is/parsing-line-range (2018-06-15) 2 commits
1414 - (merged to 'next' on 2018-07-24 at a06b453f32)
1415 - + log: prevent error if line range ends past end of file
1416 - + blame: prevent error if range ends past end of file
1417 -
1418 - Parsing of -L[<N>][,[<M>]] parameters "git blame" and "git log"
1419 - take has been tweaked.
1420 -
1421 - Will merge to 'master'.
1422 -
1423 -
1424 -* ab/checkout-default-remote (2018-06-11) 8 commits
1425 - (merged to 'next' on 2018-07-24 at 6ef645f485)
1426 - + checkout & worktree: introduce checkout.defaultRemote
1427 - + checkout: add advice for ambiguous "checkout <branch>"
1428 - + builtin/checkout.c: use "ret" variable for return
1429 - + checkout: pass the "num_matches" up to callers
1430 - + checkout.c: change "unique" member to "num_matches"
1431 - + checkout.c: introduce an *_INIT macro
1432 - + checkout.h: wrap the arguments to unique_tracking_name()
1433 - + checkout tests: index should be clean after dwim checkout
1434 -
1435 - "git checkout" and "git worktree add" learned to honor
1436 - checkout.defaultRemote when auto-vivifying a local branch out of a
1437 - remote tracking branch in a repository with multiple remotes that
1438 - have tracking branches that share the same names.
1439 -
1440 - Will merge to 'master'.
1441 -
1442 -
1443 -* ds/commit-graph-fsck (2018-07-16) 23 commits
1444 - (merged to 'next' on 2018-07-24 at 6a802adc7a)
1445 - + coccinelle: update commit.cocci
1446 - + commit-graph: update design document
1447 - + gc: automatically write commit-graph files
1448 - + commit-graph: add '--reachable' option
1449 - + commit-graph: use string-list API for input
1450 - + fsck: verify commit-graph
1451 - + commit-graph: verify contents match checksum
1452 - + commit-graph: test for corrupted octopus edge
1453 - + commit-graph: verify commit date
1454 - + commit-graph: verify generation number
1455 - + commit-graph: verify parent list
1456 - + commit-graph: verify root tree OIDs
1457 - + commit-graph: verify objects exist
1458 - + commit-graph: verify corrupt OID fanout and lookup
1459 - + commit-graph: verify required chunks are present
1460 - + commit-graph: verify catches corrupt signature
1461 - + commit-graph: add 'verify' subcommand
1462 - + commit-graph: load a root tree from specific graph
1463 - + commit: force commit to parse from object database
1464 - + commit-graph: parse commit from chosen graph
1465 - + commit-graph: fix GRAPH_MIN_SIZE
1466 - + commit-graph: UNLEAK before die()
1467 - + t5318-commit-graph.sh: use core.commitGraph
1468 - (this branch is used by ds/commit-graph-with-grafts, ds/reachable and jt/commit-graph-per-object-store.)
1469 -
1470 - "git fsck" learns to make sure the optional commit-graph file is in
1471 - a sane state.
1472 -
1473 - Will merge to 'master'.
1474 -
1475 -
1476 -* ma/wrapped-info (2018-05-28) 2 commits
1477 - - usage: prefix all lines in `vreportf()`, not just the first
1478 - - usage: extract `prefix_suffix_lines()` from `advise()`
1479 -
1480 - An attempt to help making multi-line messages fed to warning(),
1481 - error(), and friends more easily translatable.
1482 -
1483 - Will discard and wait for a cleaned-up rewrite.
1484 - cf. <20180529213957.GF7964@sigill.intra.peff.net>
1531 + Will merge to and cook in 'next'.
1532
1533
1487 -* jm/cache-entry-from-mem-pool (2018-07-03) 8 commits
1488 - (merged to 'next' on 2018-07-24 at 9be51a88dc)
1489 - + block alloc: add validations around cache_entry lifecyle
1490 - + block alloc: allocate cache entries from mem_pool
1491 - + mem-pool: fill out functionality
1492 - + mem-pool: add life cycle management functions
1493 - + mem-pool: only search head block for available space
1494 - + block alloc: add lifecycle APIs for cache_entry structs
1495 - + read-cache: teach make_cache_entry to take object_id
1496 - + read-cache: teach refresh_cache_entry to take istate
1534 +--------------------------------------------------
1535 +[Discarded]
1536
1498 - For a large tree, the index needs to hold many cache entries
1499 - allocated on heap. These cache entries are now allocated out of a
1500 - dedicated memory pool to amortize malloc(3) overhead.
1537 +* am/sequencer-author-script-fix (2018-07-18) 1 commit
1538 + . sequencer.c: terminate the last line of author-script properly
1539
1502 - Will merge to 'master'.
1540 + The author-script that records the author information created by
1541 + the sequencer machinery lacked the closing single quote on the last
1542 + entry.
1543
1504 - This makes each cache-entry larger by either 4 or 8 bytes, which is
1505 - a bit sad, though.
1544 + Superseded by another topic.
1545
1546
1508 -* sb/diff-color-move-more (2018-07-19) 10 commits
1509 - (merged to 'next' on 2018-07-24 at 89c893cab2)
1510 - + diff.c: offer config option to control ws handling in move detection
1511 - + diff.c: add white space mode to move detection that allows indent changes
1512 - + diff.c: factor advance_or_nullify out of mark_color_as_moved
1513 - + diff.c: decouple white space treatment from move detection algorithm
1514 - + diff.c: add a blocks mode for moved code detection
1515 - + diff.c: adjust hash function signature to match hashmap expectation
1516 - + diff.c: do not pass diff options as keydata to hashmap
1517 - + t4015: avoid git as a pipe input
1518 - + xdiff/xdiffi.c: remove unneeded function declarations
1519 - + xdiff/xdiff.h: remove unused flags
1547 +* jc/push-cas-opt-comment (2018-08-01) 1 commit
1548 + . push: comment on a funny unbalanced option help
1549
1521 - "git diff --color-moved" feature has further been tweaked.
1550 + Code clarification.
1551
1523 - Will merge to 'master'.
1552 + Superseded by another topic.