Re: What's cooking in git.git (Nov 2018, #03; Wed, 7)

2018-11-09 Thread Johannes Schindelin
Hi Phillip,

On Thu, 8 Nov 2018, Phillip Wood wrote:

> On 07/11/2018 09:41, Junio C Hamano wrote:
> > Here are the topics that have been cooking.  Commits prefixed with
> > '-' are only in 'pu' (proposed updates) while commits prefixed with
> > '+' are in 'next'.  The ones marked with '.' do not appear in any of
> > the integration branches, but I am still holding onto them.
> > 
> > You can find the changes described here in the integration branches
> > of the repositories listed at
> > 
> >  http://git-blame.blogspot.com/p/git-public-repositories.html
> > 
> > --
> > 
> > * pw/add-p-select (2018-07-26) 4 commits
> >   - add -p: optimize line selection for short hunks
> >   - add -p: allow line selection to be inverted
> >   - add -p: select modified lines correctly
> >   - add -p: select individual hunk lines
> > 
> >   "git add -p" interactive interface learned to let users choose
> >   individual added/removed lines to be used in the operation, instead
> >   of accepting or rejecting a whole hunk.
> > 
> >   Will discard.
> >   No further feedbacks on the topic for quite some time.
> 
> Unfortunately I've not found time to work on this recently and don't see
> myself doing so before the new year so I think it makes sense to drop it.
> Hopefully I can come up with something next year, it would be nice for users
> to avoid having to edit patches where possible.

If I understand correctly, this patch series essentially imitates on the
console what you can do in Git GUI by selecting multiple lines in the diff
and then "Stage Selected Lines"?

If my understanding is correct, then yes, I would be very much in favor of
having this feature, too.

Thanks,
Dscho


Re: What's cooking in git.git (Nov 2018, #03; Wed, 7)

2018-11-08 Thread Phillip Wood

On 07/11/2018 09:41, Junio C Hamano wrote:

Here are the topics that have been cooking.  Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'.  The ones marked with '.' do not appear in any of
the integration branches, but I am still holding onto them.

You can find the changes described here in the integration branches
of the repositories listed at

 http://git-blame.blogspot.com/p/git-public-repositories.html

--

* pw/add-p-select (2018-07-26) 4 commits
  - add -p: optimize line selection for short hunks
  - add -p: allow line selection to be inverted
  - add -p: select modified lines correctly
  - add -p: select individual hunk lines

  "git add -p" interactive interface learned to let users choose
  individual added/removed lines to be used in the operation, instead
  of accepting or rejecting a whole hunk.

  Will discard.
  No further feedbacks on the topic for quite some time.


Unfortunately I've not found time to work on this recently and don't see 
myself doing so before the new year so I think it makes sense to drop 
it. Hopefully I can come up with something next year, it would be nice 
for users to avoid having to edit patches where possible.


Best Wishes

Phillip


Re: What's cooking in git.git (Nov 2018, #03; Wed, 7)

2018-11-07 Thread Junio C Hamano
Junio C Hamano  writes:

>> Not surprising. The i18n series makes fsck output localized strings
>> and without updating grep to test_i18ngrep, new tests will fail. If
>> 'pu' was passing before, I'm ok with just ejecting this series for
>> now. Then I wait for the other to land, rebase, fixup and resubmit.
>
> Let me first see if I can come up with a merge-fix that can be
> carried around during the time this topic cooks, before talking
> about dropping and reattempting the series.
>
> For a change like this, a time-window in which the codebase is
> quiescent enough may never come, and because the changes go all over
> the place, mostly but not entirely repetitive, it costs a lot, not
> just to write but also to review them.

I have configured the machinery used to rebuild integration branches
so that the following is squashed in when the nd/i18n topic is
merged.

The part that touches t1450 needs to be split out and squashed when
nd/per-worktree-ref-iteration gets merged, *if* the nd/i18n topic
needs to jump over the other topic, but I'll worry about it when it
happens---I think per-worktree ref iteration series that is in next
should be ready enough that we do not mind having nd/i18n waiting
for it.

Anyway, here is what is in refs/merge-fix/nd/i18n, which gets
cherry-picked and squashed into the merge when nd/i18n is merged.

 t/t1450-fsck.sh| 8 
 t/t5616-partial-clone.sh   | 2 +-
 t/t5703-upload-pack-ref-in-want.sh | 4 ++--
 3 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/t/t1450-fsck.sh b/t/t1450-fsck.sh
index 8a5f4c7189..2e5e979336 100755
--- a/t/t1450-fsck.sh
+++ b/t/t1450-fsck.sh
@@ -109,7 +109,7 @@ test_expect_success 'HEAD link pointing at a funny object 
(from different wt)' '
echo $ZERO_OID >.git/HEAD &&
# avoid corrupt/broken HEAD from interfering with repo discovery
test_must_fail git -C wt fsck 2>out &&
-   grep "main-worktree/HEAD: detached HEAD points" out
+   test_i18ngrep "main-worktree/HEAD: detached HEAD points" out
 '
 
 test_expect_success 'other worktree HEAD link pointing at a funny object' '
@@ -117,7 +117,7 @@ test_expect_success 'other worktree HEAD link pointing at a 
funny object' '
git worktree add other &&
echo $ZERO_OID >.git/worktrees/other/HEAD &&
test_must_fail git fsck 2>out &&
-   grep "worktrees/other/HEAD: detached HEAD points" out
+   test_i18ngrep "worktrees/other/HEAD: detached HEAD points" out
 '
 
 test_expect_success 'other worktree HEAD link pointing at missing object' '
@@ -125,7 +125,7 @@ test_expect_success 'other worktree HEAD link pointing at 
missing object' '
git worktree add other &&
echo "Contents missing from repo" | git hash-object --stdin 
>.git/worktrees/other/HEAD &&
test_must_fail git fsck 2>out &&
-   grep "worktrees/other/HEAD: invalid sha1 pointer" out
+   test_i18ngrep "worktrees/other/HEAD: invalid sha1 pointer" out
 '
 
 test_expect_success 'other worktree HEAD link pointing at a funny place' '
@@ -133,7 +133,7 @@ test_expect_success 'other worktree HEAD link pointing at a 
funny place' '
git worktree add other &&
echo "ref: refs/funny/place" >.git/worktrees/other/HEAD &&
test_must_fail git fsck 2>out &&
-   grep "worktrees/other/HEAD points to something strange" out
+   test_i18ngrep "worktrees/other/HEAD points to something strange" out
 '
 
 test_expect_success 'email without @ is okay' '
diff --git a/t/t5616-partial-clone.sh b/t/t5616-partial-clone.sh
index 336f02a41a..9643acb161 100755
--- a/t/t5616-partial-clone.sh
+++ b/t/t5616-partial-clone.sh
@@ -281,7 +281,7 @@ test_expect_success 'upon cloning, check that all refs 
point to objects' '
test_must_fail git -c protocol.version=2 clone \
--filter=blob:none $HTTPD_URL/one_time_sed/server repo 2>err &&
 
-   grep "did not send all necessary objects" err &&
+   test_i18ngrep "did not send all necessary objects" err &&
 
# Ensure that the one-time-sed script was used.
! test -e "$HTTPD_ROOT_PATH/one-time-sed"
diff --git a/t/t5703-upload-pack-ref-in-want.sh 
b/t/t5703-upload-pack-ref-in-want.sh
index 3f58f05cbb..7053899cb5 100755
--- a/t/t5703-upload-pack-ref-in-want.sh
+++ b/t/t5703-upload-pack-ref-in-want.sh
@@ -208,7 +208,7 @@ test_expect_success 'server is initially ahead - no ref in 
want' '
cp -r "$LOCAL_PRISTINE" local &&
inconsistency master 1234567890123456789012345678901234567890 &&
test_must_fail git -C local fetch 2>err &&
-   grep "ERR upload-pack: not our ref" err
+   test_i18ngrep "ERR upload-pack: not our ref" err
 '
 
 test_expect_success 'server is initially ahead - ref in want' '
@@ -254,7 +254,7 @@ test_expect_success 'server loses a ref - ref in want' '
echo "s/master/raster/" >"$HTTPD_ROOT_PATH/one-time-sed" &&
test_must_fail git -C local fetch 2>err &&
 
-   grep "ERR unknown ref 

Re: What's cooking in git.git (Nov 2018, #03; Wed, 7)

2018-11-07 Thread Junio C Hamano
Duy Nguyen  writes:

> On Wed, Nov 7, 2018 at 2:09 PM SZEDER Gábor  wrote:
>>
>> On Wed, Nov 07, 2018 at 06:41:45PM +0900, Junio C Hamano wrote:
>> > * nd/i18n (2018-11-06) 16 commits
>> >  - fsck: mark strings for translation
>> >  - fsck: reduce word legos to help i18n
>> > ...
>> >  More _("i18n") markings.
>>
>> When this patch is merged into 'pu' all four tests added to
>> 't1450-fsck.sh' in b29759d89a (fsck: check HEAD and reflog from other
>> worktrees, 2018-10-21) as part of 'nd/per-worktree-ref-iteration'
>> below fail when run with GETTEXT_POISON=y.  The test suite passes in
>> both of these topics on their own, even with GETTEXT_POISON, it's
>> their merge that is somehow problematic.
>
> Not surprising. The i18n series makes fsck output localized strings
> and without updating grep to test_i18ngrep, new tests will fail. If
> 'pu' was passing before, I'm ok with just ejecting this series for
> now. Then I wait for the other to land, rebase, fixup and resubmit.

Let me first see if I can come up with a merge-fix that can be
carried around during the time this topic cooks, before talking
about dropping and reattempting the series.

For a change like this, a time-window in which the codebase is
quiescent enough may never come, and because the changes go all over
the place, mostly but not entirely repetitive, it costs a lot, not
just to write but also to review them.


Re: What's cooking in git.git (Nov 2018, #03; Wed, 7)

2018-11-07 Thread Duy Nguyen
On Wed, Nov 7, 2018 at 2:09 PM SZEDER Gábor  wrote:
>
> On Wed, Nov 07, 2018 at 06:41:45PM +0900, Junio C Hamano wrote:
> > * nd/i18n (2018-11-06) 16 commits
> >  - fsck: mark strings for translation
> >  - fsck: reduce word legos to help i18n
> >  - parse-options.c: mark more strings for translation
> >  - parse-options.c: turn some die() to BUG()
> >  - parse-options: replace opterror() with optname()
> >  - repack: mark more strings for translation
> >  - remote.c: mark messages for translation
> >  - remote.c: turn some error() or die() to BUG()
> >  - reflog: mark strings for translation
> >  - read-cache.c: add missing colon separators
> >  - read-cache.c: mark more strings for translation
> >  - read-cache.c: turn die("internal error") to BUG()
> >  - attr.c: mark more string for translation
> >  - archive.c: mark more strings for translation
> >  - alias.c: mark split_cmdline_strerror() strings for translation
> >  - git.c: mark more strings for translation
> >
> >  More _("i18n") markings.
>
> When this patch is merged into 'pu' all four tests added to
> 't1450-fsck.sh' in b29759d89a (fsck: check HEAD and reflog from other
> worktrees, 2018-10-21) as part of 'nd/per-worktree-ref-iteration'
> below fail when run with GETTEXT_POISON=y.  The test suite passes in
> both of these topics on their own, even with GETTEXT_POISON, it's
> their merge that is somehow problematic.

Not surprising. The i18n series makes fsck output localized strings
and without updating grep to test_i18ngrep, new tests will fail. If
'pu' was passing before, I'm ok with just ejecting this series for
now. Then I wait for the other to land, rebase, fixup and resubmit.
-- 
Duy


Re: What's cooking in git.git (Nov 2018, #03; Wed, 7)

2018-11-07 Thread SZEDER Gábor
On Wed, Nov 07, 2018 at 06:41:45PM +0900, Junio C Hamano wrote:
> * nd/i18n (2018-11-06) 16 commits
>  - fsck: mark strings for translation
>  - fsck: reduce word legos to help i18n
>  - parse-options.c: mark more strings for translation
>  - parse-options.c: turn some die() to BUG()
>  - parse-options: replace opterror() with optname()
>  - repack: mark more strings for translation
>  - remote.c: mark messages for translation
>  - remote.c: turn some error() or die() to BUG()
>  - reflog: mark strings for translation
>  - read-cache.c: add missing colon separators
>  - read-cache.c: mark more strings for translation
>  - read-cache.c: turn die("internal error") to BUG()
>  - attr.c: mark more string for translation
>  - archive.c: mark more strings for translation
>  - alias.c: mark split_cmdline_strerror() strings for translation
>  - git.c: mark more strings for translation
> 
>  More _("i18n") markings.

When this patch is merged into 'pu' all four tests added to
't1450-fsck.sh' in b29759d89a (fsck: check HEAD and reflog from other
worktrees, 2018-10-21) as part of 'nd/per-worktree-ref-iteration'
below fail when run with GETTEXT_POISON=y.  The test suite passes in
both of these topics on their own, even with GETTEXT_POISON, it's
their merge that is somehow problematic.

> * nd/per-worktree-ref-iteration (2018-11-05) 9 commits
>   (merged to 'next' on 2018-11-06 at 53803cedf3)
>  + git-worktree.txt: correct linkgit command name
>   (merged to 'next' on 2018-11-03 at 4cbe49a704)
>  + reflog expire: cover reflog from all worktrees
>  + fsck: check HEAD and reflog from other worktrees
>  + fsck: move fsck_head_link() to get_default_heads() to avoid some globals
>  + revision.c: better error reporting on ref from different worktrees
>  + revision.c: correct a parameter name
>  + refs: new ref types to make per-worktree refs visible to all worktrees
>  + Add a place for (not) sharing stuff between worktrees
>  + refs.c: indent with tabs, not spaces
> 
>  The code to traverse objects for reachability, used to decide what
>  objects are unreferenced and expendable, have been taught to also
>  consider per-worktree refs of other worktrees as starting points to
>  prevent data loss.
> 
>  Will merge to 'master'.


Re: What's cooking in git.git (Nov 2018, #03; Wed, 7)

2018-11-07 Thread Junio C Hamano
Ævar Arnfjörð Bjarmason  writes:

> On Wed, Nov 07 2018, Junio C Hamano wrote:
>
>> * ab/range-diff-no-patch (2018-11-07) 1 commit
>>  - range-diff: add a --no-patch option to show a summary
>>
>>  "range-diff" learns the "--no-patch" option, which can be used to
>>  get a high-level overview without the actual line-by-line patch
>>  difference shown.
>>
>>  Will merge to 'next'.
>
> Per <20181107122202.1813-1-ava...@gmail.com> it turns out this whole
> thing should have been a bugfix instead, sent a v2.

Thanks.


Re: What's cooking in git.git (Nov 2018, #03; Wed, 7)

2018-11-07 Thread Ævar Arnfjörð Bjarmason


On Wed, Nov 07 2018, Junio C Hamano wrote:

> * ab/range-diff-no-patch (2018-11-07) 1 commit
>  - range-diff: add a --no-patch option to show a summary
>
>  "range-diff" learns the "--no-patch" option, which can be used to
>  get a high-level overview without the actual line-by-line patch
>  difference shown.
>
>  Will merge to 'next'.

Per <20181107122202.1813-1-ava...@gmail.com> it turns out this whole
thing should have been a bugfix instead, sent a v2.

> * ab/dynamic-gettext-poison (2018-11-02) 1 commit
>  - i18n: make GETTEXT_POISON a runtime option
>
>  On hold.
>  cf. <20181102163725.gy30...@szeder.dev>

Hope to sent update soon...

> * ab/push-dwim-dst (2018-10-29) 9 commits
>  - SQUASH???
>  - push doc: document the DWYM behavior pushing to unqualified 
>  - push: add DWYM support for "git push refs/remotes/...:"
>  - push: test that  doesn't DWYM if  is unqualified
>  - push: add an advice on unqualified  push
>  - push: move unqualified refname error into a function
>  - push: improve the error shown on unqualified  push
>  - i18n: remote.c: mark error(...) messages for translation
>  - remote.c: add braces in anticipation of a follow-up change
>
>  "git push $there $src:$dst" rejects when $dst is not a fully
>  qualified refname and not clear what the end user meant.  The
>  codepath has been taught to give a clearer error message, and also
>  guess where the push should go by taking the type of the pushed
>  object into account (e.g. a tag object would want to go under
>  refs/tags/).
>
>  The last few steps are questionable.
>  cf. <87in1lkw54@evledraar.gmail.com>

...ditto...

> * ab/pack-tests-cleanup (2018-10-31) 3 commits
>   (merged to 'next' on 2018-11-03 at b4a39595bb)
>  + index-pack tests: don't leave test repo dirty at end
>  + pack-objects tests: don't leave test .git corrupt at end
>  + pack-objects test: modernize style
>
>  A couple of tests used to leave the repository in a state that is
>  deliberately corrupt, which have been corrected.
>
>  Will merge to 'master'.

Thanks!

> * nd/config-split (2018-10-29) 79 commits
>   (merged to 'next' on 2018-11-03 at a336559101)
>  + config.txt: remove config/dummy.txt
>  + config.txt: move worktree.* to a separate file
>  + config.txt: move web.* to a separate file
>  + config.txt: move versionsort.* to a separate file
>  + config.txt: move user.* to a separate file
>  + config.txt: move url.* to a separate file
>  + config.txt: move uploadpack.* to a separate file
>  + config.txt: move uploadarchive.* to a separate file
>  + config.txt: move transfer.* to a separate file
>  + config.txt: move tag.* to a separate file
>  + config.txt: move submodule.* to a separate file
>  + config.txt: move stash.* to a separate file
>  + config.txt: move status.* to a separate file
>  + config.txt: move splitIndex.* to a separate file
>  + config.txt: move showBranch.* to a separate file
>  + config.txt: move sequencer.* to a separate file
>  + config.txt: move sendemail-config.txt to config/
>  + config.txt: move reset.* to a separate file
>  + config.txt: move rerere.* to a separate file
>  + config.txt: move repack.* to a separate file
>  + config.txt: move remotes.* to a separate file
>  + config.txt: move remote.* to a separate file
>  + config.txt: move receive-config.txt to config/
>  + config.txt: move rebase-config.txt to config/
>  + config.txt: move push-config.txt to config/
>  + config.txt: move pull-config.txt to config/
>  + config.txt: move protocol.* to a separate file
>  + config.txt: move pretty.* to a separate file
>  + config.txt: move pager.* to a separate file
>  + config.txt: move pack.* to a separate file
>  + config.txt: move notes.* to a separate file
>  + config.txt: move mergetool.* to a separate file
>  + config.txt: move merge-config.txt to config/
>  + config.txt: move man.* to a separate file
>  + config.txt: move mailmap.* to a separate file
>  + config.txt: move mailinfo.* to a separate file
>  + config.txt: move log.* to a separate file
>  + config.txt: move interactive.* to a separate file
>  + config.txt: move instaweb.* to a separate file
>  + config.txt: move init.* to a separate file
>  + config.txt: move index.* to a separate file
>  + git-imap-send.txt: move imap.* to a separate file
>  + config.txt: move i18n.* to a separate file
>  + config.txt: move http.* to a separate file
>  + config.txt: move ssh.* to a separate file
>  + config.txt: move help.* to a separate file
>  + config.txt: move guitool.* to a separate file
>  + config.txt: move gui-config.txt to config/
>  + config.txt: move gpg.* to a separate file
>  + config.txt: move grep.* to a separate file
>  + config.txt: move gitweb.* to a separate file
>  + config.txt: move gitcvs-config.txt to config/
>  + config.txt: move gc.* to a separate file
>  + config.txt: move fsck.* to a separate file
>  + config.txt: move fmt-merge-msg-config.txt to config/
>  + config.txt: move format-config.txt to config/
>  + config.txt: move filter.* to a 

What's cooking in git.git (Nov 2018, #03; Wed, 7)

2018-11-07 Thread Junio C Hamano
Here are the topics that have been cooking.  Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'.  The ones marked with '.' do not appear in any of
the integration branches, but I am still holding onto them.

You can find the changes described here in the integration branches
of the repositories listed at

http://git-blame.blogspot.com/p/git-public-repositories.html

--
[Graduated to "master"]

* en/merge-cleanup-more (2018-10-18) 2 commits
  (merged to 'next' on 2018-10-26 at c706319c26)
 + merge-recursive: avoid showing conflicts with merge branch before HEAD
 + merge-recursive: improve auto-merging messages with path collisions
 (this branch is used by en/merge-path-collision.)

 Further clean-up of merge-recursive machinery.


* jc/http-curlver-warnings (2018-10-26) 1 commit
  (merged to 'next' on 2018-10-26 at 870e125cec)
 + http: give curl version warnings consistently
 (this branch uses js/mingw-http-ssl; is tangled with nd/config-split.)

 Warning message fix.


* js/mingw-http-ssl (2018-10-26) 3 commits
  (merged to 'next' on 2018-10-26 at 318e82e101)
 + http: when using Secure Channel, ignore sslCAInfo by default
 + http: add support for disabling SSL revocation checks in cURL
 + http: add support for selecting SSL backends at runtime
 (this branch is used by jc/http-curlver-warnings and nd/config-split.)

 On platforms with recent cURL library, http.sslBackend configuration
 variable can be used to choose a different SSL backend at runtime.
 The Windows port uses this mechanism to switch between OpenSSL and
 Secure Channel while talking over the HTTPS protocol.


* js/mingw-ns-filetime (2018-10-24) 3 commits
  (merged to 'next' on 2018-10-29 at 4563a0d9d0)
 + mingw: implement nanosecond-precision file times
 + mingw: replace MSVCRT's fstat() with a Win32-based implementation
 + mingw: factor out code to set stat() data

 Windows port learned to use nano-second resolution file timestamps.


* js/remote-archive-dwimfix (2018-10-26) 1 commit
  (merged to 'next' on 2018-10-26 at f5bf6946bd)
 + archive: initialize archivers earlier

 The logic to determine the archive type "git archive" uses did not
 correctly kick in for "git archive --remote", which has been
 corrected.


* js/shallow-and-fetch-prune (2018-10-25) 3 commits
  (merged to 'next' on 2018-10-26 at 93b7196560)
 + repack -ad: prune the list of shallow commits
 + shallow: offer to prune only non-existing entries
 + repack: point out a bug handling stale shallow info

 "git repack" in a shallow clone did not correctly update the
 shallow points in the repository, leading to a repository that
 does not pass fsck.


* jt/upload-pack-v2-fix-shallow (2018-10-19) 3 commits
  (merged to 'next' on 2018-10-29 at d9010b3c7b)
 + upload-pack: clear flags before each v2 request
 + upload-pack: make want_obj not global
 + upload-pack: make have_obj not global

 "git fetch" over protocol v2 into a shallow repository failed to
 fetch full history behind a new tip of history that was diverged
 before the cut-off point of the history that was previously fetched
 shallowly.


* jw/send-email-no-auth (2018-10-23) 1 commit
  (merged to 'next' on 2018-10-29 at a3fbbdb889)
 + send-email: explicitly disable authentication

 "git send-email" learned to disable SMTP authentication via the
 "--smtp-auth=none" option, even when the smtp username is given
 (which turns the authentication on by default).


* md/exclude-promisor-objects-fix (2018-10-23) 2 commits
  (merged to 'next' on 2018-10-29 at fb36a5dcbe)
 + exclude-promisor-objects: declare when option is allowed
 + Documentation/git-log.txt: do not show --exclude-promisor-objects

 Operations on promisor objects make sense in the context of only a
 small subset of the commands that internally use the revisions
 machinery, but the "--exclude-promisor-objects" option were taken
 and led to nonsense results by commands like "log", to which it
 didn't make much sense.  This has been corrected.


* mg/gpg-fingerprint (2018-10-23) 3 commits
  (merged to 'next' on 2018-10-26 at 1e219cb754)
 + gpg-interface.c: obtain primary key fingerprint as well
 + gpg-interface.c: support getting key fingerprint via %GF format
 + gpg-interface.c: use flags to determine key/signer info presence
 (this branch uses mg/gpg-parse-tighten; is tangled with jc/gpg-cocci-preincr.)

 New "--pretty=format:" placeholders %GF and %GP that show the GPG
 key fingerprints have been invented.


* mg/gpg-parse-tighten (2018-10-22) 1 commit
  (merged to 'next' on 2018-10-26 at efdec77193)
 + gpg-interface.c: detect and reject multiple signatures on commits
 (this branch is used by jc/gpg-cocci-preincr and mg/gpg-fingerprint.)

 Detect and reject a signature block that has more than one GPG
 signature.


* nd/completion-negation (2018-10-22) 1 commit
  (merged to 'next' on 2018-10-29 at 87e73b0c72)
 + completion: fix __gitcomp_builtin no longer