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 
- 
Pull the latest changes: pushd releng && git pull --rebase && popd 
- 
Clone the <foo>package locally:fedpkg clone <foo> 
- 
Checkout the <branch> branch: cd clone && git checkout <branch> 
- 
Run the script: python ../releng/scripts_new/packages/distgit/distgit_branch_unused.py <branch> (If needed, see the --helpof the script for more information)
- 
If the script returns that the branch is safe to delete: - 
Go to pkgs01 as root ssh pkgs01.rdu3.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-refsfile, in that case:grep <branch> packed-refs > heads_<branch> Then remove the line from packed-refsfile
 
- 
- 
On your local clone of <foo>, 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> 
Want to help? Learn how to contribute to Fedora Docs ›