[PATCH v2 02/23] contrib/subtree: Add command from-submodule
From: Paul Campbell <hidden>
Date: 2016-06-15 22:56:21
Subsystem:
the rest · Maintainer:
Linus Torvalds
From: Peter Jaros <redacted> Converts a git-submodule into a git-subtree. Signed-off-by: Paul Campbell <redacted> 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