infra-docs-fpo/modules/howtos/pages/remove_branch_distgit.adoc
Nils Philippsen b4afb2f945 DC move: iad => rdu3, 10.3. => 10.16.
And remove some obsolete things.

Signed-off-by: Nils Philippsen <nils@redhat.com>
2025-07-04 16:32:42 +02:00

96 lines
1.9 KiB
Text

= 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/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.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-refs` file, in that case:
----
grep <branch> packed-refs > heads_<branch>
----
Then remove the line from `packed-refs` file
--
. 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>
----
--