Difference between revisions of "Pcsvnrelease"

From ProgClub
Jump to: navigation, search
(Love Calculator)
 
(One intermediate revision by the same user not shown)
Line 1: Line 1:
Building a Rat Rod - The Easy Way
+
Pcsvnrelease is the ProgClub project release script. That's the software that helps us manage versioned releases of our projects as specified on the [[versions]] page. For other projects see [[projects]].
+
 
So your a beginner at this specific car building thing and the first car you decide to build will be a Rat Rod. This is a good choice while you can "cheat" a bit more than doing a 100% restoration. Below's a couple ideas to obtain started.  
+
= Status =
+
 
Depending on just how much your really know about cars or Rat Rods, while a beginner you really need to discover a good "roller." A roller is truly a complete body that offers suspension, but doesn'big t have to have a great engine or trans. If you feel a bit much more advanced, than you can begin building your vehicle from a frame upwards. Mixing and matching parts through different models and manufacturers is the Rat Rod way.  
+
Under way. Not released yet, there's stuff [[#TODO|TODO]].
+
 
Awesome will be the way to go. Rat Rod designs are very simplistic, but the to make it awesome is truly by combining the right amount of parts with the right car. Installing a fuel injected engine coming from your Toyota Camry is not the way to develop a Rat Rod. Installing a modern Corvette rear suspension will be also not how to go. What we are wanting to express below will be keep it earlier and simple.  
+
= Administration =
+
 
Most rodders that have been doing it for quite a few years understand what parts help each other. But when you are starting up out, use parts within a ten year span. Retain a 30'ersus vehicle using 30'utes or even some 40's parts, 40'utes with 50's and so on.  
+
== Contributors ==
   
+
 
Front Finish: Preserve your grille shells but lose the front fenders and hood on your Rat Rod. Your want to determine your engine like it's the heart of your respective Rat Rod. It's desirable to find out a Flathead Ford or a Buick Nailhead motor dressed upward with three carbs or old funky designed intake manifolds. There's nothing wrong with a good aged Chevy or ford modest block. You can dress upwards a 350 Chevy coming from the 90'utes to appear while if it's coming from the 40'ersus. Many parts are available, and at very reasonable prices. Many 70'ersus through 90's car or truck have them and they also are a dime a dozen. Easy motor/trans swaps, and many people sell mounts and mount kits for them.
+
Members who have contributed to this project. Newest on top.
+
 
So the thing you need to do today to buy your Rat Rod Project started will be come across yourself the car of the goals. Don'capital t hurry into it as if you appear hard enough, you will discover a deal. A harmful financial climate means a good price for your brand new Rat Rod Project.  
+
* [[User:John|John]]
   
+
 
http://www.aigajacksonville.org/member/309231/
+
All contributors have agreed to the terms of the [[ProgClub:Copyrights#ProgClub_projects|Contributor License Agreement]]. This excludes any upstream contributors who tend to have different administrative frameworks.
 +
 
 +
Upstream contributors:
 +
 
 +
* TBA
 +
 
 +
== Copyright ==
 +
 
 +
Copyright 2012, [[#Contributors|Contributors]].
 +
 
 +
== License ==
 +
 
 +
Licensed under the [[New BSD license|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 ==
 +
 
 +
=== Standard /etc scripts ===
 +
 
 +
Within a branch there might be an /etc folder, and in /etc might be a 'test' or 'set-version' script as standard.
 +
 
 +
==== /etc/test ====
 +
 
 +
The 'test' script, if it exists, will be executed by pcsvnrelease before beginning a release to confirm that the software is fit for release. If the 'test' script exits with a non-zero error level the release is aborted because crucial tests have failed.
 +
 
 +
==== /etc/set-version ====
 +
 
 +
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.
 +
 
 +
=== SUBPROJECTS file ===
 +
 
 +
The SUBPROJECTS file lives in the branch root and lists the projects that are managed as subprojects and released in conjunction with the main project. The format of the SUBPROJECTS file is:
 +
 
 +
externals_path subproject_path subproject_url subproject_branch
 +
 
 +
For example, the 'slib' project might be included as a subproject with an entry in the SUBPROJECTS file like this:
 +
 
 +
lib/slib slib svn://www.progclub.org/svn/pcrepo/slib /trunk
 +
 
 +
Or if you wanted to use the latest maintenance release of version 1 of slib and ignore newer major versions:
 +
 
 +
lib/slib slib svn://www.progclub.org/svn/pcrepo/slib /branches/version/1
 +
 
 +
Note: when subprojects are released they are always minor releases even if the main project is having a major release.
 +
 
 +
Any svn:externals definitions that are defined on a project's subfolders that aren't listed in the SUBPROJECTS file don't get treated as subprojects and released but they do get set to a specific revision (with a revision and peg revision both set to the revision the repository is at at the time of the release). So if you didn't want to manage slib as a subproject but rather wanted to use a specific release of slib you could just define the svn:externals for slib to point at:
 +
 
 +
  svn://www.progclub.org/svn/pcrepo/slib/tags/version/1/4
 +
 
 +
Or:
 +
 
 +
svn://www.progclub.org/svn/pcrepo/slib/tags/release/2012/03/15/001
 +
 
 +
Or if you just wanted to use the latest release (but not manage slib as a subproject) you could specify an svn:externals of:
 +
 
 +
svn://www.progclub.org/svn/pcrepo/slib/tags/latest
 +
 
 +
=== 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
 +
 
 +
== 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:
 +
 
 +
* Implement minor releases
 +
* Implement major releases
 +
 
 +
== Done ==
 +
 
 +
Stuff that's done. Latest stuff on top.
 +
 
 +
* [[User:John|JE]] 2012-03-15: created project in svn with prototype release script and test repos.
 +
* [[User:John|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:
 +
 
 +
* svn://www.progclub.org/svn/pctestrepo-a
 +
* svn://www.progclub.org/svn/pctestrepo-b
 +
 
 +
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 svn://www.progclub.org/svn/pctestrepo-a/testproj-a trunk
 +
$ pcsvnrelease major svn://www.progclub.org/svn/pctestrepo-a/testproj-a trunk
 +
  $ pcsvnrelease minor svn://www.progclub.org/svn/pctestrepo-a/testproj-a branches/version/1
 +
$ pcsvnrelease major svn://www.progclub.org/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'.

Latest revision as of 16:17, 11 December 2017

Pcsvnrelease is the ProgClub project release script. That's the software that helps us manage versioned releases of our projects as specified on the versions page. 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

Standard /etc scripts

Within a branch there might be an /etc folder, and in /etc might be a 'test' or 'set-version' script as standard.

/etc/test

The 'test' script, if it exists, will be executed by pcsvnrelease before beginning a release to confirm that the software is fit for release. If the 'test' script exits with a non-zero error level the release is aborted because crucial tests have failed.

/etc/set-version

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.

SUBPROJECTS file

The SUBPROJECTS file lives in the branch root and lists the projects that are managed as subprojects and released in conjunction with the main project. The format of the SUBPROJECTS file is:

externals_path subproject_path subproject_url subproject_branch

For example, the 'slib' project might be included as a subproject with an entry in the SUBPROJECTS file like this:

lib/slib slib svn://www.progclub.org/svn/pcrepo/slib /trunk

Or if you wanted to use the latest maintenance release of version 1 of slib and ignore newer major versions:

lib/slib slib svn://www.progclub.org/svn/pcrepo/slib /branches/version/1

Note: when subprojects are released they are always minor releases even if the main project is having a major release.

Any svn:externals definitions that are defined on a project's subfolders that aren't listed in the SUBPROJECTS file don't get treated as subprojects and released but they do get set to a specific revision (with a revision and peg revision both set to the revision the repository is at at the time of the release). So if you didn't want to manage slib as a subproject but rather wanted to use a specific release of slib you could just define the svn:externals for slib to point at:

svn://www.progclub.org/svn/pcrepo/slib/tags/version/1/4

Or:

svn://www.progclub.org/svn/pcrepo/slib/tags/release/2012/03/15/001

Or if you just wanted to use the latest release (but not manage slib as a subproject) you could specify an svn:externals of:

svn://www.progclub.org/svn/pcrepo/slib/tags/latest

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

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:

  • Implement minor releases
  • Implement major releases

Done

Stuff that's done. Latest stuff on top.

  • JE 2012-03-15: created project in svn with prototype release script and test repos.
  • 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 svn://www.progclub.org/svn/pctestrepo-a/testproj-a trunk
$ pcsvnrelease major svn://www.progclub.org/svn/pctestrepo-a/testproj-a trunk
$ pcsvnrelease minor svn://www.progclub.org/svn/pctestrepo-a/testproj-a branches/version/1
$ pcsvnrelease major svn://www.progclub.org/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'.