#153 SPIKE: Describe test package repo: commit history, contents
Closed: Fixed 3 years ago by nphilipp. Opened 3 years ago by nphilipp.

For #151, we need a way to describe the contents of a package repository tracked in git. It has to be able to define the commit history, i.e. what is/are the parent(s) of a commit, what's its log messages and what was changed—not generically, just a very limited set of things, e.g.:

  • changes to the spec file:
    • version bumped to 1.1
  • changes to the changelog file
    • replace it completely with some text
    • remove it?

As a starting point, here's a strawman in YAML which covers some basics:

---
- label: root commit
  log: initial import
  version: 1
  release: 2

- label: convert to rpmautospec
  log: convert to rpmautospec
  release: "%autorelease"

- label: bump version
  log: update to 1.1
  version: 1.1

# branch 1

- label: tip of branch 1
  log: freeze changelog
  changelog-contents: >-
    This is the changelog!

# branch 2

- label: tip of branch 2
  log: patch something
  parents:
    - convert to rpmautospec

# merged history

- log: merge branches
  parents:
    - tip of branch 1
    - tip of branch 2

NB: The label field is just a unique reference to each commit, to allow describing ancestry between commits.


Metadata Update from @nphilipp:
- Issue marked as blocking: #151
- Issue tagged with: F35 Change, SPIKE

3 years ago

Kinda almost minimum spec file for a template:

Summary: Boo
Name: foo
Version: 1
Release: 1
License: CC0

%description
Hello

%prep

%build

%install

%files

%changelog

Maybe Epoch too since we have the logic in our code.

Metadata Update from @nphilipp:
- Issue assigned to dkirwan

3 years ago

Maybe Epoch too since we have the logic in our code.

Yeah we should be able to set the epoch, but the field shouldn't always be in the spec file.

Example yaml

- label: root commit
  log: initial import
  version: 1
  release: 1
  parents:
    - root
  changelog: >-
    First commit in the repo

- label: convert to rpmautospec
  log: convert to rpmautospec
  release: "%autorelease"
  version: 1
  changelog: >-
    Converted specfile to begin using rpmautospec

# branch 1
- label: tip of branch 1
  log: freeze changelog
  version: 1
  release: "%autorelease"
  changelog: >-
    Tip of branch 1
  parents:
    - convert to rpmautospec

- label: commit on branch 1
  log: I expect this to handle branching
  version: 1
  release: "%autorelease"
  changelog: >-
    This is a commit on branch 1

# branch 2
- label: tip of branch 2
  log: patch something
  version: 1
  release: "%autorelease"
  parents:
    - convert to rpmautospec
  changelog: >-
    Tip of branch 2

# merged history
- label: merge branches
  log: Something about something
  version: 2
  release: "%autorelease"
  parents:
    - tip of branch 1
    - tip of branch 2
  changelog: >-
    Merge the branches 1 and 2

- label: new version released
  log: Version 2
  version: 2
  release: "%autorelease"
  changelog: >-
    New version released

- label: version 2 patch
  log: Patch to version 2 feature
  version: 2
  release: "%autorelease"
  changelog: >-
    Patch to version 2
- label: Add epoch field
  log: Override version with Epoch field
  epoch: "Epoch: 3"
  version: 2
  release: "%autorelease"
  changelog: >-
    Override version with Epoch field 3

Sample spec template:

Summary: Boo
Name: foo
{epoch}
Version: {version}
Release: {release}
License: CC0

%description
Hello

%prep

%build

%install

%files

%changelog
{changelog}

This looks done to me, closing.

Metadata Update from @nphilipp:
- Issue close_status updated to: Fixed
- Issue status updated to: Closed (was: Open)

3 years ago

Log in to comment on this ticket.

Metadata
Boards 1
Delivery Board Status: Done