From: Junio C Hamano Date: Mon, 11 Mar 2013 03:19:09 GMT Subject: Re: [PATCH v2 02/23] contrib/subtree: Add command from-submodule Message-ID: <7vwqtebp3m.fsf@alter.siamese.dyndns.org> In-Reply-To: <1362958891-26941-3-git-send-email-pcampbell@kemitix.net> Paul Campbell writes: > @@ -721,4 +722,31 @@ cmd_push() > fi > } > > +cmd_from-submodule() > +{ I know contrib/subtree does not work with anything other than bash, and bash may accept this as a valid function name, but if you can avoid it easily I would prefer not to see a non-POSIX construct like this in my tree, even in contrib/ part: http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap03.html#tag_03_230 because people often reference random parts of the tree and mimick what existing code does. > + ensure_clean > + > + local submodule_sha=$(git submodule status $prefix | cut -d ' ' -f 2) Is $prefix guaranteed not to have any $IFS whitespaces? > + # 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)" Doesn't "git subtree" honor TMPDIR? Not complaining, but being curious. > + rm -r $tmp_repo > + mv $prefix $tmp_repo > + git rm $prefix Is $prefix guaranteed not to have any $IFS whitespaces? > + > + # 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" "$@"