Skip to content

Post patches as unpacked directories. #2

@schwern

Description

@schwern

I would suggest users post their patched distributions as unpacked directories. This allows us to use git to see what the changes are. With a bunch of tarballs, I don't know what changes were made, I have to trust the user's commit message.

This changes the procedure to...

  • Unpack, add and commit the unpatched distribution.
  • Patch & commit.
  • Push (or pull request).

Which is what you'd do anyway. The downside is there needs to be an extra step to turn this into an archive. The upside is that's really simple to automate.

Then there's the question of whether we patch per release or per distribution. Do we put all the patches to Foo-Bar into one directory? Or do we put patches to DCONWAY/Foo-Bar-1.20.tar.gz into DCONWAY/Foo-Bar-1.20/ and patches to WIBBLE/Foo-Bar-1.21.tar.gz into WIBBLE/Foo-Bar-1.21? Or do we put them all into Foo-Bar/? There are valid arguments to both sides, depends on the type of patch. Sometimes you're patching bugs in a specific release, sometimes you're patching bugs applicable down the line.

A third option would be have one directory for each distribution, Foo-Bar, with each CPAN release already checked in and tagged. The procedure then becomes...

  • git checkout Foo-Bar-1.20
  • Patch & commit in Foo-Bar/
  • git tag Foo-Bar-1.20.1
  • git push

But you need a working Gitpan to do that.

In the short term, I'd say patching per release is the thing to do.

  • Unpack DCONWAY/Foo-Bar-1.20.tar.gz into releases/DCONWAY/Foo-Bar-1.20/
  • Patch and commit your 1.20 specific patch.
  • Push.

This allows people to see what's patched, apply release specific patches, and more easily work on top of other's patches for a given release. Putting it into the releases directory means later on we can decide to have a dists directory where patching is done per distribution, not per release.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions