What's cooking (2018/06 #02)

Junio C Hamano committed Jun 4, 2018 at 22:20 UTC 9125ddae1445fd35a9e52a21f926a2785a2583b8
1 file changed +117 -336
whats-cooking.txt
+117 -336
@@ -1,10 +1,10 @@
1 To: git@vger.kernel.org
2 Bcc: lwn@lwn.net
3 -Subject: What's cooking in git.git (Jun 2018, #01; Fri, 1)
4 -X-master-at: c2c7d17b030646b40e6764ba34a5ebf66aee77af
5 -X-next-at: fd7c087b0d85b48ffb998ee0349e5bb8945e292a
3 +Subject: What's cooking in git.git (Jun 2018, #02; Mon, 4)
4 +X-master-at: 3e5524907b43337e82a24afbc822078daf7a868f
5 +X-next-at: 61856ae69a2ceb241a90e47953e18f218e4d5f2f
6
7 -What's cooking in git.git (Jun 2018, #01; Fri, 1)
7 +What's cooking in git.git (Jun 2018, #02; Mon, 4)
8 --------------------------------------------------
9
10 Here are the topics that have been cooking. Commits prefixed with
@@ -18,358 +18,114 @@ of the repositories listed at
18 http://git-blame.blogspot.com/p/git-public-repositories.html
19
20 --------------------------------------------------
21 -[New Topics]
22 -
23 -* ag/rebase-p (2018-06-01) 4 commits
24 - - rebase: remove -p code from git-rebase--interactive.sh
25 - - rebase: use the new git-rebase--preserve-merges.sh
26 - - rebase: strip unused code in git-rebase--preserve-merges.sh
27 - - rebase: introduce a dedicated backend for --preserve-merges
28 -
29 - Separate "rebase -p" codepath out of "rebase -i" implementation to
30 - slim down the latter and make it easier to manage.
21 +[Graduated to "master"]
22
23 +* bc/t3430-fixup (2018-06-04) 1 commit
24 + (merged to 'next' on 2018-06-04 at 892aab2dc8)
25 + + t3430: test clean-up
26
33 -* jk/index-pack-maint (2018-06-01) 2 commits
34 - - index-pack: handle --strict checks of non-repo packs
35 - - prepare_commit_graft: treat non-repository as a noop
27 + Test fix.
28
37 - "index-pack --strict" has been taught to make sure that it runs the
38 - final object integrity checks after making the freshly indexed
39 - packfile available to itself.
29
41 - Will merge to 'next' and then to 'master'.
30 +* bw/refspec-api (2018-06-01) 1 commit
31 + (merged to 'next' on 2018-06-04 at f244fe357b)
32 + + refspec-api: avoid uninitialized field in refspec item
33
34 + Hotfix.
35
44 -* ls/complete-remote-update-names (2018-06-01) 1 commit
45 - - completion: complete remote names too
36
47 - "git remote update" can take both a single remote nickname and a
48 - nickname for remote groups, and the completion script (in contrib/)
49 - has been taught about it.
37 +* jt/submodule-pull-recurse-rebase (2018-05-25) 1 commit
38 + (merged to 'next' on 2018-06-01 at cd3e2a1008)
39 + + submodule: do not pass null OID to setup_revisions
40
51 - Will merge to and cook in 'next'.
41 + "git pull -recurse-submodules --rebase", when the submodule
42 + repository's history did not have anything common between ours and
43 + the upstream's, failed to execute. We need to fetch from them to
44 + continue even in such a case.
45
46
54 -* nd/remote-update-doc (2018-06-01) 1 commit
55 - - remote.txt: update documentation for 'update' command
47 +* nd/remote-update-doc (2018-06-04) 2 commits
48 + (merged to 'next' on 2018-06-04 at b2901b60ad)
49 + + remote: doc typofix
50 + (merged to 'next' on 2018-06-04 at 82cce447e5)
51 + + remote.txt: update documentation for 'update' command
52
53 "git remote update" can take both a single remote nickname and a
54 nickname for remote groups, but only one of them was documented.
55
60 - Will merge to 'next' and then to 'master'.
61 -
56
57 * rd/p4-doc-markup-env (2018-06-01) 1 commit
64 - - p4.txt: Use backquotes for variable names
58 + (merged to 'next' on 2018-06-04 at 80212295cf)
59 + + p4.txt: Use backquotes for variable names
60
61 Doc markup update.
62
68 - Will merge to 'next' and then to 'master'.
69 -
70 -
71 -* sb/plug-misc-leaks (2018-06-01) 2 commits
72 - - submodule--helper: plug mem leak in print_default_remote
73 - - refs/packed-backend.c: close fd of empty file
74 -
75 - Misc leak plugging.
76 -
77 - Will merge to 'next' and then to 'master'.
78 -
63
64 * tg/doc-sec-list (2018-06-01) 2 commits
81 - - note git-security@googlegroups.com in more places
82 - - SubmittingPatches: replace numbered attributes with names
65 + (merged to 'next' on 2018-06-04 at e1f80ffe09)
66 + + note git-security@googlegroups.com in more places
67 + + SubmittingPatches: replace numbered attributes with names
68
69 Doc update.
70
86 - Will merge to 'next' and then to 'master'.
87 -
88 -* bw/refspec-api (2018-06-01) 1 commit
89 - - refspec-api: avoid uninitialized field in refspec item
90 -
91 - Hotfix.
92 -
93 - Will merge to 'next' and then to 'master'.
94 -
71 --------------------------------------------------
96 -[Graduated to "master"]
97 -
98 -* bw/refspec-api (2018-05-18) 36 commits
99 - (merged to 'next' on 2018-05-24 at 83d361419e)
100 - + submodule: convert push_unpushed_submodules to take a struct refspec
101 - + remote: convert check_push_refs to take a struct refspec
102 - + remote: convert match_push_refs to take a struct refspec
103 - + http-push: store refspecs in a struct refspec
104 - + transport: remove transport_verify_remote_names
105 - + send-pack: store refspecs in a struct refspec
106 - + transport: convert transport_push to take a struct refspec
107 - + push: convert to use struct refspec
108 - + push: check for errors earlier
109 - + remote: convert match_explicit_refs to take a struct refspec
110 - + remote: convert get_ref_match to take a struct refspec
111 - + remote: convert query_refspecs to take a struct refspec
112 - + remote: convert apply_refspecs to take a struct refspec
113 - + remote: convert get_stale_heads to take a struct refspec
114 - + fetch: convert prune_refs to take a struct refspec
115 - + fetch: convert get_ref_map to take a struct refspec
116 - + fetch: convert do_fetch to take a struct refspec
117 - + refspec: remove the deprecated functions
118 - + fetch: convert refmap to use struct refspec
119 - + fetch: convert fetch_one to use struct refspec
120 - + transport-helper: convert to use struct refspec
121 - + remote: remove add_prune_tags_to_fetch_refspec
122 - + remote: convert fetch refspecs to struct refspec
123 - + remote: convert push refspecs to struct refspec
124 - + fast-export: convert to use struct refspec
125 - + clone: convert cmd_clone to use refspec_item_init
126 - + remote: convert match_push_refs to use struct refspec
127 - + remote: convert check_push_refs to use struct refspec
128 - + transport: convert transport_push to use struct refspec
129 - + pull: convert get_tracking_branch to use refspec_item_init
130 - + submodule--helper: convert push_check to use struct refspec
131 - + refspec: convert valid_fetch_refspec to use parse_refspec
132 - + refspec: introduce struct refspec
133 - + refspec: factor out parsing a single refspec
134 - + refspec: rename struct refspec to struct refspec_item
135 - + refspec: move refspec parsing logic into its own file
136 - (this branch is used by bw/ref-prefix-for-configured-refspec.)
137 -
138 - An API update for handling of refspecs used by fetch & push
139 - codepath.
140 -
141 -
142 -* bc/hash-independent-tests (2018-05-21) 28 commits
143 - (merged to 'next' on 2018-05-24 at 40fb709f7c)
144 - + t5300: abstract away SHA-1-specific constants
145 - + t4208: abstract away SHA-1-specific constants
146 - + t4045: abstract away SHA-1-specific constants
147 - + t4042: abstract away SHA-1-specific constants
148 - + t4205: sort log output in a hash-independent way
149 - + t/lib-diff-alternative: abstract away SHA-1-specific constants
150 - + t4030: abstract away SHA-1-specific constants
151 - + t4029: abstract away SHA-1-specific constants
152 - + t4029: fix test indentation
153 - + t4022: abstract away SHA-1-specific constants
154 - + t4020: abstract away SHA-1-specific constants
155 - + t4014: abstract away SHA-1-specific constants
156 - + t4008: abstract away SHA-1-specific constants
157 - + t4007: abstract away SHA-1-specific constants
158 - + t3905: abstract away SHA-1-specific constants
159 - + t3702: abstract away SHA-1-specific constants
160 - + t3103: abstract away SHA-1-specific constants
161 - + t2203: abstract away SHA-1-specific constants
162 - + t: skip pack tests if not using SHA-1
163 - + t4044: skip test if not using SHA-1
164 - + t1512: skip test if not using SHA-1
165 - + t1007: annotate with SHA1 prerequisite
166 - + t0000: annotate with SHA1 prerequisite
167 - + t: switch $_x40 to $OID_REGEX
168 - + t/test-lib: introduce OID_REGEX
169 - + t: switch $_z40 to $ZERO_OID
170 - + t/test-lib: introduce ZERO_OID
171 - + t/test-lib: add an SHA1 prerequisite
172 -
173 - Many tests hardcode the raw object names, which would change once
174 - we migrate away from SHA-1. While some of them must test against
175 - exact object names, most of them do not have to use hardcoded
176 - constants in the test. The latter kind of tests have been updated
177 - to test the moral equivalent of the original without hardcoding the
178 - actual object names.
179 -
180 -
181 -* bw/ref-prefix-for-configured-refspec (2018-05-18) 2 commits
182 - (merged to 'next' on 2018-05-24 at a0d4af6180)
183 - + fetch: generate ref-prefixes when using a configured refspec
184 - + refspec: consolidate ref-prefix generation logic
185 - (this branch uses bw/refspec-api.)
186 -
187 - "git fetch $there $refspec" that talks over protocol v2 can take
188 - advantage of server-side ref filtering; the code has been extended
189 - so that this mechanism triggers also when fetching with configured
190 - refspec.
191 -
192 -
193 -* bw/remote-curl-compressed-responses (2018-05-23) 2 commits
194 - (merged to 'next' on 2018-05-24 at 98ee4308dc)
195 - + remote-curl: accept compressed responses with protocol v2
196 - + remote-curl: accept all encodings supported by curl
197 -
198 - Our HTTP client code used to advertise that we accept gzip encoding
199 - from the other side; instead, just let cURL library to advertise
200 - and negotiate the best one.
201 -
202 -
203 -* cc/tests-without-assuming-ref-files-backend (2018-05-30) 2 commits
204 - (merged to 'next' on 2018-05-30 at e9605bacf0)
205 - + t990X: use '.git/objects' as 'deep inside .git' path
206 - (merged to 'next' on 2018-05-24 at 19138b162f)
207 - + t: make many tests depend less on the refs being files
208 -
209 - Quite a many tests assumed that newly created refs are made as
210 - loose refs using the files backend, which have been updated to use
211 - proper plumbing like rev-parse and update-ref, to avoid breakage
212 - once we start using different ref backends.
213 -
214 -
215 -* en/rev-parse-invalid-range (2018-05-25) 1 commit
216 - (merged to 'next' on 2018-05-30 at aec27f8a94)
217 - + rev-parse: check lookup'ed commit references for NULL
218 -
219 - "git rev-parse Y..." etc. misbehaved when given endpoints were
220 - not committishes.
221 -
222 -
223 -* jk/config-blob-sans-repo (2018-05-21) 1 commit
224 - (merged to 'next' on 2018-05-24 at 3426d9508c)
225 - + config: die when --blob is used outside a repository
226 -
227 - Error codepath fix.
228 -
229 -
230 -* jk/snprintf-truncation (2018-05-21) 5 commits
231 - (merged to 'next' on 2018-05-24 at 4b78e15f66)
232 - + fmt_with_err: add a comment that truncation is OK
233 - + shorten_unambiguous_ref: use xsnprintf
234 - + fsmonitor: use internal argv_array of struct child_process
235 - + log_write_email_headers: use strbufs
236 - + http: use strbufs instead of fixed buffers
237 -
238 - Avoid unchecked snprintf() to make future code auditing easier.
239 -
240 -
241 -* js/empty-config-section-fix (2018-05-18) 1 commit
242 - (merged to 'next' on 2018-05-24 at 3d0875c7b4)
243 - + config: a user-provided invalid section is not a BUG
244 -
245 - Error codepath fix.
246 -
247 -
248 -* js/rebase-recreate-merge (2018-05-30) 2 commits
249 - (merged to 'next' on 2018-05-30 at e295dfb56e)
250 - + sequencer: ensure labels that are object IDs are rewritten
251 - + git-rebase--interactive: fix copy-paste mistake
252 -
253 - Hotfixes.
254 -
255 -
256 -* ld/p4-unshelve (2018-05-24) 1 commit
257 - (merged to 'next' on 2018-05-30 at 7367508399)
258 - + git-p4: add unshelve command
259 -
260 - "git p4" learned to "unshelve" shelved commit from P4.
261 -
262 -
263 -* ma/config-store-data-clear (2018-05-21) 3 commits
264 - (merged to 'next' on 2018-05-24 at cc6e4b9371)
265 - + config: let `config_store_data_clear()` handle `key`
266 - + config: let `config_store_data_clear()` handle `value_regex`
267 - + config: free resources of `struct config_store_data`
268 -
269 - Leak plugging.
270 -
271 -
272 -* ma/regex-no-regfree-after-comp-fail (2018-05-21) 1 commit
273 - (merged to 'next' on 2018-05-24 at 3e473da1b5)
274 - + regex: do not call `regfree()` if compilation fails
275 -
276 - We used to call regfree() after regcomp() failed in some codepaths,
277 - which have been corrected.
278 -
279 -
280 -* ma/unpack-trees-free-msgs (2018-05-22) 4 commits
281 - (merged to 'next' on 2018-05-24 at 84cbd459f7)
282 - + unpack_trees_options: free messages when done
283 - + argv-array: return the pushed string from argv_push*()
284 - + merge-recursive: provide pair of `unpack_trees_{start,finish}()`
285 - + merge: setup `opts` later in `checkout_fast_forward()`
286 -
287 - Leak plugging.
288 -
289 -
290 -* nd/command-list (2018-05-21) 17 commits
291 - (merged to 'next' on 2018-05-24 at 093e983b05)
292 - + completion: allow to customize the completable command list
293 - + completion: add and use --list-cmds=alias
294 - + completion: add and use --list-cmds=nohelpers
295 - + Move declaration for alias.c to alias.h
296 - + completion: reduce completable command list
297 - + completion: let git provide the completable command list
298 - + command-list.txt: documentation and guide line
299 - + help: use command-list.txt for the source of guides
300 - + help: add "-a --verbose" to list all commands with synopsis
301 - + git: support --list-cmds=list-<category>
302 - + completion: implement and use --list-cmds=main,others
303 - + git --list-cmds: collect command list in a string_list
304 - + git.c: convert --list-* to --list-cmds=*
305 - + Remove common-cmds.h
306 - + help: use command-list.h for common command list
307 - + generate-cmds.sh: export all commands to command-list.h
308 - + generate-cmds.sh: factor out synopsis extract code
309 - (this branch is used by nd/complete-config-vars.)
310 -
311 - The list of commands with their various attributes were spread
312 - across a few places in the build procedure, but it now is getting a
313 - bit more consolidated to allow more automation.
314 -
72 +[New Topics]
73
316 -* nd/use-opt-int-set-f (2018-05-24) 1 commit
317 - (merged to 'next' on 2018-05-30 at f8f5d612ed)
318 - + Use OPT_SET_INT_F() for cmdline option specification
74 +* ab/checkout-default-remote (2018-06-04) 8 commits
75 + - checkout & worktree: introduce checkout.defaultRemote
76 + - checkout: add advice for ambiguous "checkout <branch>"
77 + - builtin/checkout.c: use "ret" variable for return
78 + - checkout: pass the "num_matches" up to callers
79 + - checkout.c]: change "unique" member to "num_matches"
80 + - checkout.c: introduce an *_INIT macro
81 + - checkout.h: wrap the arguments to unique_tracking_name()
82 + - checkout tests: index should be clean after dwim checkout
83
320 - Code simplification.
84
85 +* nd/reject-empty-shallow-request (2018-06-04) 1 commit
86 + - upload-pack: reject shallow requests that would return nothing
87
323 -* pa/import-tars-long-names (2018-05-24) 1 commit
324 - (merged to 'next' on 2018-05-30 at 5e043b2fca)
325 - + import-tars: read overlong names from pax extended header
88 + "git fetch --shallow-since=<cutoff>" that specifies the cut-off
89 + point that is newer than the existing history used to end up
90 + grabbing the entire history. Such a request now errors out.
91
327 - The import-tars script (in contrib/) has been taught to handle
328 - tarballs with overly long paths that use PAX extended headers.
92
93 +* pw/add-p-recount (2018-06-04) 1 commit
94 + - add -p: fix counting empty context lines in edited patches
95
331 -* rd/doc-options-placeholder (2018-05-25) 1 commit
332 - (merged to 'next' on 2018-05-30 at e3961b038f)
333 - + Use proper syntax for replaceables in command docs
96 + When user edits the patch in "git add -p" and the user's editor is
97 + set to strip trailing whitespaces indiscriminately, an empty line
98 + that is unchanged in the patch would become completely empty
99 + (instead of a line with a sole SP on it). The code introduced in
100 + Git 2.17 timeframe failed to parse such a patch, but now it learned
101 + to notice the situation and cope with it.
102
335 - Docfix.
103 + Will merge to and cook in 'next'.
104
105
338 -* rd/init-typo (2018-05-30) 1 commit
339 - (merged to 'next' on 2018-05-30 at 8813a649eb)
340 - + init: fix grammar in "templates not found" msg
106 +* rd/comment-typofix-in-sha1-file (2018-06-04) 1 commit
107 + - sha1-file.c: correct $GITDIR to $GIT_DIR in a comment
108
342 - Message fix.
109 + In code comment typofix
110
111 + Will merge to 'next'.
112
345 -* rd/tag-doc-lightweight (2018-05-29) 1 commit
346 - (merged to 'next' on 2018-05-30 at 979ba9f720)
347 - + tag: clarify in the doc that a tag can refer to a non-commit object
113
349 - Docfix.
114 +* sg/update-ref-stdin-cleanup (2018-06-04) 1 commit
115 + - update-ref --stdin: use skip_prefix()
116
117 + Code cleanup.
118
352 -* sb/grep-die-on-unreadable-index (2018-05-16) 1 commit
353 - (merged to 'next' on 2018-05-24 at 6d78916503)
354 - + grep: handle corrupt index files early
119 + Will merge to 'next'.
120
356 - Error behaviour of "git grep" when it cannot read the index was
357 - inconsistent with other commands that uses the index, which has
358 - been corrected to error out early.
121
122 +* cc/tests-without-assuming-ref-files-backend (2018-06-04) 1 commit
123 + - t9104: kosherly remove remote refs
124
361 -* sb/submodule-merge-in-merge-recursive (2018-05-18) 3 commits
362 - (merged to 'next' on 2018-05-24 at 6228d22182)
363 - + merge-recursive: give notice when submodule commit gets fast-forwarded
364 - + merge-recursive: i18n submodule merge output and respect verbosity
365 - + submodule.c: move submodule merging to merge-recursive.c
125 + Instead of mucking with filesystem directly, use plumbing commands
126 + update-ref etc. to manipulate the refs in the tests.
127
367 - By code restructuring of submodule merge in merge-recursive,
368 - informational messages from the codepath are now given using the
369 - same mechanism as other output, and honor the merge.verbosity
370 - configuration. The code also learned to give a few new messages
371 - when a submodule three-way merge resolves cleanly when one side
372 - records a descendant of the commit chosen by the other side.
128 + Will merge to 'next'.
129
130 --------------------------------------------------
131 [Stalled]
@@ -467,10 +223,9 @@ of the repositories listed at
223 cf. <0102015f5e5ee171-f30f4868-886f-47a1-a4e4-b4936afc545d-000000@eu-west-1.amazonses.com>
224
225
470 -* mk/http-backend-content-length (2017-11-27) 4 commits
471 - - SQUASH???
472 - - t5560-http-backend-noserver.sh: add CONTENT_LENGTH cases
226 +* mk/http-backend-content-length (2018-06-04) 3 commits
227 - SQUASH???
228 + - http-backend: respect CONTENT_LENGTH for receive-pack
229 - http-backend: respect CONTENT_LENGTH as specified by rfc3875
230
231 The http-backend (used for smart-http transport) used to slurp the
@@ -478,13 +233,6 @@ of the repositories listed at
233 that is supplied in the environment and instead expecting the Web
234 server to close the input stream. This has been fixed.
235
481 - Expecting a reroll.
482 - Suggested fixes to be used when rerolling is queued, but I'd
483 - prefer _not_ squashing them myself.
484 -
485 - Also, it may be too complex solution for the problem.
486 - cf. <20171204171308.GA13332@sigill.intra.peff.net>
487 -
236
237 * jk/drop-ancient-curl (2017-08-09) 5 commits
238 - http: #error on too-old curl
@@ -511,6 +259,53 @@ of the repositories listed at
259 --------------------------------------------------
260 [Cooking]
261
262 +* ag/rebase-p (2018-06-01) 4 commits
263 + - rebase: remove -p code from git-rebase--interactive.sh
264 + - rebase: use the new git-rebase--preserve-merges.sh
265 + - rebase: strip unused code in git-rebase--preserve-merges.sh
266 + - rebase: introduce a dedicated backend for --preserve-merges
267 +
268 + Separate "rebase -p" codepath out of "rebase -i" implementation to
269 + slim down the latter and make it easier to manage.
270 +
271 + Will merge to 'next'.
272 +
273 +
274 +* jk/index-pack-maint (2018-06-01) 2 commits
275 + (merged to 'next' on 2018-06-04 at c553a485e8)
276 + + index-pack: handle --strict checks of non-repo packs
277 + + prepare_commit_graft: treat non-repository as a noop
278 +
279 + "index-pack --strict" has been taught to make sure that it runs the
280 + final object integrity checks after making the freshly indexed
281 + packfile available to itself.
282 +
283 + Will cook in 'next'.
284 +
285 +
286 +* ls/complete-remote-update-names (2018-06-01) 1 commit
287 + - completion: complete remote names too
288 +
289 + "git remote update" can take both a single remote nickname and a
290 + nickname for remote groups, and the completion script (in contrib/)
291 + has been taught about it.
292 +
293 + Will merge to and cook in 'next'.
294 +
295 +
296 +* sb/plug-misc-leaks (2018-06-04) 5 commits
297 + - SQUASH: tentatively cast const-ness away when calling free()
298 + - sequencer.c: plug mem leak in git_sequencer_config
299 + (merged to 'next' on 2018-06-04 at fbefac1c7a)
300 + + sequencer.c: plug leaks in do_pick_commit
301 + + submodule--helper: plug mem leak in print_default_remote
302 + + refs/packed-backend.c: close fd of empty file
303 +
304 + Misc leak plugging.
305 +
306 + Will merge to 'next'.
307 +
308 +
309 * ds/commit-graph-fsck (2018-05-29) 20 commits
310 - commit-graph: update design document
311 - gc: automatically write commit-graph files
@@ -561,18 +356,6 @@ of the repositories listed at
356 Will cook in 'next'.
357
358
564 -* jt/submodule-pull-recurse-rebase (2018-05-25) 1 commit
565 - (merged to 'next' on 2018-06-01 at cd3e2a1008)
566 - + submodule: do not pass null OID to setup_revisions
567 -
568 - "git pull -recurse-submodules --rebase", when the submodule
569 - repository's history did not have anything common between ours and
570 - the upstream's, failed to execute. We need to fetch from them to
571 - continue even in such a case.
572 -
573 - Will merge to 'master'.
574 -
575 -
359 * ma/wrapped-info (2018-05-28) 2 commits
360 - usage: prefix all lines in `vreportf()`, not just the first
361 - usage: extract `prefix_suffix_lines()` from `advise()`
@@ -580,7 +363,7 @@ of the repositories listed at
363 An attempt to help making multi-line messages fed to warning(),
364 error(), and friends more easily translatable.
365
583 - Wait for discussion to settle.
366 + Waiting for the discussion to settle.
367 cf. <20180529213957.GF7964@sigill.intra.peff.net>
368
369
@@ -633,8 +416,6 @@ of the repositories listed at
416 allocated on heap. These cache entries are now allocated out of a
417 dedicated memory pool to amortize malloc(3) overhead.
418
636 - Is this ready for 'next'?
637 -
419
420 * rm/p4-submit-with-commit-option (2018-05-21) 1 commit
421 - git-p4: add options --commit and --disable-rebase