cocoon-docs mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
Subject [Cocoon Wiki] New: CocoonVendorBranch
Date Mon, 17 Jan 2005 14:19:03 GMT
   Date: 2005-01-17T06:19:03
   Editor: MarkLundquist
   Wiki: Cocoon Wiki
   Page: CocoonVendorBranch


New Page:

= Abstract =
A variation of the Subversion "[ vendor branch]"
strategy for maintaining Cocoon releases under local version control.
= Motivation =
 1. Control of local modifications (patches, additions to lib/optional and lib/local)
 1. Being able to easily see what changed from release to release
 1. Import into the repository only what we need for production builds (no samples or docs)
= Caveat emptor :-) =
I've set this up for myself, imported the first drop (Cocoon 2.1.6), and controlled some local
mods.  The phase where I merge in the next drop has not been tested yet.  When Cocoon 2.1.7
hits, I'll do it and fix any errors in this note.
= Overview =
This is a variation on the Subversion "[ vendor
branch]" strategy.  It differs from the technique outlined in the book, in that we don't have
a single main branch into which we merge vendor drops; we want to preserve the "awareness"
of each project on the version of Cocoon that it requires, so we have a main branch for each
Cocoon release that contains our local mods.
= Details =
 1. {{{mkdir /usr/local/Cocoon/drop}}}
 1. {{{cd /usr/local/Cocoon/drop}}}
 1. download and explode the Cocoon release tarball for the current release into this directory.
 1. Prune the source tree!  Delete the following files and directories in {{{src/}}} (note,
this is right for 2.1.6, check it for each version; also, YMMV e.g. you might need to keep
something in {{{deprecated/}}}.  Also, if you want to delete sources for blocks you know you
will never, ever, need, you can do that here as well):
  * {{{documentation/}}}
  * {{{samples/}}}
  * {{{resources/javadoc/}}}
  * in {{{webapp/}}} everything ''except'' {{{WEB-INF/}}} and {{{sitemap.xmap}}}
  * {{{blocks/*/samples/}}}
  * {{{deprecated/}}}

 1. Import the drop.

  * For the initial drop (e.g., 2.1.6):
setenv cocoon_svn file:///var/svn/repos/cocoon    # (example
setenv cocoon_new_release cocoon-2.1.6    # (example)

cd /usr/local/Cocoon/drop

svn import -m "Initial drop (cocoon-2.1.6)" $cocoon_svn/dist/$cocoon_new_release

  * For subsequent drops:
setenv cocoon_svn file:///var/svn/repos/cocoon    # (example)
setenv cocoon_new_release cocoon-2.1.7    # (example)
setenv cocoon_prev_release cocoon-2.1.6    # (example)

cd /usr/local/Cocoon/drop -t $cocoon-new-release \
   $cocoon_svn/dist \
   current \

 1. Create the new main branch and check it out:
svn copy -m "Create main branch" \
    $cocoon_svn/dist/$cocoon-new-release \

cd /usr/local/Cocoon/builds    # (create this if it's the first time)
svn checkout $cocoon_svn/main/$cocoon-new-release
cd $cocoon-new-release

 1. Merge in changes from the previous main branch (only if this isn't the initial drop! :-)
svn merge 

 1. Resolve any conflicts and commmit;
 1. Build Cocoon
 1. Delete /usr/local/Cocoon/drop

= Reader comments =
Add 'em here, or email me --[wiki:MarkLundquist ML]

View raw message