Forum OpenACS Q&A: Re: OpenACS Current: Site-Map doesn't work

Collapse
Posted by Jeff Davis on
the best way is to merge from the 4.6 branch to the head by tagging the 4.6 branch (like oacs-4-6-premerge-N) taking a cvs checkout of head and doing a
cvs update -j something -j oacs-4-6-premerge-N
to merge the changes from the 4.6 branch (the "something" is the previous premerge tag).

once thats done, resolve all the conflicts (cvs -n update | grep ^C to find them), do cvs diff's and make sure all changes are sensible, do some redimentary testing, and start committing.

Once the committing is done, add a tag to the head like head-4-6-3-post-merge.

Anyway, we are going to do this probably starting first thing next week, but if you want to help out, the best thing would be to try and track down things that were already merged by hand so we can roll forward the "something" tag on those files to avoid having to resolve conflicts twice on those files (things that spring to mind are the documentation, and some of the stuff Lars and Peter backported to 4.6 from HEAD like the apm work and bug tracker).

Collapse
Posted by Oscar Bonilla on
Wouldn't doing what you said create unnecessary branches in the repository? What would be wrong with

cvs checkout -j openacs-4-6 acs-core

???

Thanks,

-Oscar

Collapse
Posted by Jeff Davis on
No, the tags are symbolic tags, not branch tags, and you update -j not checkout -j to merge from a different version.
Collapse
Posted by Oscar Bonilla on
Duh, of course it's a symbolic tag. I swear I saw a -b on what you sent ;)

However, I've been reading the CVS manual (page 47) and it says:

------
Consider this revision tree:
+-----+    +-----+    +-----+      +-----+
!  1.1  !----!  1.2  !----!  1.3  !----!  1.4  ! <- The main trunk
+-----+    +-----+    +-----+      +-----+
                          !
                          !
                          !      +---------+      +---------+
Branch R1fix ->  +---!  1.2.2.1    !----!    1.2.2.2  !
                                  +---------+      +---------+
The branch 1.2.2 has been given the tag (symbolic name) ?R1fix?. The following example assumes that the module ?mod? contains only one file, ?m.c?.

$ cvs checkout mod # Retrieve the latest revision, 1.4
$ cvs update -j R1fix m.c # Merge all changes made on the branch,
# i.e. the changes between revision 1.2
# and 1.2.2.2, into your working copy
# of the file.
$ cvs commit -m "Included R1fix" # Create revision 1.5.

A conflict can result from a merge operation. If that happens, you should resolve it before committing the new revision. See Section 10.3 [Conflicts example], page 65. If your source files contain keywords (see Chapter 12 [Keyword substitution], page 75), you might be getting more conflicts than strictly necessary. See Section 5.10 [Merging and keywords], page 47, for information on how to avoid this.

The checkout command also supports the ?-j branchname? flag. The same efect as above could be achieved with this:

$ cvs checkout -j R1fix mod
$ cvs commit -m "Included R1fix"

It should be noted that update -j tagname will also work but may not produce the desired result.
------

I understand that

cvs checkout -j openacs-4-6 acs-core

would be the same as

cvs checkout acs-core
cvs update -j openacs-4-6

I don't see why I need to create the sybolic tags first...

Thanks,

-Oscar