From: Paul Campbell Date: Sun, 10 Mar 2013 23:41:10 GMT Subject: [PATCH v2 02/23] contrib/subtree: Add command from-submodule 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 Converts a git-submodule into a git-subtree. Signed-off-by: Paul Campbell 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= git subtree pull --prefix= git subtree push --prefix= git subtree split --prefix= +git subtree from-submodule --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