From: Petr Baudis <pasky@suse.cz>
To: git@vger.kernel.org
Subject: [PATCH 3/7] git submodule add: Fix naming clash handling
Date: Wed, 16 Jul 2008 21:11:18 +0200 [thread overview]
Message-ID: <20080716191118.19772.96984.stgit@localhost> (raw)
In-Reply-To: <20080716190753.19772.93357.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 9228f56..a93547b 100755
--- a/git-submodule.sh
+++ b/git-submodule.sh
@@ -192,10 +192,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 ab5eb1e..092dffc 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-07-16 19:12 UTC|newest]
Thread overview: 56+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-07-16 19:11 [RFC][PATCH 0/7] Submodule support in git mv, git rm Petr Baudis
2008-07-16 19:11 ` [PATCH 1/7] git-mv: Remove dead code branch Petr Baudis
2008-07-16 19:11 ` [PATCH 2/7] t7400: Add short "git submodule add" testsuite Petr Baudis
2008-07-16 19:11 ` Petr Baudis [this message]
2008-07-16 19:11 ` [PATCH 4/7] submodule.*: Introduce simple C interface for submodule lookup by path Petr Baudis
2008-07-16 19:11 ` [PATCH 5/7] git mv: Support moving submodules Petr Baudis
2008-07-17 2:37 ` Junio C Hamano
2008-07-17 13:06 ` Petr Baudis
2008-07-17 22:31 ` [PATCH] git-mv: Keep moved index entries inact Petr Baudis
2008-07-17 22:34 ` [PATCH] git mv: Support moving submodules Petr Baudis
2008-07-19 23:54 ` [PATCH] git-mv: Keep moved index entries inact Junio C Hamano
2008-07-21 0:23 ` Petr Baudis
2008-07-21 0:25 ` [PATCHv2] " Petr Baudis
2008-07-21 4:36 ` Junio C Hamano
2008-07-26 6:46 ` Junio C Hamano
2008-07-27 13:41 ` Petr Baudis
2008-07-27 13:47 ` [PATCH] t/t7001-mv.sh: Propose ability to use git-mv on conflicting entries Petr Baudis
2008-07-28 1:13 ` Junio C Hamano
2008-07-28 1:21 ` Junio C Hamano
2008-07-28 14:20 ` [PATCHv2] git-mv: Keep moved index entries inact SZEDER Gábor
2008-07-28 15:06 ` Johannes Schindelin
2008-07-28 15:14 ` Johannes Schindelin
2008-07-28 18:24 ` Johannes Schindelin
2008-07-28 19:19 ` Junio C Hamano
2008-07-28 23:41 ` Johannes Schindelin
2008-07-28 23:55 ` Johannes Schindelin
2008-07-29 0:17 ` Petr Baudis
2008-07-29 0:46 ` Junio C Hamano
2008-07-29 5:23 ` Junio C Hamano
2008-08-04 7:49 ` Not going beyond symbolic links Junio C Hamano
2008-08-04 7:51 ` [PATCH 1/2] update-index: refuse to add working tree items beyond symlinks Junio C Hamano
2008-08-04 7:52 ` [PATCH 2/2] add: " Junio C Hamano
2008-08-05 0:21 ` Not going beyond symbolic links Linus Torvalds
2008-08-05 0:54 ` Junio C Hamano
2008-08-05 1:43 ` Linus Torvalds
2008-08-05 1:59 ` Johannes Schindelin
2008-08-05 2:28 ` Linus Torvalds
2008-08-05 6:11 ` Junio C Hamano
2008-08-05 12:54 ` Dmitry Potapov
2008-08-05 23:57 ` Junio C Hamano
2008-08-05 17:15 ` Linus Torvalds
2008-08-05 4:44 ` Junio C Hamano
2008-08-05 11:23 ` Johannes Schindelin
2008-08-05 3:01 ` Junio C Hamano
2008-08-05 3:04 ` david
2008-08-07 6:52 ` Junio C Hamano
2008-08-08 20:55 ` Junio C Hamano
2008-08-08 23:45 ` Linus Torvalds
2008-07-21 1:20 ` [PATCH] git-mv: Keep moved index entries inact Johannes Schindelin
2008-07-21 7:18 ` Petr Baudis
2008-07-21 7:38 ` Junio C Hamano
2008-07-16 19:11 ` [PATCH 6/7] git rm: Support for removing submodules Petr Baudis
2008-07-16 22:41 ` Johannes Schindelin
2008-07-17 12:35 ` Petr Baudis
2008-07-17 12:59 ` Johannes Schindelin
2008-07-16 19:11 ` [PATCH 7/7] t7403: Submodule git mv, git rm testsuite Petr Baudis
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=20080716191118.19772.96984.stgit@localhost \
--to=pasky@suse.cz \
--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.
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).