git export like svn export
Some code i wrote to do git export like svn export.
#!/bin/bash
######################################################################
# Simple script that will export a git version similar to svn export #
# Created 07/18/2012 by Edward Mann edmann.com #
######################################################################
GIT=`which git`
TAR=`which tar`
######################################################################
# Don't change the below, unless you know what you are doing. #
######################################################################
REMOTE=$1
TREE=$2
DIR=$3
RED='\e[1;31m'
BLUE='\e[1;34m'
#
# Check that our git executable is present and
# also that we have a good tar executable
#
checkSetup() {
echo -e "${BLUE}Checking setup..."
if [ ! -x ${GIT} ];
then
echo -e "${RED}The path i have set for the git executables is either wrong or not executable!"
exit 1
fi
if [ ! -x ${TAR} ]
then
echo -e "${RED}The path i have set for the tar executables is either wrong or not executable!"
exit 1
fi
if [ "${REMOTE}" == "" ] || [ "${TREE}" == "" ] || [ "${DIR}" == "" ];
then
showUsage
exit 1
fi
}
showUsage(){
echo "Usage:"
echo "git-export <repo> <tree> <dir>"
echo "<repo>: Source to create export from."
echo "<tree>: The tree or commit to produce an export for."
echo "<dir>: The directory to store the export into."
}
#
# Check that our directory does not exist. I don't want to remove the directory or overwrite the
# directory. This will hopefully prevent someone from destroying a directory acidentally.
#
checkDir(){
if [ -d ${DIR} ]
then
echo -e "${RED}The directory '${DIR}' exists, please remove the directory first."
exit 1
else
echo -e "${BLUE}Creating directory '${DIR}'..."
mkdir ${DIR}
fi
}
doExport(){
echo -e "${BLUE}Running Export..."
`${GIT} archive --format=tar --remote=${REMOTE} ${TREE} | (cd ${DIR} && ${TAR} -xf -)`
}
checkSetup
checkDir
doExport