git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH v2 02/23] contrib/subtree: Add command from-submodule

From
Paul Campbell <pcampbell@kemitix.net>
Date
Mar 10, 2013, 23:41 UTC
Message-ID
<1362958891-26941-3-git-send-email-pcampbell@kemitix.net>
In-Reply-To
<1362958891-26941-1-git-send-email-pcampbell@kemitix.net>
From: Peter Jaros <pjaros@pivotallabs.com>
Converts a git-submodule into a git-subtree.
Signed-off-by: Paul Campbell <pcampbell@kemitix.net>
Conflicts:
	.gitignore
	contrib/subtree/git-subtree.sh
	test.sh
---
 contrib/subtree/git-subtree.sh | 30 +++++++++++++++++++++++++++++-
 1 file changed, 29 insertions(+), 1 deletion(-)
diff --git a/contrib/subtree/git-subtree.sh b/contrib/subtree/git-subtree.sh
index 8a23f58..caf4988 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
@@ -101,7 +102,7 @@ done
 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
@@ -721,4 +722,31 @@ cmd_push()
 	fi
 }
 
+cmd_from-submodule()
+{
+	ensure_clean
+
+	local submodule_sha=$(git submodule status $prefix | cut -d ' ' -f 2)
+
+	# Remove references to submodule.
+	git config --remove-section submodule.$prefix
+	git config --file .gitmodules --remove-section submodule.$prefix
+	git add .gitmodules
+
+	# Move submodule aside.
+	local tmp_repo="$(mktemp -d /tmp/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_$command" "$@"
-- 
1.8.2.rc1
Previous: Paul CampbellNext: Junio C Hamano
Message 3 of 33 in “contrib/subtree: Collected updates”
  1. 00/23 contrib/subtree: Collected updatesPaul Campbell, Mar 10, 2013
  2. 01/23 contrib/subtree: Fix typo (s/incldued/included/)Paul Campbell, Mar 10, 2013
  3. 02/23 contrib/subtree: Add command from-submodulePaul Campbell, Mar 10, 2013
  4. Junio C HamanoMar 11, 2013
  5. contrib/subtree: Add command from-submodulePaul Campbell, Mar 24, 2013
  6. 03/23 contrib/subtree: Teach add to store repository & branch in .gittreesPaul Campbell, Mar 10, 2013
  7. Junio C HamanoMar 11, 2013
  8. Paul CampbellMar 24, 2013
  9. contrib/subtree: Teach add to store repository & branch in .gittreesPaul Campbell, Mar 24, 2013
  10. 04/23 contrib/subtree: Teach push and pull to use .gittrees for defaultsPaul Campbell, Mar 10, 2013
  11. Junio C HamanoMar 11, 2013
  12. Paul CampbellMar 24, 2013
  13. 05/23 contrib/subtree: Add commands pull_all and push_allPaul Campbell, Mar 10, 2013
  14. Junio C HamanoMar 11, 2013
  15. Paul CampbellMar 11, 2013
  16. 06/23 contrib/subtree: Rename commands push_all/pull_all to push-all/pull-allPaul Campbell, Mar 10, 2013
  17. 07/23 contrib/subtree: Teach push and pull to use .gittrees if neededPaul Campbell, Mar 10, 2013
  18. 08/23 contrib/subtree: Replace invisible carriage return with a visible \rPaul Campbell, Mar 10, 2013
  19. 09/23 contrib/subtree: Teach push to abort if split failsPaul Campbell, Mar 10, 2013
  20. 10/23 contrib/subtree: Add command diffPaul Campbell, Mar 10, 2013
  21. 11/23 contrib/subtree: Add command listPaul Campbell, Mar 10, 2013
  22. 12/23 contrib/subtree: Add command prunePaul Campbell, Mar 10, 2013
  23. 13/23 contrib/subtree: Add prune command to OPTS_SPECPaul Campbell, Mar 10, 2013
  24. 14/23 contrib/subtree: Remove trailing slash from prefix parameterPaul Campbell, Mar 10, 2013
  25. 15/23 contrib/subtree: Teach from-submodule to add new subtree to .gittreesPaul Campbell, Mar 10, 2013
  26. 16/23 contrib/subtree: Document pull-all and push-allPaul Campbell, Mar 10, 2013
  27. 17/23 contrib/subtree: Document from-submodule and prune commandsPaul Campbell, Mar 10, 2013
  28. 18/23 contrib/subtree: Add missing commands to SYNOPSISPaul Campbell, Mar 10, 2013
  29. 19/23 contrib/subtree: Document list commandPaul Campbell, Mar 10, 2013
  30. 20/23 contrib/subtree: Teach push to use --force optionPaul Campbell, Mar 10, 2013
  31. 21/23 contrib/subtree: Convert spaces to tabs and remove some trailing whitespacePaul Campbell, Mar 10, 2013
  32. 22/23 contrib/subtree: Parameters repository/branch for push/pull are optionalPaul Campbell, Mar 10, 2013
  33. 23/23 contrib/subtree: Fix order of case switches so default case is lastPaul Campbell, Mar 10, 2013

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.