Radish alpha
h
rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5
Radicle Heartwood Protocol & Stack
Radicle
Git
heartwood scripts delete-remote-branches.sh
#!/bin/sh
# Delete all remote branches that don't have a local copy.

remote="rad"
remote_branches="$(git for-each-ref --format='%(refname:short)' refs/remotes/rad)"

# Check that a branch isn't a remote tracking branch.
is_remote_branch() {
  for remote_branch in $remote_branches; do
    # Remove the "rad/" prefix
    if [ "$1" = "${remote_branch#rad/}" ]; then
      return 0
    fi
  done
  return 1
}

# Iterate over all remote branches.
for branch in $(git branch -r --format "%(refname:short)"); do
  # Extract the branch name without the "$remote/" prefix.
  branch=${branch#"$remote/"}
  # Never delete the master branch.
  if [ "$branch" = "master" ]; then
    continue
  fi

  # Check if the branch doesn't exist locally.
  if ! git rev-parse --quiet --verify "$branch" >/dev/null; then
    if ! is_remote_branch "$branch"; then
      git push -o "no-sync" $remote --delete "$branch"
      echo "Deleted '$branch'"
    else
      echo "Skipping remote branch '$branch'"
    fi
  fi
done

rad sync --announce