From: Paul Campbell <pcampbell@kemitix.net>
To: git@vger.kernel.org
Cc: greened@obbligato.org, Paul Campbell <pcampbell@kemitix.net>,
"Avery Pennarun" <apenwarr@gmail.com>,
"Wayne Walter" <wayne@tickzoom.com>
Subject: [PATCH] contrib/subtree: Add command from-submodule
Date: Sun, 24 Mar 2013 20:59:40 +0000 [thread overview]
Message-ID: <1364158780-31211-1-git-send-email-pcampbell@kemitix.net> (raw)
In-Reply-To: <7vwqtebp3m.fsf@alter.siamese.dyndns.org>
Converts a git-submodule into a git-subtree.
Based-on-patch-by: Peter Jaros <pjaros@pivotallabs.com>
Signed-off-by: Paul Campbell <pcampbell@kemitix.net>
---
contrib/subtree/git-subtree.sh | 37 +++++++++++++++++++++++++++++++++++--
1 file changed, 35 insertions(+), 2 deletions(-)
diff --git a/contrib/subtree/git-subtree.sh b/contrib/subtree/git-subtree.sh
index a81dfef..5e3c0b8 100755
--- a/contrib/subtree/git-subtree.sh
+++ b/contrib/subtree/git-subtree.sh
@@ -14,6 +14,7 @@ git subtree merge --prefix=<prefix> <commit>
git subtree pull --prefix=<prefix> <repository> <refspec...>
git subtree push --prefix=<prefix> <repository> <refspec...>
git subtree split --prefix=<prefix> <commit...>
+git subtree from-submodule --prefix=<prefix>
--
h,help show the help
q quiet
@@ -114,7 +115,7 @@ prefix="${prefix%/}";
command="$1"
shift
case "$command" in
- add|merge|pull) default= ;;
+ add|merge|pull|from-submodule) default= ;;
split|push) default="--default HEAD" ;;
*) die "Unknown command '$command'" ;;
esac
@@ -140,7 +141,14 @@ if ( test "$command" != "pull" ) && ( test "$command" != "add" ) && ( test "$com
fi
fi
+# map command to a function
+case $command in
+ from-submodule) cmd=cmd_from_submodule;;
+ *) cmd="cmd_$command";;
+esac
+
debug "command: {$command}"
+debug "function: {$function}"
debug "quiet: {$quiet}"
debug "revs: {$revs}"
debug "dir: {$dir}"
@@ -766,4 +774,29 @@ cmd_push()
fi
}
-"cmd_$command" "$@"
+cmd_from_submodule()
+{
+ ensure_clean
+
+ # Remove references to submodule.
+ git config --remove-section "submodule.$prefix"
+ git config --file .gitmodules --remove-section "submodule.$prefix"
+ git add .gitmodules
+
+ # Move submodule aside.
+ tmp_repo="$(mktemp -d git-subtree.XXXXX)"
+ rm -r $tmp_repo
+ mv "$prefix" $tmp_repo
+ git rm "$prefix"
+
+ # Commit changes.
+ git commit -m "Remove '$prefix/' submodule"
+
+ # subtree add from submodule repo.
+ cmd_add_repository $tmp_repo HEAD
+
+ # Remove submodule repo.
+ rm -rf $tmp_repo
+}
+
+"$cmd" "$@"
--
1.8.2
next prev parent reply other threads:[~2013-03-24 21:00 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-03-10 23:41 [PATCH v2 00/23] contrib/subtree: Collected updates Paul Campbell
2013-03-10 23:41 ` [PATCH v2 01/23] contrib/subtree: Fix typo (s/incldued/included/) Paul Campbell
2013-03-10 23:41 ` [PATCH v2 02/23] contrib/subtree: Add command from-submodule Paul Campbell
2013-03-11 3:19 ` Junio C Hamano
2013-03-24 20:59 ` Paul Campbell [this message]
2013-03-10 23:41 ` [PATCH v2 03/23] contrib/subtree: Teach add to store repository & branch in .gittrees Paul Campbell
2013-03-11 3:24 ` Junio C Hamano
2013-03-24 20:17 ` Paul Campbell
2013-03-24 20:22 ` [PATCH] " Paul Campbell
2013-03-10 23:41 ` [PATCH v2 04/23] contrib/subtree: Teach push and pull to use .gittrees for defaults Paul Campbell
2013-03-11 3:35 ` Junio C Hamano
2013-03-24 21:22 ` Paul Campbell
2013-03-10 23:41 ` [PATCH v2 05/23] contrib/subtree: Add commands pull_all and push_all Paul Campbell
2013-03-11 5:03 ` Junio C Hamano
2013-03-11 11:49 ` Paul Campbell
2013-03-10 23:41 ` [PATCH v2 06/23] contrib/subtree: Rename commands push_all/pull_all to push-all/pull-all Paul Campbell
2013-03-10 23:41 ` [PATCH v2 07/23] contrib/subtree: Teach push and pull to use .gittrees if needed Paul Campbell
2013-03-10 23:41 ` [PATCH v2 08/23] contrib/subtree: Replace invisible carriage return with a visible \r Paul Campbell
2013-03-10 23:41 ` [PATCH v2 09/23] contrib/subtree: Teach push to abort if split fails Paul Campbell
2013-03-10 23:41 ` [PATCH v2 10/23] contrib/subtree: Add command diff Paul Campbell
2013-03-10 23:41 ` [PATCH v2 11/23] contrib/subtree: Add command list Paul Campbell
2013-03-10 23:41 ` [PATCH v2 12/23] contrib/subtree: Add command prune Paul Campbell
2013-03-10 23:41 ` [PATCH v2 13/23] contrib/subtree: Add prune command to OPTS_SPEC Paul Campbell
2013-03-10 23:41 ` [PATCH v2 14/23] contrib/subtree: Remove trailing slash from prefix parameter Paul Campbell
2013-03-10 23:41 ` [PATCH v2 15/23] contrib/subtree: Teach from-submodule to add new subtree to .gittrees Paul Campbell
2013-03-10 23:41 ` [PATCH v2 16/23] contrib/subtree: Document pull-all and push-all Paul Campbell
2013-03-10 23:41 ` [PATCH v2 17/23] contrib/subtree: Document from-submodule and prune commands Paul Campbell
2013-03-10 23:41 ` [PATCH v2 18/23] contrib/subtree: Add missing commands to SYNOPSIS Paul Campbell
2013-03-10 23:41 ` [PATCH v2 19/23] contrib/subtree: Document list command Paul Campbell
2013-03-10 23:41 ` [PATCH v2 20/23] contrib/subtree: Teach push to use --force option Paul Campbell
2013-03-10 23:41 ` [PATCH v2 21/23] contrib/subtree: Convert spaces to tabs and remove some trailing whitespace Paul Campbell
2013-03-10 23:41 ` [PATCH v2 22/23] contrib/subtree: Parameters repository/branch for push/pull are optional Paul Campbell
2013-03-10 23:41 ` [PATCH v2 23/23] contrib/subtree: Fix order of case switches so default case is last Paul Campbell
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=1364158780-31211-1-git-send-email-pcampbell@kemitix.net \
--to=pcampbell@kemitix.net \
--cc=apenwarr@gmail.com \
--cc=git@vger.kernel.org \
--cc=greened@obbligato.org \
--cc=wayne@tickzoom.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).