This very-hacky script finds Red Hat Bugzilla tickets that are fixed from one Git tag to the next.
We use Red Hat Bugzilla's "External Trackers" feature to tie GitHub Pull Requests to specific RHBZ bugs.
For a fast-moving package that involves weekly or daily rebases, it can be tricky to understand exactly which BZs are fixed in each new upstream version.
When a developer wants to rebase a package from one Git tag to another, this tool provides a report about which RHBZs would be fixed during the rebase.
For example: let's say we're rebasing the ceph-ansible package from the upstream "v3.0.3" Git tag to "v3.0.4".
Clone ceph-ansible from GitHub:
$ cd ~/dev/
$ git clone https://github.com/ceph/ceph-ansible
$ cd ceph-ansible
(If you've already cloned ceph-ansible, just git pull
to fetch all the latest updates and tags.)
Edit the find-bzs.py
script so that the ceph-ansible git tags are reflected in the "OLD" and "NEW" variables:
$ vim ../find-bzs/find-bzs.py
Now run the find-bzs.py
script in your up-to-date clone directory:
$ ../find-bzs/find-bzs.py
================
* Mon Nov 13 2017 Ken Dreyer <[email protected]> - 3.0.11-1
- Update to v3.0.11 (rhbz#1512538, rhbz#1511811, rhbz#1510906,
rhbz#1509230)
Command for RHEL dist-git:
================
rdopkg new-version 3.0.11 -B "rhbz#1512538 rhbz#1511811 rhbz#1510906 rhbz#1509230"
================
Command for Ubuntu dist-git:
rhcephpkg new-version -B "rhbz#1512538 rhbz#1511811 rhbz#1510906 rhbz#1509230"
================
Query for browsing:
https://bugzilla.redhat.com/buglist.cgi?bug_id=1512538,1511811,1510906,1509230
================
When RHEL and Ubuntu dist-git are committed:
bugzilla modify -s MODIFIED -F "RHEL: ceph-ansible-3.0.11-1.el7cp Ubuntu: ceph-ansible_3.0.11-2redhat1" 1512538 1511811 1510906 1509230
The output gives you a %changelog
entry to paste into the .spec file, and a link for browsing the bugs to visually inspect them. The python-bugzilla command will change the bug to MODIFIED and populate Fixed In Version.
Note: you must provide your GitHub Personal Access Token as a single line in ~/.githubtoken
so find-bzs can authenticate to the search API.
$ cat ~/.githubtoken
aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d
The token does not need any special permissions. find-bzs.py
uses this token to query GitHub's search API at a faster rate than GitHub permits for anonymous clients.
find-bzs.py
must operate in a Git clone of ceph-ansible. It will first check the origin
remote to find the GitHub project (in order to query Bugzilla). If origin
does not look like GitHub, it will fall back to checking the upstream
remote.
This means that if you've added GitHub as an upstream
remote to a dist-git repository (like for rdopkg), you can use find-bzs.py
in that dist-git repository. Just remember to git fetch upstream
to fetch all the latest Git tags from GitHub.