What's cooking (2017/09 #03)

Junio C Hamano committed Sep 15, 2017 at 14:49 UTC df064b07706440941d316f72a61a168c6cfbf932
1 file changed +417 -305
whats-cooking.txt
+417 -305
@@ -1,10 +1,10 @@
1 To: git@vger.kernel.org
2 Bcc: lwn@lwn.net
3 -Subject: What's cooking in git.git (Sep 2017, #02; Mon, 11)
3 +Subject: What's cooking in git.git (Sep 2017, #03; Fri, 15)
4 X-master-at: 6867272d5b5615bd74ec97bf35b4c4a8d9fe3a51
5 -X-next-at: bb1197296efa678ff409ab67d32a984cae7b07a6
5 +X-next-at: 8fa685d3b7c93b129c2017f1ba5db82ebb76a715
6
7 -What's cooking in git.git (Sep 2017, #02; Mon, 11)
7 +What's cooking in git.git (Sep 2017, #03; Fri, 15)
8 --------------------------------------------------
9
10 Here are the topics that have been cooking. Commits prefixed with
@@ -23,130 +23,299 @@ of the repositories listed at
23 http://git-blame.blogspot.com/p/git-public-repositories.html
24
25 --------------------------------------------------
26 -[Graduated to "master"]
26 +[New Topics]
27
28 -* jk/drop-sha1-entry-pos (2017-08-25) 1 commit
29 - (merged to 'next' on 2017-08-25 at 7ef03bb281)
30 - + sha1-lookup: remove sha1_entry_pos() from header file
28 +* cc/subprocess-handshake-missing-capabilities (2017-09-11) 1 commit
29 + - subprocess: loudly die when subprocess asks for an unsupported capability
30 +
31 + Finishing touches to a topic already in 'master'.
32 +
33 + Will merge to 'next'.
34 +
35 +
36 +* bw/protocol-v1 (2017-09-14) 8 commits
37 + - i5700: add interop test for protocol transition
38 + - http: tell server that the client understands v1
39 + - connect: tell server that the client understands v1
40 + - connect: teach client to recognize v1 server response
41 + - upload-pack, receive-pack: introduce protocol version 1
42 + - daemon: recognize hidden request arguments
43 + - protocol: introduce protocol extention mechanisms
44 + - pkt-line: add packet_write function
45 +
46 + A new mechanism to upgrade the wire protocol in place is proposed
47 + and demonstrated that it works with the older versions of Git
48 + without harming them.
49 +
50 +
51 +* ez/doc-duplicated-words-fix (2017-09-14) 1 commit
52 + - doc: fix minor typos (extra/duplicated words)
53 +
54 + Typofix.
55 +
56 + Will merge to 'next'.
57 +
58 +
59 +* jk/write-in-full-fix (2017-09-14) 8 commits
60 + - read_pack_header: handle signed/unsigned comparison in read result
61 + - config: flip return value of store_write_*()
62 + - notes-merge: use ssize_t for write_in_full() return value
63 + - pkt-line: check write_in_full() errors against "< 0"
64 + - convert less-trivial versions of "write_in_full() != len"
65 + - avoid "write_in_full(fd, buf, len) != len" pattern
66 + - get-tar-commit-id: check write_in_full() return against 0
67 + - config: avoid "write_in_full(fd, buf, len) < len" pattern
68 +
69 + Many codepaths did not diagnose write failures correctly when disks
70 + go full, due to their misuse of write_in_full() helper function,
71 + which have been corrected.
72 +
73 + Will merge to 'next'.
74 +
75 +
76 +* jn/per-repo-object-store-fixes (2017-09-14) 3 commits
77 + - replace-objects: evaluate replacement refs without using the object store
78 + - push, fetch: error out for submodule entries not pointing to commits
79 + - pack: make packed_git_mru global a value instead of a pointer
80 +
81 + Step #0 of a planned & larger series.
82 +
83 + Will merge to 'next'.
84
32 - Code clean-up.
85
86 +* ks/commit-do-not-touch-cut-line (2017-09-15) 1 commit
87 + - commit-template: change a message to be more intuitive
88
35 -* ls/convert-filter-progress (2017-08-24) 1 commit
36 - (merged to 'next' on 2017-08-25 at ce0bb30e8f)
37 - + convert: display progress for filtered objects that have been delayed
89 + The explanation of the cut-line in the commit log editor has been
90 + slightly tweaked.
91 +
92 + Will merge to 'next'.
93
39 - The codepath to call external process filter for smudge/clean
40 - operation learned to show the progress meter.
94
95 +* ks/help-alias-label (2017-09-14) 1 commit
96 + - help: change a message to be more precise
97
43 -* ma/ts-cleanups (2017-08-23) 4 commits
44 - (merged to 'next' on 2017-08-25 at e0e8cc53ec)
45 - + ThreadSanitizer: add suppressions
46 - + strbuf_setlen: don't write to strbuf_slopbuf
47 - + pack-objects: take lock before accessing `remaining`
48 - + convert: always initialize attr_action in convert_attrs
98 + "git help co" now says "co is aliased to ...", not "git co is".
99 +
100 + Will merge to 'next'.
101
50 - Assorted bugfixes and clean-ups.
102
103 +* mh/mmap-packed-refs (2017-09-14) 20 commits
104 + - packed-backend.c: rename a bunch of things and update comments
105 + - mmapped_ref_iterator: inline into `packed_ref_iterator`
106 + - ref_cache: remove support for storing peeled values
107 + - packed_ref_store: get rid of the `ref_cache` entirely
108 + - ref_store: implement `refs_peel_ref()` generically
109 + - packed_read_raw_ref(): read the reference from the mmapped buffer
110 + - packed_ref_iterator_begin(): iterate using `mmapped_ref_iterator`
111 + - read_packed_refs(): ensure that references are ordered when read
112 + - packed_ref_cache: keep the `packed-refs` file open and mmapped
113 + - mmapped_ref_iterator_advance(): no peeled value for broken refs
114 + - mmapped_ref_iterator: add iterator over a packed-refs file
115 + - packed_ref_cache: remember the file-wide peeling state
116 + - read_packed_refs(): read references with minimal copying
117 + - read_packed_refs(): make parsing of the header line more robust
118 + - read_packed_refs(): only check for a header at the top of the file
119 + - read_packed_refs(): use mmap to read the `packed-refs` file
120 + - die_unterminated_line(), die_invalid_line(): new functions
121 + - packed_ref_cache: add a backlink to the associated `packed_ref_store`
122 + - prefix_ref_iterator: break when we leave the prefix
123 + - ref_iterator: keep track of whether the iterator output is ordered
124 + (this branch uses mh/packed-ref-transactions.)
125 +
126 + Operations that do not touch (majority of) packed refs have been
127 + optimized by making accesses to packed-refs file lazy; we no longer
128 + pre-parse everything, and an access to a single ref in the
129 + packed-refs does not touch majority of irrelevant refs, either.
130 +
131 + Expecting a rework to also work on Windows.
132 +
133 +
134 +* nm/imap-send-with-curl (2017-09-15) 4 commits
135 + - imap-send: use curl by default when possible
136 + - imap_send: setup_curl: retreive credentials if not set in config file
137 + - imap-send: add wrapper to get server credentials if needed
138 + - imap-send: return with error if curl failed
139 +
140 + "git imap-send" has our own implementation of the protocol and also
141 + can use more recent libCurl with the imap protocol support. Update
142 + the latter so that it can use the credential subsystem, and then
143 + make it the default option to use, so that we can eventually
144 + deprecate and remove the former.
145
53 -* ma/up-to-date (2017-08-23) 2 commits
54 - (merged to 'next' on 2017-08-25 at 902f6e9140)
55 - + treewide: correct several "up-to-date" to "up to date"
56 - + Documentation/user-manual: update outdated example output
146 + Will merge to 'next'.
147
58 - Message and doc updates.
148
149 +* rj/test-ulimit-on-windows (2017-09-15) 1 commit
150 + - test-lib: don't use ulimit in test prerequisites on cygwin
151 + (this branch uses mg/name-rev-tests-with-short-stack.)
152
61 -* mm/send-email-cc-cruft (2017-08-24) 2 commits
62 - (merged to 'next' on 2017-08-25 at 65933523ab)
63 - + send-email: don't use Mail::Address, even if available
64 - + send-email: fix garbage removal after address
153 + On Cygwin, "ulimit -s" does not report failure but it does not work
154 + at all, which causes an unexpected success of some tests that
155 + expect failures under a limited stack situation. This has been
156 + fixed.
157
66 - In addition to "cc: <a@dd.re.ss> # cruft", "cc: a@dd.re.ss # cruft"
67 - was taught to "git send-email" as a valid way to tell it that it
68 - needs to also send a carbon copy to <a@dd.re.ss> in the trailer
69 - section.
158 + Will merge to 'next'.
159
160
72 -* nd/worktree-kill-parse-ref (2017-08-24) 1 commit
73 - (merged to 'next' on 2017-08-25 at a5da82b2ea)
74 - + branch: fix branch renaming not updating HEADs correctly
161 +* rs/archive-excluded-directory (2017-09-14) 1 commit
162 + - archive: don't add empty directories to archives
163
76 - "git branch -M a b" while on a branch that is completely unrelated
77 - to either branch a or branch b misbehaved when multiple worktree
78 - was in use. This has been fixed.
164 + "git archive", especially when used with pathspec, stored an empty
165 + directory in its output, even though Git itself never does so.
166 + This has been fixed.
167
168 + Will merge to 'next'.
169
81 -* rs/apply-epoch (2017-08-25) 2 commits
82 - (merged to 'next' on 2017-08-26 at c2bf5ceca3)
83 - + apply: remove epoch date from regex
84 - + apply: check date of potential epoch timestamps first
170
86 - Code simplification.
171 +* tg/refs-allowed-flags (2017-09-14) 1 commit
172 + - refs: strip out not allowed flags from ref_transaction_update
173 +
174 + API error-proofing which happens to also squelch warnings from GCC.
175 +
176 + Will merge to 'next'.
177
178 --------------------------------------------------
89 -[New Topics]
179 +[Stalled]
180 +
181 +* mg/status-in-progress-info (2017-05-10) 2 commits
182 + - status --short --inprogress: spell it as --in-progress
183 + - status: show in-progress info for short status
184 +
185 + "git status" learns an option to report various operations
186 + (e.g. "merging") that the user is in the middle of.
187 +
188 + cf. <xmqqmvakcdqw.fsf@gitster.mtv.corp.google.com>
189 +
190 +
191 +* nd/worktree-move (2017-04-20) 6 commits
192 + - worktree remove: new command
193 + - worktree move: refuse to move worktrees with submodules
194 + - worktree move: accept destination as directory
195 + - worktree move: new command
196 + - worktree.c: add update_worktree_location()
197 + - worktree.c: add validate_worktree()
198 +
199 + "git worktree" learned move and remove subcommands.
200 +
201 + Expecting a reroll.
202 + cf. <20170420101024.7593-1-pclouds@gmail.com>
203 + cf. <20170421145916.mknekgqzhxffu7di@sigill.intra.peff.net>
204 + cf. <d0e81b1e-5869-299e-f462-4d43dc997bd1@ramsayjones.plus.com>
205 +
206 +
207 +* sg/clone-refspec-from-command-line-config (2017-06-16) 2 commits
208 + - Documentation/clone: document ignored configuration variables
209 + - clone: respect additional configured fetch refspecs during initial fetch
210 + (this branch is used by sg/remote-no-string-refspecs.)
211 +
212 + "git clone -c var=val" is a way to set configuration variables in
213 + the resulting repository, but it is more useful to also make these
214 + variables take effect while the initial clone is happening,
215 + e.g. these configuration variables could be fetch refspecs.
216 +
217 + Waiting for a response.
218 + cf. <20170617112228.vugswym4o4owf6wj@sigill.intra.peff.net>
219 + cf. <xmqqmv8zhdap.fsf@gitster.mtv.corp.google.com>
220 +
221 +
222 +* js/rebase-i-final (2017-07-27) 10 commits
223 + - rebase -i: rearrange fixup/squash lines using the rebase--helper
224 + - t3415: test fixup with wrapped oneline
225 + - rebase -i: skip unnecessary picks using the rebase--helper
226 + - rebase -i: check for missing commits in the rebase--helper
227 + - t3404: relax rebase.missingCommitsCheck tests
228 + - rebase -i: also expand/collapse the SHA-1s via the rebase--helper
229 + - rebase -i: do not invent onelines when expanding/collapsing SHA-1s
230 + - rebase -i: remove useless indentation
231 + - rebase -i: generate the script via rebase--helper
232 + - t3415: verify that an empty instructionFormat is handled as before
233 +
234 + The final batch to "git rebase -i" updates to move more code from
235 + the shell script to C.
236 +
237 + Expecting a reroll.
238 +
239 +
240 +* bp/fsmonitor (2017-06-12) 6 commits
241 + - fsmonitor: add a sample query-fsmonitor hook script for Watchman
242 + - fsmonitor: add documentation for the fsmonitor extension.
243 + - fsmonitor: add test cases for fsmonitor extension
244 + - fsmonitor: teach git to optionally utilize a file system monitor to speed up detecting new or changed files.
245 + - dir: make lookup_untracked() available outside of dir.c
246 + - bswap: add 64 bit endianness helper get_be64
247 +
248 + We learned to talk to watchman to speed up "git status".
249 +
250 + Expecting a reroll.
251 + cf. <bade1166-e646-b05a-f65b-adb8da8ba0a7@gmail.com>
252 +
253 +--------------------------------------------------
254 +[Cooking]
255
256 * bb/doc-eol-dirty (2017-09-07) 1 commit
92 - - Documentation: mention that `eol` can change the dirty status of paths
257 + (merged to 'next' on 2017-09-14 at 2f0cb688c6)
258 + + Documentation: mention that `eol` can change the dirty status of paths
259
260 Doc update.
261
96 - Will merge to 'next'.
262 + Will merge to 'master'.
263
264
265 * jh/hashmap-disable-counting (2017-09-07) 1 commit
100 - - hashmap: add API to disable item counting when threaded
266 + (merged to 'next' on 2017-09-14 at bbc08f4222)
267 + + hashmap: add API to disable item counting when threaded
268
269 Our hashmap implementation in hashmap.[ch] is not thread-safe when
270 adding a new item needs to expand the hashtable by rehashing; add
271 an API to disable the automatic rehashing to work it around.
272
106 - Will merge to 'next'.
273 + Will merge to 'master'.
274
275
276 * jk/incore-lockfile-removal (2017-09-06) 20 commits
110 - - stop leaking lock structs in some simple cases
111 - - ref_lock: stop leaking lock_files
112 - - lockfile: update lifetime requirements in documentation
113 - - tempfile: auto-allocate tempfiles on heap
114 - - tempfile: remove deactivated list entries
115 - - tempfile: use list.h for linked list
116 - - tempfile: release deactivated strbufs instead of resetting
117 - - tempfile: robustify cleanup handler
118 - - tempfile: factor out deactivation
119 - - tempfile: factor out activation
120 - - tempfile: replace die("BUG") with BUG()
121 - - tempfile: handle NULL tempfile pointers gracefully
122 - - tempfile: prefer is_tempfile_active to bare access
123 - - lockfile: do not rollback lock on failed close
124 - - tempfile: do not delete tempfile on failed close
125 - - always check return value of close_tempfile
126 - - verify_signed_buffer: prefer close_tempfile() to close()
127 - - setup_temporary_shallow: move tempfile struct into function
128 - - setup_temporary_shallow: avoid using inactive tempfile
129 - - write_index_as_tree: cleanup tempfile on error
277 + (merged to 'next' on 2017-09-14 at 603dae7fb2)
278 + + stop leaking lock structs in some simple cases
279 + + ref_lock: stop leaking lock_files
280 + + lockfile: update lifetime requirements in documentation
281 + + tempfile: auto-allocate tempfiles on heap
282 + + tempfile: remove deactivated list entries
283 + + tempfile: use list.h for linked list
284 + + tempfile: release deactivated strbufs instead of resetting
285 + + tempfile: robustify cleanup handler
286 + + tempfile: factor out deactivation
287 + + tempfile: factor out activation
288 + + tempfile: replace die("BUG") with BUG()
289 + + tempfile: handle NULL tempfile pointers gracefully
290 + + tempfile: prefer is_tempfile_active to bare access
291 + + lockfile: do not rollback lock on failed close
292 + + tempfile: do not delete tempfile on failed close
293 + + always check return value of close_tempfile
294 + + verify_signed_buffer: prefer close_tempfile() to close()
295 + + setup_temporary_shallow: move tempfile struct into function
296 + + setup_temporary_shallow: avoid using inactive tempfile
297 + + write_index_as_tree: cleanup tempfile on error
298
299 The long-standing rule that an in-core lockfile instance, once it
300 is used, must not be freed, has been lifted and the lockfile and
301 tempfile APIs have been updated to reduce the chance of programming
302 errors.
303
136 - Will merge to 'next'.
304 + Will merge to 'master'.
305
306
307 * jk/leak-checkers (2017-09-08) 10 commits
140 - - add UNLEAK annotation for reducing leak false positives
141 - - set_git_dir: handle feeding gitdir to itself
142 - - repository: free fields before overwriting them
143 - - reset: free allocated tree buffers
144 - - reset: make tree counting less confusing
145 - - config: plug user_config leak
146 - - update-index: fix cache entry leak in add_one_file()
147 - - add: free leaked pathspec after add_files_to_cache()
148 - - test-lib: set LSAN_OPTIONS to abort by default
149 - - test-lib: --valgrind should not override --verbose-log
308 + (merged to 'next' on 2017-09-14 at 906ed9f590)
309 + + add UNLEAK annotation for reducing leak false positives
310 + + set_git_dir: handle feeding gitdir to itself
311 + + repository: free fields before overwriting them
312 + + reset: free allocated tree buffers
313 + + reset: make tree counting less confusing
314 + + config: plug user_config leak
315 + + update-index: fix cache entry leak in add_one_file()
316 + + add: free leaked pathspec after add_files_to_cache()
317 + + test-lib: set LSAN_OPTIONS to abort by default
318 + + test-lib: --valgrind should not override --verbose-log
319
320 Many of our programs consider that it is OK to release dynamic
321 storage that is used throughout the life of the program by simply
@@ -155,304 +324,195 @@ of the repositories listed at
324 a mechanism for developers to mark that the region of memory
325 pointed by a pointer is not lost/leaking to help these tools.
326
158 - Will merge to 'next'.
327 + Will merge to 'master'.
328
329
330 * jk/system-path-cleanup (2017-09-07) 2 commits
162 - - git_extract_argv0_path: do nothing without RUNTIME_PREFIX
163 - - system_path: move RUNTIME_PREFIX to a sub-function
331 + (merged to 'next' on 2017-09-14 at c6faaf8858)
332 + + git_extract_argv0_path: do nothing without RUNTIME_PREFIX
333 + + system_path: move RUNTIME_PREFIX to a sub-function
334
335 Code clean-up.
336
167 - Will merge to 'next'.
168 -
169 -
170 -* jn/per-repo-obj-store (2017-09-07) 39 commits
171 - - pack: allow sha1_loose_object_info to handle arbitrary repositories
172 - - pack: allow map_sha1_file to handle arbitrary repositories
173 - - pack: allow map_sha1_file_1 to handle arbitrary repositories
174 - - pack: allow open_sha1_file to handle arbitrary repositories
175 - - pack: allow stat_sha1_file to handle arbitrary repositories
176 - - pack: allow sha1_file_name to handle arbitrary repositories
177 - - pack: allow reprepare_packed_git to handle arbitrary repositories
178 - - pack: allow prepare_packed_git to handle arbitrary repositories
179 - - pack: allow prepare_packed_git_one to handle arbitrary repositories
180 - - pack: allow prepare_packed_git_mru to handle arbitrary repositories
181 - - pack: allow rearrange_packed_git to handle arbitrary repositories
182 - - pack: allow install_packed_git to handle arbitrary repositories
183 - - object-store: allow foreach_alt_odb to handle arbitrary repositories
184 - - object-store: allow prepare_alt_odb to handle arbitrary repositories
185 - - sha1_file: allow alt_odb_usable to handle arbitrary repositories
186 - - pack: add repository argument to map_sha1_file
187 - - pack: add repository argument to sha1_file_name
188 - - pack: add repository argument to reprepare_packed_git
189 - - pack: add repository argument to prepare_packed_git
190 - - pack: add repository argument to prepare_packed_git_mru
191 - - pack: add repository argument to rearrange_packed_git
192 - - pack: add repository argument to prepare_packed_git_one
193 - - pack: add repository argument to install_packed_git
194 - - object-store: add repository argument to foreach_alt_odb
195 - - object-store: add repository argument to prepare_alt_odb
196 - - sha1_file: add repository argument to sha1_loose_object_info
197 - - sha1_file: add repository argument to map_sha1_file_1
198 - - sha1_file: add repository argument to open_sha1_file
199 - - sha1_file: add repository argument to stat_sha1_file
200 - - sha1_file: add repository argument to link_alt_odb_entries
201 - - sha1_file: add repository argument to read_info_alternates
202 - - sha1_file: add repository argument to link_alt_odb_entry
203 - - sha1_file: add repository argument to alt_odb_usable
204 - - pack: move approximate object count to object store
205 - - pack: move prepare_packed_git_run_once to object store
206 - - object-store: move packed_git and packed_git_mru to object store
207 - - object-store: move alt_odb_list and alt_odb_tail to object store
208 - - repository: introduce object store field
209 - - pack: make packed_git_mru global a value instead of a pointer
210 -
211 - We now can have separate instances of in-core object store per
212 - repository we visit.
213 -
214 - Will be rerolled.
337 + Will merge to 'master'.
338
339
340 * jt/packmigrate (2017-09-06) 1 commit
218 - - Remove inadvertently added outgoing/packfile.h
341 + (merged to 'next' on 2017-09-14 at 169e9573a0)
342 + + Remove inadvertently added outgoing/packfile.h
343
344 An oops fix.
345
222 - Will merge to 'next'.
346 + Will merge to 'master'.
347
348
225 -* kd/doc-for-each-ref (2017-09-07) 1 commit
349 +* kd/doc-for-each-ref (2017-09-12) 2 commits
350 - doc/for-each-ref: explicitly specify option names
351 + - doc/for-each-ref: consistently use '=' to between argument names and values
352
228 - Expecting a reroll.
229 - cf. <20170901231933.GC143138@aiede.mtv.corp.google.com>
353 + Doc update.
354 +
355 + Will merge to 'next'.
356
357
358 * kw/write-index-reduce-alloc (2017-09-08) 2 commits
359 - read-cache: fix index corruption with index v4
360 - Add t/helper/test-write-cache to .gitignore
361
236 - Expecting a reroll.
237 - cf. <CALgYhfNYgmCJqptNQLKaQpCs9mAgqZHUrDS3BVEqCv_f+WX-qg@mail.gmail.com>
362 + Will merge to 'next'.
363
364
365 * ma/remove-config-maybe-bool (2017-09-07) 1 commit
241 - - config: remove git_config_maybe_bool
366 + (merged to 'next' on 2017-09-14 at d0c7fb97a9)
367 + + config: remove git_config_maybe_bool
368
369 Finishing touches to a recent topic.
370
245 - Will merge to 'next'.
371 + Will merge to 'master'.
372
373
374 * mh/packed-ref-store-prep (2017-09-07) 1 commit
249 - - rev-parse: don't trim bisect refnames
375 + (merged to 'next' on 2017-09-14 at e3ef821847)
376 + + rev-parse: don't trim bisect refnames
377
378 Finishing touches to a recent topic.
379
253 - Will merge to 'next'.
380 + Will merge to 'master'.
381
382
383 * mh/packed-ref-transactions (2017-09-09) 11 commits
257 - - files_transaction_finish(): delete reflogs before references
258 - - packed-backend: rip out some now-unused code
259 - - files_ref_store: use a transaction to update packed refs
260 - - t1404: demonstrate two problems with reference transactions
261 - - files_initial_transaction_commit(): use a transaction for packed refs
262 - - prune_refs(): also free the linked list
263 - - files_pack_refs(): use a reference transaction to write packed refs
264 - - packed_delete_refs(): implement method
265 - - packed_ref_store: implement reference transactions
266 - - struct ref_transaction: add a place for backends to store data
267 - - packed-backend: don't adjust the reference count on lock/unlock
384 + (merged to 'next' on 2017-09-14 at b926200d45)
385 + + files_transaction_finish(): delete reflogs before references
386 + + packed-backend: rip out some now-unused code
387 + + files_ref_store: use a transaction to update packed refs
388 + + t1404: demonstrate two problems with reference transactions
389 + + files_initial_transaction_commit(): use a transaction for packed refs
390 + + prune_refs(): also free the linked list
391 + + files_pack_refs(): use a reference transaction to write packed refs
392 + + packed_delete_refs(): implement method
393 + + packed_ref_store: implement reference transactions
394 + + struct ref_transaction: add a place for backends to store data
395 + + packed-backend: don't adjust the reference count on lock/unlock
396 + (this branch is used by mh/mmap-packed-refs.)
397
398 Implement transactional update to the packed-ref representation of
399 references.
400
272 - Will merge to 'next'.
401 + Will merge to 'master'.
402
403
404 * nm/pull-submodule-recurse-config (2017-09-07) 2 commits
276 - - pull: honor submodule.recurse config option
277 - - pull: fix cli and config option parsing order
405 + (merged to 'next' on 2017-09-14 at 38bf2c88e0)
406 + + pull: honor submodule.recurse config option
407 + + pull: fix cli and config option parsing order
408
409 "git -c submodule.recurse=yes pull" did not work as if the
410 "--recurse-submodules" option was given from the command line.
411 This has been corrected.
412
283 - Will merge to 'next'.
413 + Will merge to 'master'.
414
415
416 * rs/strbuf-leakfix (2017-09-10) 34 commits
287 - - wt-status: release strbuf after use in wt_longstatus_print_tracking()
288 - - wt-status: release strbuf after use in read_rebase_todolist()
289 - - vcs-svn: release strbuf after use in end_revision()
290 - - utf8: release strbuf on error return in strbuf_utf8_replace()
291 - - userdiff: release strbuf after use in userdiff_get_textconv()
292 - - transport-helper: release strbuf after use in process_connect_service()
293 - - sequencer: release strbuf after use in save_head()
294 - - shortlog: release strbuf after use in insert_one_record()
295 - - sha1_file: release strbuf on error return in index_path()
296 - - send-pack: release strbuf on error return in send_pack()
297 - - remote: release strbuf after use in set_url()
298 - - remote: release strbuf after use in migrate_file()
299 - - remote: release strbuf after use in read_remote_branches()
300 - - refs: release strbuf on error return in write_pseudoref()
301 - - notes: release strbuf after use in notes_copy_from_stdin()
302 - - merge: release strbuf after use in write_merge_heads()
303 - - merge: release strbuf after use in save_state()
304 - - mailinfo: release strbuf on error return in handle_boundary()
305 - - mailinfo: release strbuf after use in handle_from()
306 - - help: release strbuf on error return in exec_woman_emacs()
307 - - help: release strbuf on error return in exec_man_man()
308 - - help: release strbuf on error return in exec_man_konqueror()
309 - - diff: release strbuf after use in show_stats()
310 - - diff: release strbuf after use in show_rename_copy()
311 - - diff: release strbuf after use in diff_summary()
312 - - convert: release strbuf on error return in filter_buffer_or_fd()
313 - - connect: release strbuf on error return in git_connect()
314 - - commit: release strbuf on error return in commit_tree_extended()
315 - - clone: release strbuf after use in remove_junk()
316 - - clean: release strbuf after use in remove_dirs()
317 - - check-ref-format: release strbuf after use in check_ref_format_branch()
318 - - am: release strbuf after use in safe_to_abort()
319 - - am: release strbuf on error return in hg_patch_to_mail()
320 - - am: release strbufs after use in detect_patch_format()
417 + (merged to 'next' on 2017-09-14 at bb46952e6a)
418 + + wt-status: release strbuf after use in wt_longstatus_print_tracking()
419 + + wt-status: release strbuf after use in read_rebase_todolist()
420 + + vcs-svn: release strbuf after use in end_revision()
421 + + utf8: release strbuf on error return in strbuf_utf8_replace()
422 + + userdiff: release strbuf after use in userdiff_get_textconv()
423 + + transport-helper: release strbuf after use in process_connect_service()
424 + + sequencer: release strbuf after use in save_head()
425 + + shortlog: release strbuf after use in insert_one_record()
426 + + sha1_file: release strbuf on error return in index_path()
427 + + send-pack: release strbuf on error return in send_pack()
428 + + remote: release strbuf after use in set_url()
429 + + remote: release strbuf after use in migrate_file()
430 + + remote: release strbuf after use in read_remote_branches()
431 + + refs: release strbuf on error return in write_pseudoref()
432 + + notes: release strbuf after use in notes_copy_from_stdin()
433 + + merge: release strbuf after use in write_merge_heads()
434 + + merge: release strbuf after use in save_state()
435 + + mailinfo: release strbuf on error return in handle_boundary()
436 + + mailinfo: release strbuf after use in handle_from()
437 + + help: release strbuf on error return in exec_woman_emacs()
438 + + help: release strbuf on error return in exec_man_man()
439 + + help: release strbuf on error return in exec_man_konqueror()
440 + + diff: release strbuf after use in show_stats()
441 + + diff: release strbuf after use in show_rename_copy()
442 + + diff: release strbuf after use in diff_summary()
443 + + convert: release strbuf on error return in filter_buffer_or_fd()
444 + + connect: release strbuf on error return in git_connect()
445 + + commit: release strbuf on error return in commit_tree_extended()
446 + + clone: release strbuf after use in remove_junk()
447 + + clean: release strbuf after use in remove_dirs()
448 + + check-ref-format: release strbuf after use in check_ref_format_branch()
449 + + am: release strbuf after use in safe_to_abort()
450 + + am: release strbuf on error return in hg_patch_to_mail()
451 + + am: release strbufs after use in detect_patch_format()
452
453 Many leaks of strbuf have been fixed.
454
324 - Will merge to 'next'.
455 + Will merge to 'master'.
456
457
458 * jk/shortlog-ident-cleanup (2017-09-09) 1 commit
328 - - shortlog: skip format/parse roundtrip for internal traversal
459 + (merged to 'next' on 2017-09-14 at 09695b6c39)
460 + + shortlog: skip format/parse roundtrip for internal traversal
461
462 Code clean-up.
463
332 - Will merge to 'next'.
464 + Will merge to 'master'.
465
466
467 * mg/name-rev-tests-with-short-stack (2017-09-08) 4 commits
336 - - t6120: test describe and name-rev with deep repos
337 - - t6120: clean up state after breaking repo
338 - - t6120: test name-rev --all and --stdin
339 - - t7004: move limited stack prereq to test-lib
468 + (merged to 'next' on 2017-09-14 at 1e4a0fe206)
469 + + t6120: test describe and name-rev with deep repos
470 + + t6120: clean up state after breaking repo
471 + + t6120: test name-rev --all and --stdin
472 + + t7004: move limited stack prereq to test-lib
473 + (this branch is used by rj/test-ulimit-on-windows.)
474
475 A handful of tests to demonstrates a recursive implementation of
476 "name-rev" hurts.
477
344 - Will merge to 'next'.
478 + Will merge to 'master'.
479
480
481 * rk/commit-tree-make-F-verbatim (2017-09-10) 1 commit
348 - - commit-tree: do not complete line in -F input
482 + (merged to 'next' on 2017-09-14 at 3d40c900f3)
483 + + commit-tree: do not complete line in -F input
484
485 Unlike "git commit-tree < file", "git commit-tree -F file" did not
486 pass the contents of the file verbatim and instead completed an
487 incomplete line at the end, if exists. The latter has been updated
488 to match the behaviour of the former.
489
355 - Will merge to 'next'.
490 + Will merge to 'master'.
491
492
493 * sb/merge-commit-msg-hook (2017-09-08) 1 commit
359 - - builtin/merge: honor commit-msg hook for merges
494 + (merged to 'next' on 2017-09-14 at e9d0e43031)
495 + + builtin/merge: honor commit-msg hook for merges
496
497 As "git commit" to conclude a conflicted "git merge" honors the
498 commit-msg hook, "git merge" that recoreds a merge commit that
499 cleanly auto-merges should, but it didn't.
500
365 - Will merge to 'next'.
501 + Will merge to 'master'.
502
503
504 * ls/travis-scriptify (2017-09-11) 3 commits
369 - - travis: dedent a few scripts that are indented overly deeply
370 - - travis-ci: skip a branch build if equal tag is present
371 - - travis-ci: move Travis CI code into dedicated scripts
505 + (merged to 'next' on 2017-09-14 at 8fa685d3b7)
506 + + travis: dedent a few scripts that are indented overly deeply
507 + + travis-ci: skip a branch build if equal tag is present
508 + + travis-ci: move Travis CI code into dedicated scripts
509
510 The scripts to drive TravisCI has been reorganized and then an
511 optimization to avoid spending cycles on a branch whose tip is
512 tagged has been implemented.
513
377 - Will merge to 'next'.
378 -
379 ---------------------------------------------------
380 -[Stalled]
381 -
382 -* mg/status-in-progress-info (2017-05-10) 2 commits
383 - - status --short --inprogress: spell it as --in-progress
384 - - status: show in-progress info for short status
385 -
386 - "git status" learns an option to report various operations
387 - (e.g. "merging") that the user is in the middle of.
388 -
389 - cf. <xmqqmvakcdqw.fsf@gitster.mtv.corp.google.com>
390 -
391 -
392 -* nd/worktree-move (2017-04-20) 6 commits
393 - - worktree remove: new command
394 - - worktree move: refuse to move worktrees with submodules
395 - - worktree move: accept destination as directory
396 - - worktree move: new command
397 - - worktree.c: add update_worktree_location()
398 - - worktree.c: add validate_worktree()
399 -
400 - "git worktree" learned move and remove subcommands.
401 -
402 - Expecting a reroll.
403 - cf. <20170420101024.7593-1-pclouds@gmail.com>
404 - cf. <20170421145916.mknekgqzhxffu7di@sigill.intra.peff.net>
405 - cf. <d0e81b1e-5869-299e-f462-4d43dc997bd1@ramsayjones.plus.com>
406 -
407 -
408 -* sg/clone-refspec-from-command-line-config (2017-06-16) 2 commits
409 - - Documentation/clone: document ignored configuration variables
410 - - clone: respect additional configured fetch refspecs during initial fetch
411 - (this branch is used by sg/remote-no-string-refspecs.)
412 -
413 - "git clone -c var=val" is a way to set configuration variables in
414 - the resulting repository, but it is more useful to also make these
415 - variables take effect while the initial clone is happening,
416 - e.g. these configuration variables could be fetch refspecs.
417 -
418 - Waiting for a response.
419 - cf. <20170617112228.vugswym4o4owf6wj@sigill.intra.peff.net>
420 - cf. <xmqqmv8zhdap.fsf@gitster.mtv.corp.google.com>
421 -
422 -
423 -* js/rebase-i-final (2017-07-27) 10 commits
424 - - rebase -i: rearrange fixup/squash lines using the rebase--helper
425 - - t3415: test fixup with wrapped oneline
426 - - rebase -i: skip unnecessary picks using the rebase--helper
427 - - rebase -i: check for missing commits in the rebase--helper
428 - - t3404: relax rebase.missingCommitsCheck tests
429 - - rebase -i: also expand/collapse the SHA-1s via the rebase--helper
430 - - rebase -i: do not invent onelines when expanding/collapsing SHA-1s
431 - - rebase -i: remove useless indentation
432 - - rebase -i: generate the script via rebase--helper
433 - - t3415: verify that an empty instructionFormat is handled as before
434 -
435 - The final batch to "git rebase -i" updates to move more code from
436 - the shell script to C.
437 -
438 - Expecting a reroll.
439 -
440 -
441 -* bp/fsmonitor (2017-06-12) 6 commits
442 - - fsmonitor: add a sample query-fsmonitor hook script for Watchman
443 - - fsmonitor: add documentation for the fsmonitor extension.
444 - - fsmonitor: add test cases for fsmonitor extension
445 - - fsmonitor: teach git to optionally utilize a file system monitor to speed up detecting new or changed files.
446 - - dir: make lookup_untracked() available outside of dir.c
447 - - bswap: add 64 bit endianness helper get_be64
448 -
449 - We learned to talk to watchman to speed up "git status".
450 -
451 - Expecting a reroll.
452 - cf. <bade1166-e646-b05a-f65b-adb8da8ba0a7@gmail.com>
514 + Will merge to 'master'.
515
454 ---------------------------------------------------
455 -[Cooking]
516
517 * dw/diff-highlight-makefile-fix (2017-09-06) 1 commit
518 (merged to 'next' on 2017-09-10 at 8dfda480ac)
@@ -473,13 +533,14 @@ of the repositories listed at
533
534
535 * kw/merge-recursive-cleanup (2017-09-08) 3 commits
476 - - merge-recursive: change current file dir string_lists to hashmap
477 - - merge-recursive: remove return value from get_files_dirs
478 - - merge-recursive: fix memory leak
536 + (merged to 'next' on 2017-09-14 at 9f20025e6b)
537 + + merge-recursive: change current file dir string_lists to hashmap
538 + + merge-recursive: remove return value from get_files_dirs
539 + + merge-recursive: fix memory leak
540
541 A leakfix and code clean-up.
542
482 - Will merge to 'next'.
543 + Will merge to 'master'.
544
545
546 * ma/pkt-line-leakfix (2017-09-06) 1 commit
@@ -551,22 +612,23 @@ of the repositories listed at
612
613
614 * nd/prune-in-worktree (2017-08-24) 16 commits
554 - - refs.c: reindent get_submodule_ref_store()
555 - - refs.c: remove fallback-to-main-store code get_submodule_ref_store()
556 - - rev-list: expose and document --single-worktree
557 - - revision.c: --reflog add HEAD reflog from all worktrees
558 - - files-backend: make reflog iterator go through per-worktree reflog
559 - - revision.c: --all adds HEAD from all worktrees
560 - - refs: remove dead for_each_*_submodule()
561 - - refs.c: move for_each_remote_ref_submodule() to submodule.c
562 - - revision.c: use refs_for_each*() instead of for_each_*_submodule()
563 - - refs: add refs_head_ref()
564 - - refs: move submodule slash stripping code to get_submodule_ref_store
565 - - refs.c: refactor get_submodule_ref_store(), share common free block
566 - - revision.c: --indexed-objects add objects from all worktrees
567 - - revision.c: refactor add_index_objects_to_pending()
568 - - refs.c: use is_dir_sep() in resolve_gitlink_ref()
569 - - revision.h: new flag in struct rev_info wrt. worktree-related refs
615 + (merged to 'next' on 2017-09-14 at 3efe283118)
616 + + refs.c: reindent get_submodule_ref_store()
617 + + refs.c: remove fallback-to-main-store code get_submodule_ref_store()
618 + + rev-list: expose and document --single-worktree
619 + + revision.c: --reflog add HEAD reflog from all worktrees
620 + + files-backend: make reflog iterator go through per-worktree reflog
621 + + revision.c: --all adds HEAD from all worktrees
622 + + refs: remove dead for_each_*_submodule()
623 + + refs.c: move for_each_remote_ref_submodule() to submodule.c
624 + + revision.c: use refs_for_each*() instead of for_each_*_submodule()
625 + + refs: add refs_head_ref()
626 + + refs: move submodule slash stripping code to get_submodule_ref_store
627 + + refs.c: refactor get_submodule_ref_store(), share common free block
628 + + revision.c: --indexed-objects add objects from all worktrees
629 + + revision.c: refactor add_index_objects_to_pending()
630 + + refs.c: use is_dir_sep() in resolve_gitlink_ref()
631 + + revision.h: new flag in struct rev_info wrt. worktree-related refs
632
633 "git gc" and friends when multiple worktrees are used off of a
634 single repository did not consider the index and per-worktree refs
@@ -574,7 +636,7 @@ of the repositories listed at
636 objects that are in use only in other worktrees to be subject to
637 garbage collection.
638
577 - Will merge to 'next'.
639 + Will merge to 'master'.
640
641
642 * bc/hash-algo (2017-08-20) 5 commits
@@ -746,3 +808,53 @@ of the repositories listed at
808 . apply: file commited with CRLF should roundtrip diff and apply
809
810 This served as an input to updated tb/apply-with-crlf.
811 +
812 +
813 +
814 +* jn/per-repo-obj-store (2017-09-07) 39 commits
815 + . pack: allow sha1_loose_object_info to handle arbitrary repositories
816 + . pack: allow map_sha1_file to handle arbitrary repositories
817 + . pack: allow map_sha1_file_1 to handle arbitrary repositories
818 + . pack: allow open_sha1_file to handle arbitrary repositories
819 + . pack: allow stat_sha1_file to handle arbitrary repositories
820 + . pack: allow sha1_file_name to handle arbitrary repositories
821 + . pack: allow reprepare_packed_git to handle arbitrary repositories
822 + . pack: allow prepare_packed_git to handle arbitrary repositories
823 + . pack: allow prepare_packed_git_one to handle arbitrary repositories
824 + . pack: allow prepare_packed_git_mru to handle arbitrary repositories
825 + . pack: allow rearrange_packed_git to handle arbitrary repositories
826 + . pack: allow install_packed_git to handle arbitrary repositories
827 + . object-store: allow foreach_alt_odb to handle arbitrary repositories
828 + . object-store: allow prepare_alt_odb to handle arbitrary repositories
829 + . sha1_file: allow alt_odb_usable to handle arbitrary repositories
830 + . pack: add repository argument to map_sha1_file
831 + . pack: add repository argument to sha1_file_name
832 + . pack: add repository argument to reprepare_packed_git
833 + . pack: add repository argument to prepare_packed_git
834 + . pack: add repository argument to prepare_packed_git_mru
835 + . pack: add repository argument to rearrange_packed_git
836 + . pack: add repository argument to prepare_packed_git_one
837 + . pack: add repository argument to install_packed_git
838 + . object-store: add repository argument to foreach_alt_odb
839 + . object-store: add repository argument to prepare_alt_odb
840 + . sha1_file: add repository argument to sha1_loose_object_info
841 + . sha1_file: add repository argument to map_sha1_file_1
842 + . sha1_file: add repository argument to open_sha1_file
843 + . sha1_file: add repository argument to stat_sha1_file
844 + . sha1_file: add repository argument to link_alt_odb_entries
845 + . sha1_file: add repository argument to read_info_alternates
846 + . sha1_file: add repository argument to link_alt_odb_entry
847 + . sha1_file: add repository argument to alt_odb_usable
848 + . pack: move approximate object count to object store
849 + . pack: move prepare_packed_git_run_once to object store
850 + . object-store: move packed_git and packed_git_mru to object store
851 + . object-store: move alt_odb_list and alt_odb_tail to object store
852 + . repository: introduce object store field
853 + . pack: make packed_git_mru global a value instead of a pointer
854 +
855 + We now can have separate instances of in-core object store per
856 + repository we visit.
857 +
858 + Will be rerolled.
859 +
860 +