From: Kyle Meyer <kyle@kyleam.com>
To: Kyle Meyer <kyle@kyleam.com>, git@vger.kernel.org
Cc: debian@onerussian.com
Subject: [PATCH v2 0/4] dir: Treat a repository without commits as a repository
Date: Tue, 2 Apr 2019 14:35:01 -0400 [thread overview]
Message-ID: <20190402183505.31512-1-kyle@kyleam.com> (raw)
In-Reply-To: <87lg1eq146.fsf@kyleam.com>
> Kyle Meyer <kyle@kyleam.com> writes:
>
> [...]
>
>> diff --git a/git-submodule.sh b/git-submodule.sh
>> index 514ede2596..6c74656027 100755
>> --- a/git-submodule.sh
>> +++ b/git-submodule.sh
>> @@ -234,10 +234,18 @@ cmd_add()
>> if test -z "$force" &&
>> ! git add --dry-run --ignore-missing --no-warn-embedded-repo "$sm_path" > /dev/null 2>&1
>> then
>> - eval_gettextln "The following path is ignored by one of your .gitignore files:
>> + if test -d "$sm_path" &&
>> + test -z $(git -C "$sm_path" rev-parse --show-cdup 2>/dev/null) &&
>> + ! git -C "$sm_path" rev-parse --verify -q HEAD >/dev/null
>> + then
>> + die "$(eval_gettext "'\$sm_path' does not have any commits")"
>> + else
>> + eval_gettextln "\
>> +The following path is ignored by one of your .gitignore files:
>> \$sm_path
>> Use -f if you really want to add it." >&2
>> - exit 1
>> + exit 1
>> + fi
>
> I didn't think through this check, which would have been obvious had I
> ran the added test without the rest of the patches in this series. It
> assumes that the 'git add --dry-run' call fails, but that failure
> depends on the last patch of this series. So I'd need to move this
> patch to the end or find a new place for this "no commits" check.
v2 moves the "no commits" check outside of the 'git add --dry-run'
failure condition so that the first patch doesn't depend on the final
patch in this series.
Kyle Meyer (4):
submodule: refuse to add repository with no commits
t3000: move non-submodule repo test to separate file
t3009: test that ls-files -o traverses bogus repo
dir: do not traverse repositories with no commits
dir.c | 6 ++-
git-submodule.sh | 7 ++++
t/t3000-ls-files-others.sh | 7 ----
t/t3009-ls-files-others-nonsubmodule.sh | 56 +++++++++++++++++++++++++
t/t3700-add.sh | 1 +
t/t7400-submodule-basic.sh | 11 ++++-
6 files changed, 78 insertions(+), 10 deletions(-)
create mode 100755 t/t3009-ls-files-others-nonsubmodule.sh
Range-diff against v1:
1: e0db7e3c3c ! 1: b080e2c557 submodule: refuse to add repository with no commits
@@ -9,10 +9,9 @@
in the sub-repository are added to the current repository.
Detect if the path is a repository with no commits and abort to avoid
- getting into this state unless --force is used. Reacting to --force
- isn't very useful, especially because an upcoming commit will make
- 'git add' fail in this situation, but it allows us to use the same
- 'git add --dry-run' condition as the ignored path case.
+ getting into this state. Note that this check must come before the
+ 'git add --dry-run' check because an upcoming commit will make 'git
+ add' fail in this situation.
Signed-off-by: Kyle Meyer <kyle@kyleam.com>
@@ -20,26 +19,19 @@
--- a/git-submodule.sh
+++ b/git-submodule.sh
@@
+ die "$(eval_gettext "'\$sm_path' already exists in the index and is not a submodule")"
+ fi
+
++ if test -d "$sm_path" &&
++ test -z $(git -C "$sm_path" rev-parse --show-cdup 2>/dev/null)
++ then
++ git -C "$sm_path" rev-parse --verify -q HEAD >/dev/null ||
++ die "$(eval_gettext "'\$sm_path' does not have any commits")"
++ fi
++
if test -z "$force" &&
! git add --dry-run --ignore-missing --no-warn-embedded-repo "$sm_path" > /dev/null 2>&1
then
-- eval_gettextln "The following path is ignored by one of your .gitignore files:
-+ if test -d "$sm_path" &&
-+ test -z $(git -C "$sm_path" rev-parse --show-cdup 2>/dev/null) &&
-+ ! git -C "$sm_path" rev-parse --verify -q HEAD >/dev/null
-+ then
-+ die "$(eval_gettext "'\$sm_path' does not have any commits")"
-+ else
-+ eval_gettextln "\
-+The following path is ignored by one of your .gitignore files:
- \$sm_path
- Use -f if you really want to add it." >&2
-- exit 1
-+ exit 1
-+ fi
- fi
-
- if test -n "$custom_name"
diff --git a/t/t7400-submodule-basic.sh b/t/t7400-submodule-basic.sh
--- a/t/t7400-submodule-basic.sh
2: 6eed1f5daf = 2: c027701842 t3000: move non-submodule repo test to separate file
3: 7ba3209762 = 3: 97f53e30c0 t3009: test that ls-files -o traverses bogus repo
4: 2901375dc1 = 4: a926b87102 dir: do not traverse repositories with no commits
--
2.21.0
next prev parent reply other threads:[~2019-04-02 18:35 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-03-14 15:02 [PATCH 0/4] dir: Treat a repository without commits as a repository Kyle Meyer
2019-03-14 15:02 ` [PATCH 1/4] submodule: refuse to add repository with no commits Kyle Meyer
2019-03-16 15:40 ` Kyle Meyer
2019-04-02 18:35 ` Kyle Meyer [this message]
2019-04-02 18:35 ` [PATCH v2 " Kyle Meyer
2019-04-04 7:24 ` Junio C Hamano
2019-04-02 18:35 ` [PATCH v2 2/4] t3000: move non-submodule repo test to separate file Kyle Meyer
2019-04-03 7:59 ` Junio C Hamano
2019-04-03 22:21 ` Kyle Meyer
2019-04-02 18:35 ` [PATCH v2 3/4] t3009: test that ls-files -o traverses bogus repo Kyle Meyer
2019-04-02 18:35 ` [PATCH v2 4/4] dir: do not traverse repositories with no commits Kyle Meyer
2019-04-03 8:05 ` Junio C Hamano
2019-04-03 22:25 ` Kyle Meyer
2019-03-14 15:02 ` [PATCH 2/4] t3000: move non-submodule repo test to separate file Kyle Meyer
2019-03-14 15:02 ` [PATCH 3/4] t3009: test that ls-files -o traverses bogus repo Kyle Meyer
2019-03-14 15:02 ` [PATCH 4/4] dir: do not traverse repositories with no commits Kyle Meyer
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: http://vger.kernel.org/majordomo-info.html
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190402183505.31512-1-kyle@kyleam.com \
--to=kyle@kyleam.com \
--cc=debian@onerussian.com \
--cc=git@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).