diff options
Diffstat (limited to 'git-subtree-update')
-rwxr-xr-x | git-subtree-update | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/git-subtree-update b/git-subtree-update new file mode 100755 index 0000000..af45ed6 --- /dev/null +++ b/git-subtree-update @@ -0,0 +1,33 @@ +#!/bin/bash +# +# Update a subtree. +# + +# Parameters +BASENAME="`basename $0`" +REMOTE="$1" +FOLDER="$2" + +# Syntax +if [ -z "$2" ]; then + echo "usage: $BASENAME <gitremote> <folder>" + exit 1 +fi + +# Check remote +if ! git remote | grep -qe "^$REMOTE"; then + echo "fatal: no such remote $REMOTE" + exit +fi + +# Fetch the remote +git fetch $REMOTE master + +# Process +if [ ! -d "$FOLDER" ]; then + # Add a subtree + git subtree add --prefix $FOLDER $REMOTE master --squash +else + # Update a subtree + git subtree pull --prefix $FOLDER $REMOTE master --squash +fi |