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.