Skip to content

Instantly share code, notes, and snippets.

@pmatos
Created September 20, 2019 12:48
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save pmatos/403351b616860e94325ce06f03e3f039 to your computer and use it in GitHub Desktop.
Save pmatos/403351b616860e94325ce06f03e3f039 to your computer and use it in GitHub Desktop.
WebKit project is too large to push, or import to github in one go. Used this script to import it 500 hashes at a time.
#!/bin/sh
# Adjust the following variables as necessary
REMOTE=github
BRANCH=$(git rev-parse --abbrev-ref HEAD)
BATCH_SIZE=500
# check if the branch exists on the remote
if git show-ref --quiet --verify refs/remotes/$REMOTE/$BRANCH; then
# if so, only push the commits that are not on the remote already
range=$REMOTE/$BRANCH..HEAD
else
# else push all the commits
range=HEAD
fi
# count the number of commits to push
n=$(git log --first-parent --format=format:x $range | wc -l)
# push each batch
for i in $(seq $n -$BATCH_SIZE 1); do
# get the hash of the commit to push
h=$(git log --first-parent --reverse --format=format:%H --skip $i -n1)
echo "Pushing $h..."
git push $REMOTE $h:refs/heads/$BRANCH
done
# push the final partial batch
git push $REMOTE HEAD:refs/heads/$BRANCH
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment