Skip to content
Tristan F. edited this page Nov 11, 2013 · 3 revisions

Here are some useful tips and tricks

Handling submodules

As submodules are references to other git repositories, they are not pushed with your git push. If you are using gitreceive as a part of your deployment workflow, you might want to include these, and here is how; in your receive script, just include the following :

echo "----> Unpacking"
mkdir -p /tmp/deploy && cat | tar -x -C /tmp/deploy
cd /tmp/deploy

echo "----> Getting submodules"
# We reinitialize .git to avoid conflicts
rm -fr .git
# GIT_DIR is previously set by gitreceive to ".", we want it back to default for this
unset GIT_DIR
git init .

# We read the submodules from .gitmodules
git config -f .gitmodules --get-regexp '^submodule\..*\.path$' |
    while read path_key path
    do
    	rm -fr $path
        url_key=`echo $path_key | sed 's/\.path/.url/'`
        url=`git config -f .gitmodules --get "$url_key"`
        # $3 is the username
        # Change it if needed
        git submodule add $3@$url $path
    done

That way, each one of your submodule will be cloned & updated properly.

Clone this wiki locally