Advertisement
Guest User

Untitled

a guest
Oct 22nd, 2016
52
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.28 KB | None | 0 0
  1. #!/usr/bin/env bash
  2. #
  3. # git_cleanup.sh
  4. #
  5. # Cleans up local git repository, using origin/master as a
  6. # frame of reference.
  7. #
  8. # * Deletes references to remote branches that have since been removed.
  9. # * Deletes local branches that have been fully merged into master.
  10. # * Garbage collects local git repo.
  11.  
  12. command -v git >/dev/null 2>&1
  13. if [ "$?" -ne "0" ]; then
  14. >&2 echo "git not found in PATH"
  15. exit 1
  16. fi
  17.  
  18. git rev-parse --git-dir >/dev/null 2>&1
  19. if [ "$?" -ne "0" ]; then
  20. >&2 echo "not a git directory"
  21. exit 1
  22. fi
  23.  
  24. ORIGIN="${ORIGIN:-origin}"
  25. MASTER="${MASTER:-master}"
  26.  
  27. CURRENT=`git rev-parse --abbrev-ref HEAD 2>/dev/null`
  28.  
  29. if [ -z "$CURRENT" ]; then
  30. >&2 echo "unable to get current branch"
  31. exit 1
  32. fi
  33.  
  34. if [ "$CURRENT" != "$MASTER" ]; then
  35. >&2 echo "please checkout $MASTER branch before proceeding"
  36. exit 1
  37. fi
  38.  
  39. git pull --ff-only >/dev/null 2>&1
  40. if [ "$?" -ne "0" ]; then
  41. >&2 echo "failed to fast-forward pull"
  42. exit 1
  43. fi
  44.  
  45. # remove local refs to remote branches that no longer exist at the origin
  46. git fetch $ORIGIN -p
  47. if [ "$?" -ne "0" ]; then
  48. >&2 echo "failed to fetch $ORIGIN"
  49. exit 1
  50. fi
  51.  
  52. # delete local branches that have been merged fully into master
  53. git branch --merged $ORIGIN/$MASTER | \
  54. egrep -v "(^\*|${MASTER})" | \
  55. xargs -r git branch -d
  56.  
  57. # garbage collect
  58. git gc >/dev/null 2>&1
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement