set -e
NOGIT_DIR=.nogit
+NOGIT_DIR_TMP=$NOGIT_DIR-tmp
usage_brief()
{
fi
# Clone the repository into a temporary directory
- mkdir $NOGIT_DIR-tmp
- cd $NOGIT_DIR-tmp
+ mkdir $NOGIT_DIR_TMP
+ cd $NOGIT_DIR_TMP
git clone "$url" tmp >/dev/null 2>&1
# Sanity check that we won't be overwriting any files
echo "" >&2
echo "Cowardly refusing to clone" >&2
cd ..
- rm -rf $NOGIT_DIR-tmp
+ rm -rf $NOGIT_DIR_TMP
false
fi
# checkout the (known to not be conflicting) files.
mv tmp/.git ../$NOGIT_DIR
cd ..
- rm -rf $NOGIT_DIR-tmp
+ rm -rf $NOGIT_DIR_TMP
GIT_DIR=$NOGIT_DIR git reset --hard >/dev/null 2>&1
echo "Completed nogit clone of $url"
nogit_sync()
{
- echo "Internal error: 'nogit sync' not yet implemented"
+ # First commit any locally modified nogit files
+ GIT_DIR=$NOGIT_DIR git commit -a -m "nogit-sync commit" >/dev/null 2>&1 || true
+
+ # Then, fetch and merge any upstream changes
+ GIT_DIR=$NOGIT_DIR git fetch >/dev/null 2>&1
+ GIT_DIR=$NOGIT_DIR git merge -m "nogit-sync merge" >/dev/null 2>&1
+
+ # Finally, push any new commits up to the upstream repository
+ GIT_DIR=$NOGIT_DIR git push >/dev/null 2>&1
+
+ echo "Completed nogit sync"
}
if [ $# -lt 1 ]; then
false;
fi
nogit_clone "$2"
- ;;
+ ;;
sync)
nogit_sync
- ;;
+ ;;
help)
usage
true
- ;;
+ ;;
*)
echo "Error: Unknown command: $cmd" >&2
echo ""