Created
August 24, 2017 14:15
-
-
Save doctorallen/b38976971f61868ec6d3d978ee479479 to your computer and use it in GitHub Desktop.
Clones a Git repository with all tags and branches, and archives it as a .tar.gz file.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env bash | |
# Takes one parameter: a remote git repository URL. | |
# | |
# This is the stuff this script does: | |
# | |
# 1. Clones the repository | |
# 2. Fetches all remote branches | |
# 3. Compresses the folder | |
# 4. Deletes the cloned folder. | |
# | |
# Your remote repository is left untouched by this script. | |
if [ "$1" = "" ] | |
then | |
echo "Usage: $0 <git repositiry clone URL>" 1>&2 | |
exit 1 | |
fi | |
# Variable definitions | |
GITURL=$1 | |
GITNAME=${GITURL##*/} | |
FOLDERNAME=${GITNAME%.git} | |
TARNAME="$FOLDERNAME.$(date +%Y-%m-%d).tar.gz" | |
# Clone the repos and go into the folder | |
git clone --recursive $GITURL $FOLDERNAME | |
cd $FOLDERNAME | |
# Pull all branches | |
git branch -r | grep -v HEAD | grep -v master | while read branch; do | |
git branch --track ${branch##*/} $branch | |
done | |
#Pull all remote data and tags | |
git fetch --all | |
git fetch --tags | |
git pull --all | |
git gc # Cleanup unnecessary files and optimize the local repository | |
# Create an archive of the directory | |
cd ../ | |
tar cfz "$TARNAME" "$FOLDERNAME/" | |
# Remove the git clone | |
rm -rf "./$FOLDERNAME" | |
echo "Your archived git repository is named $TARNAME" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment