Forum OpenACS Development: How should OpenACS cvs branches be handled?

How should OpenACS cvs branches be handled, or how are they being handled right now? Here's a specific little example that sparks this more general question:

In the soon-to-be-released OpenACS 4.6 (oacs-4-6 in cvs), the site-wide-search package is broken. The reason is trivial - at some point in the past, someone made a wrong-headed change to export_entire_form_as_url_vars, making it separate URL query parameters with "&" rather than plain old correct "&".

Easy to fix. And turns out, Lars already fixed it a month ago:

$ cvs log acs-tcl/tcl/utilities-procs.tcl 
head: 1.22 
revision 1.20 
date: 2002/11/12 18:09:28;  author: lars;  state: Exp;  lines: +3 -3 
Replaced & with & in export_entire_form_as_url_vars. The & 
expansion really should be done with ad_quotehtml by the templating 
system before spitting out the HTML, not here. It causes other 
trouble, e.g. double-escaping of & as in &, which causes the 
URL to not work correctly. 

But, that fix is on the head, not on the oacs-4-6 branch - and it looks like it should be. So, this example is as easy as it gets, a one line diff. But what's the right way to get the change onto the 4.6 branch? Manually commit the same change? (Will that cause bogus conflicts when merging?) Merge just this one silly little thing from the head to the branch?

Posted by Jeff Davis on
In general the right way is to merge the change from the HEAD via cvs update -j 1.19 -j 1.20 utilities-procs.tcl although given it's a one line change I would just do it by hand. I was the one who made the wrong-headed change so I will do it, although in my defense I made the change since I was trying to get more pages to validate and given the sad state of html quoting in the toolkit this was creating lots of pages that did not validate. I did not mean to commit it.

Our intent was to have bug fixes and such go in on 4.6 and be merged forward to the HEAD although some things got fixed on the head. I tried to make sure anything on the HEAD got merged to 4.6 but obviously missed this one.

Posted by Roberto Mello on

While we're in the topic, what's the proper way to merge 4.6 into HEAD for development purposes?



P.S: Maybe this should be added to the cvs instructions linked from

Posted by Jeff Davis on
What I do for a full merge it to check out a clean copy of the HEAD (with -kk) and then do
cvs update -joacs-4-6 -kk
in the top directory, then do a
cvs -n update > log
to get modified or conflicting files, resolve the conflicts in bulk with
emacs `egrep ^C log | awk '{print $2}'`
then look over a cvs diff to try to make sure the changes make sense, then commit the lot. Oh, and probably tag the HEAD as something like jcd-premerge. It makes sense to tag the 4.6 branch as well before the update -j, although last time I neglected to do so.

If its just a few files or a package I would not jump through so many hoops and probably just do it with an existing checkout, taking care not to pull in any other changes accidentally.

Posted by Kjell Wooding on
Of course, in Jeff's defense, "plain old &" in URLs is not valid in XHTML, though I could be one of the sorry few who really care about XHTML compliance.

Good intent. Bad effect.