From: Petr Baudis <pasky@suse.cz>
To: git@vger.kernel.org
Cc: gitster@pobox.com
Subject: [PATCH 6/6] git submodule add: Fix naming clash handling
Date: Fri, 12 Sep 2008 23:09:24 +0200 [thread overview]
Message-ID: <20080912210924.31628.61593.stgit@localhost> (raw)
In-Reply-To: <20080912210817.31628.69014.stgit@localhost>
This patch fixes git submodule add behaviour when we add submodule
living at a same path as logical name of existing submodule. This
can happen e.g. in case the user git mv's the previous submodule away
and then git submodule add's another under the same name.
A test-case is obviously included.
This is not completely satisfactory since .git/config cross-commit
conflicts can still occur. A question is whether this is worth
handling, maybe it would be worth adding some kind of randomization
of the autogenerated submodule name, e.g. appending $$ or a timestamp.
Signed-off-by: Petr Baudis <pasky@suse.cz>
---
git-submodule.sh | 15 ++++++++++++---
t/t7400-submodule-basic.sh | 11 +++++++++++
2 files changed, 23 insertions(+), 3 deletions(-)
diff --git a/git-submodule.sh b/git-submodule.sh
index 1c39b59..3e4d839 100755
--- a/git-submodule.sh
+++ b/git-submodule.sh
@@ -201,10 +201,19 @@ cmd_add()
git add "$path" ||
die "Failed to add submodule '$path'"
- git config -f .gitmodules submodule."$path".path "$path" &&
- git config -f .gitmodules submodule."$path".url "$repo" &&
+ name="$path"
+ if git config -f .gitmodules submodule."$name".path; then
+ name="$path~"; i=1;
+ while git config -f .gitmodules submodule."$name".path; do
+ name="$path~$i"
+ i=$((i+1))
+ done
+ fi
+
+ git config -f .gitmodules submodule."$name".path "$path" &&
+ git config -f .gitmodules submodule."$name".url "$repo" &&
git add .gitmodules ||
- die "Failed to register submodule '$path'"
+ die "Failed to register submodule '$path' (name '$name')"
}
#
diff --git a/t/t7400-submodule-basic.sh b/t/t7400-submodule-basic.sh
index 8a002bc..0d12a37 100755
--- a/t/t7400-submodule-basic.sh
+++ b/t/t7400-submodule-basic.sh
@@ -235,4 +235,15 @@ test_expect_success 'submodule add -b' '
'
+test_expect_success 'submodule add auto-naming clash' '
+
+ git submodule add "$(pwd)/init2/.git" example &&
+ test -d example/.git &&
+ [ "$(git config -f .gitmodules submodule.example.url)" = "$(pwd)/init2" ] &&
+ [ "$(git config -f .gitmodules submodule.example.path)" = "init" ]
+ [ "$(git config -f .gitmodules submodule.example~.url)" = "$(pwd)/init2/.git" ] &&
+ [ "$(git config -f .gitmodules submodule.example~.path)" = "example" ]
+
+'
+
test_done
next prev parent reply other threads:[~2008-09-12 21:10 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-09-12 21:08 [PATCH 0/6] Submodule support for git mv and git rm Petr Baudis
2008-09-12 21:08 ` [PATCH 1/6] submodule.*: Introduce simple C interface for submodule lookup by path Petr Baudis
2008-09-12 21:23 ` Junio C Hamano
2008-09-12 21:35 ` Jakub Narebski
2008-09-12 21:58 ` Petr Baudis
2008-09-12 21:09 ` [PATCH 2/6] git rm: Support for removing submodules Petr Baudis
2008-09-12 21:49 ` Junio C Hamano
2008-09-12 21:59 ` Junio C Hamano
2008-09-12 22:24 ` Petr Baudis
2008-09-12 22:42 ` Junio C Hamano
2008-09-12 21:09 ` [PATCH 3/6] git mv: Support moving submodules Petr Baudis
2008-09-12 21:42 ` [PATCH] " Petr Baudis
2008-09-12 22:19 ` Junio C Hamano
2008-09-12 21:09 ` [PATCH 4/6] t7403: Submodule git mv, git rm testsuite Petr Baudis
2008-09-12 21:09 ` [PATCH 5/6] t7400: Add short "git submodule add" testsuite Petr Baudis
2008-09-12 21:09 ` Petr Baudis [this message]
2008-09-13 2:24 ` [PATCH 6/6] git submodule add: Fix naming clash handling Junio C Hamano
2008-09-13 11:32 ` Lars Hjemli
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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20080912210924.31628.61593.stgit@localhost \
--to=pasky@suse.cz \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
/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.
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 NNTP newsgroup(s).