This is a tool that works in a similar way to rdopkg patch
. It uses
rdopkg's APIs to tar up all the changes in the Git -patches branch into a
"-changes.tar.gz" tarball and adds the tarball to the RPM packaging.
I use this to combine all our downstream changes into a single file suitable for dist-git.
Comparing rdopkg patch
with this tar-changes
script:
"rdopkg patch" | this "tar-changes" script |
---|---|
Transforms a downstream -patches branch into output suitable for dist-git | |
Operates in conjuction with an unchanging upstream tarball | |
Applies changes during the %prep stage of rpmbuild | |
Generates .patch files | Generates a tarball of changed files |
Limited by RHEL 7's static
buffer limit for %prep in
rpmbuild. |
rpmbuild's %prep script does
not grow with the number of
patches. |
Ability to delete files entirely from the tree downstream. | Unable to delete files (only add or edit existing files). |
Unable to edit binary files | Able to apply edits to binary files |
Does not require the %commit
macro in your spec file in order
to generate the %changelog . |
Requires the %commit macro
in your spec file in order to
generate the %changelog . |
Slightly more visibility into changes when browsing dist-git, since you can see the individual .patch files changing. | Slightly less visibility into changes when browsing dist-git, since you only see a tarball and Git sha1 changing. |
To reconstruct a -patches branch
commit-by-commit, without the ref
or sha1, use git am |
No simple way to reconstruct a
-patches branch if a ref is
dangling/lost. More important
to tag every -patches branch
change with
rdopkg tag-patches . |
We build RH Ceph Storage in ceph-*
Git branches.
dist-git branches follow the form <product-name>-<product-version>-<OS>-<OS version>
.
For RH Ceph Storage 5, we support both RHEL 8 and RHEL 9, so we have the following branches:
ceph-5.0-rhel-8
: The first release of the RHCEPH 5 product. We did not support RHEL 9 yet because it was so early.ceph-5.1-rhel-8
andceph-5.1-rhel-9
: The second release of the RHCEPH 5 product. We started building Ceph for RHEL 9.ceph-5.2-rhel-8
andceph-5.2-rhel-9
: The third release of the RHCEPH 5 product.
For patch management, we use rdopkg -style "-patches" branches that follow a similar convention. Note, we do not have separate "rhel-8" or "rhel-9" -patches branches, because the code should be identical on both OSes.
RH Ceph Storage 5:
ceph-5.0-rhel-patches
: RHCEPH 5.0 downstream code.ceph-5.1-rhel-patches
: RHCEPH 5.1 downstream code.ceph-5.2-rhel-patches
: RHCEPH 5.2 downstream code.ceph-5.3-rhel-patches
: RHCEPH 5.3 downstream code.