Difference between revisions of "Pcsvnrelease"

From ProgClub
Jump to: navigation, search
(Creating project page with initial spec and doco.)
 
(→‎Functional specification: Adding info about the set-version script.)
Line 70: Line 70:
  
 
  $ pcsvnrelease major svn://www.progclub.org/svn/pcrepo/pcsvnrelease /branches/version/1
 
  $ pcsvnrelease major svn://www.progclub.org/svn/pcrepo/pcsvnrelease /branches/version/1
 +
 +
=== Standard /etc scripts ===
 +
 +
Within a branch there might be an /etc folder, and in /etc might be a 'set-version' script as standard. The 'set-version' script, if it exists, will be called by pcsvnrelease after the VERSION* and RELEASE files have been updated so that if the project version number needs to be copied in to other files before a release the 'set-version' script can take care of that if necessary.
  
 
== Technical specification ==
 
== Technical specification ==

Revision as of 08:55, 15 March 2012

Pcsvnrelease is the ProgClub project release script. That's the software that helps us manage versioned releases of our projects. For other projects see projects.

Status

Under way. Not released yet, there's stuff TODO.

Administration

Contributors

Members who have contributed to this project. Newest on top.

All contributors have agreed to the terms of the Contributor License Agreement. This excludes any upstream contributors who tend to have different administrative frameworks.

Upstream contributors:

  • TBA

Copyright

Copyright 2012, Contributors.

License

Licensed under the New BSD license.

Resources

Source code

The repository can be browsed online:

https://www.progclub.org/pcrepo/pcsvnrelease

The latest stable released version of the code is available from:

https://www.progclub.org/svn/pcrepo/pcsvnrelease/tags/latest

Or if you want the latest version for development purposes:

svn://www.progclub.org/svn/pcrepo/pcsvnrelease/trunk

Links

  • Versions, for information about the ProgClub version number system.

Specifications

Functional specification

Minor release

To do a typical minor release of the pcsvnrelease project:

$ pcsvnrelease minor svn://www.progclub.org/svn/pcrepo/pcsvnrelease /trunk

Or to release a specific branch (e.g. the version 1 branch) of the pcsvnrelease project:

$ pcsvnrelease minor svn://www.progclub.org/svn/pcrepo/pcsvnrelease /branches/version/1

Major release

To do a typical major release of the pcsvnrelease project:

$ pcsvnrelease major svn://www.progclub.org/svn/pcrepo/pcsvnrelease /trunk

Or to release a specific branch (e.g. the version 1 branch) of the pcsvnrelease project:

$ pcsvnrelease major svn://www.progclub.org/svn/pcrepo/pcsvnrelease /branches/version/1

Standard /etc scripts

Within a branch there might be an /etc folder, and in /etc might be a 'set-version' script as standard. The 'set-version' script, if it exists, will be called by pcsvnrelease after the VERSION* and RELEASE files have been updated so that if the project version number needs to be copied in to other files before a release the 'set-version' script can take care of that if necessary.

Technical specification

Pcsvnrelease is implemented as a BASH script that uses the svn command-line utility to manipulate the repository.

Tasks

TODO

Things to do, in rough order of priority:

  • Create the project in svn
  • Implement minor releases
  • Implement major releases

Done

Stuff that's done. Latest stuff on top.

  • JE 2012-03-15: created project page

Notes

Notes for implementers

If you are interested in incorporating this software into your project, here's what you need to know:

Just copy and paste your way to victory, this script is pretty much stand-alone.

Notes for developers

If you're looking to set up a development environment for this project here's what you need to know:

There are testing repositories at:

Those repositories have been setup with projects and dependencies so that you can test the release script on the 'testproj-a' project like this:

$ pcsvnrelease minor https://www.progclub.org/test/svn/pctestrepo-a/testproj-a /trunk
$ pcsvnrelease major https://www.progclub.org/test/svn/pctestrepo-a/testproj-a /trunk
$ pcsvnrelease minor https://www.progclub.org/test/svn/pctestrepo-a/testproj-a /branches/version/1
$ pcsvnrelease major https://www.progclub.org/test/svn/pctestrepo-a/testproj-a /branches/version/1

When you release 'testproj-a' from 'pctestrepo-a' it should trigger a sub-release of 'testproj-b' from 'pctestrepo-b' and 'testproj-c' from 'pctestrepo-a'.