From: Peter Jaros <pja...@pivotallabs.com>

Converts a git-submodule into a git-subtree.

Signed-off-by: Paul Campbell <pcampb...@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

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to