howtos/remove_branch_distgit.md
Mohan Boddu c9ad4a18ee Removing refs if they are part of packed-refs file
Signed-off-by: Mohan Boddu <mboddu@bhujji.com>
2020-09-08 15:36:28 -04:00

1.9 KiB

How to remove a git branch in a dist-git repository?

Historically we did not allow to remove git branches in dist-git repository, but FESCo recently approved their removal if and only if all the commits in the branch to be deleted can be reached from another branch. This is a requirement to ensure that if any of the commits were used in a build, we still have the commit accessible and thus we are able to reproduce the build if needed.

There is a script in the releng repository to use to check if a branch can safely be deleted.

So here are the steps to follow to remove the branch <branch> from the package <foo>.

  • Clone the releng repo if you do not already have it:
git clone https://pagure.io/releng.git
  • If you already have it, pull the latest changes:
pushd releng && git pull --rebase && popd
  • Clone the <foo> package locally:
fedpkg clone <foo>
  • Checkout the branch:
cd clone && git checkout <branch>
  • Run the script:
python ../releng/scripts/distgit-branch-unused.py <branch>

(If needed, see the --help of the script for more information)

If the script returns that the branch is safe to delete:

  • Go to pkgs01 as root
ssh pkgs01.iad2.fedoraproject.org
  • Go to the git repository:
cd /srv/git/repositories/<namespace>/<foo>.git
  • Move the head of the branch (this allows to recover it later if needed):
mv refs/heads/<branch> heads_<branch>
  • Sometimes the ref is in the packed-refs file, in that case:
grep <branch> packed-refs > heads_<branch>
Then remove the line from `packed-refs` file
  • On your local clone of , check that the branch was deleted upstream:
git fetch -p

This should show something like:

$ git fetch -p
From ssh://pkgs.fedoraproject.org/<namespace>/<foo>
 - [deleted]         (none)     -> origin/<branch>