The upstream cockpit spec file is rather complex and ugly. It does
contain information we need though, such as the bundled node
modules. Therefore the package reuses the upstream spec file and
applies openSUSE specifics that upstream doesn't accept on top. For
that purpose a git repo tracks the spec file changes:
https://github.com/lnussel/cockpit
There' an opensuse-$VERSION branch for each release
For simple fixes it's fine to just submit the spec file by OBS
means, I'll retrofit in git. Don't worry about that.
For version updates the git workflow really is needed to maintain
mental health though.
The following workflow is used to update the package to a newer
version:
- create a branch for the new version based on the old one:
git checkout -b opensuse-$NEW_VERSION opensuse-$OLD_VERSION
- use interactive rebase to amend the commits marked as EDIT THIS:
git rebase -i $NEW_VERSION
* for the very fist commit download the new tarball and extract
the spec file from it. Copy the spec file over
tools/cockpit.spec. That is basically what changed between the
versions wrt spec file.
* the second one adjust the spec file to have $NEW_VERSION. For
whatever reason the upstream spec file alwas has version 0.
* the rest of the changes should just apply.
- copy the spec file back into the OBS checkout and continue with
regular tasks related to updating packages.
- If any further spec file changes were needed, copy the spec back
into the git tree and commit there. Amend and reorder as needed.
- When done, push the git repo.
Sending fixes upstream:
if you have any changes that should go upstream, create a new, clean
branch and cherry pick *one* commit into it. Upstream wants pull
requests with only one commit
NOTE: ONLY the .spec file should be in the git.
IDEA: maybe other things should be removed from the git tree then?