Hi Johannes,

2009/8/29 Johannes Schlüter <johan...@php.net>:

[snip]

> I'm not toooo used to subversion therefore I'd like some comments about
> this procedure:
>
> 1) Monday evening branch of a release branch owned by me
>   $ svn cp branches/PHP_5_3 branches/php_5_3_1
>   Question A: using php as in our tags or PHP as in our branches?

I would suggest keeping "PHP" for a branch because it will be used as
is, it can be renamed with "php" while doing the svn copy|move to
tags. More details after.

>   Question B: can svn merge be used to get changes from PHP_5_3 or is a
>               manual merge better?

The merge tracking is an interesting option, I would greatly recommend
using it. You can easily use the "-c" option to merge a specific
revision number.

> 2) Tuesday: Change the version
>   $ vi branches/php_5_3_1/main/php_version.h etc.
> 3) making the branch a tag
>   $ svn mv branches/php_5_3_1 tags/php_5_3_1

I would suggest a copy rather than a move because you may have to
create different tags (RC1, RC2,...) from this branch.

$ svn copy branches/PHP_5_3_1 tags/php_5_3_1RC1

> 4) merge the tag into the PHP_5_3 branch
>   $ cd branches/PHP_5_3 && svn merge ../tags/php_5_3_1
>   The idea would be that the release appears in the
>   branch's history and nothing is being lost

There is no such merge needed, svn keeps track of copies and merges.
>From svn clients, it is perfectly possible to generate a graph with
copies (tags) made from that branch.

>   Question: Does that make any sense?

IMHO, No.

> 5) Change the version to RC2-dev
>   $ vi branches/PHP_5_3/main/php_version.h etc.

This should be made in branches/PHP_5_3_1, before the tag is created.

> Feedback on this procedure and svn usage welcome. If this doesn't work
> out the procedure can be changed for the next release and I guess a RC
> is a better test than a "proper" release.
>
> johannes

To summarize, I would recommend the following steps:

0° Creating the 5.3.1 branch

  $ svn cp branches/PHP_5_3 branches/PHP_5_3_1
  $ vi branches/PHP_5_3_1/main/php_version.h etc. // Filling next tag
information, e.g. 5.3.1RC1
  $ svn ci

1° Creating the 5.3.1RC(\d) tag

  $ svn copy branches/PHP_5_3_1 tags/php_5_3_1RC1

2° Lifetime of PHP_5_3_1:

  a) Patching PHP_5_3_1
  $ svn merge -c xxxxx branches/PHP_5_3 branches/PHP_5_3_1

  b) Fixing next version info
  $ vi branches/PHP_5_3_1/main/php_version.h etc. // Filling next tag
information, e.g. 5.3.1RC2, 5.3.1...

3° Goto 1° unless tagging the final release

4° Tagging final release:

  $ svn copy branches/PHP_5_3_1 tags/php_5_3_1

(optionally, branches/PHP_5_3_1 could be removed, but shouldn't be
"moved" as it would make a weird graph for merges/copies tracking)

Notes:
Developers commit should be made to branches/PHP_5_3 *only*
Release manager(s) only commit "svn merge" operations to branches/PHP_5_3_1
Tags are strictly read-only copies created with "php"
Branches are always created using "PHP"

Does this sounds good for you?

-- 
Patrick Allaert
---
http://code.google.com/p/peclapm/ - Alternative PHP Monitor

--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to