We want to ensure it's easy to understand what was changed in package in Hyperscale, if anything. To this end:

  • when branching a package from Fedora as-is, keep the EVR unchanged
  • whenever a change is made (regardless of where the package originally comes from), append .N to the release, where N is a monotonically increasing integer that is bumped by one for each subsequent change
  • when importing changes from the upstream package in Hyperscale, if EV changed, reset .N to .1


  • we import foo-1.0-2.fc36 from Fedora unchanged, producing foo-1.0-2.hs.el8
  • we add a patch to it, producing foo-1.0-2.1.hs.el8
  • we make another change, producing foo-1.0-2.2.hs.el8
  • we import the new foo-1.1-1.fc36 release from Fedora and add back our patch, producing foo-1.1-1.1.hs.el8

Note that some packages (such as kpatch or openssh) have multiple indipendently-versioned subpackages within the same source RPM. In this case, it's not usually possible to reset .N to .1, as that would lead to duplicate versions and conflicts down the road. To prevent this, it is recommended to continue monotonically increasing .N regardless of EV.