<HTML><BODY style="word-wrap: break-word; -khtml-nbsp-mode: space; -khtml-line-break: after-white-space; "><DIV><BR class="khtml-block-placeholder"></DIV><DIV>Since Thomas is talking about branches, I thought I would forward this advice I received off-list.  I think it makes a lot of sense:</DIV><BR><DIV><DIV>On Nov 2, 2006, at 9:00 AM, Jonas Bülow wrote:</DIV><BR class="Apple-interchange-newline"><BLOCKQUOTE type="cite"><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Hi,</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">I have some 8 years of using CVS for 40-50 modules. As I understand you understand it is of great importance to have a good policy working with branches in CVS.</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">My principles for branches (shared by many others) can be summarized as:</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">- set a ordinary tag on the branch point, name it BRANCHED_VX_Y</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">- create a branch on the branchtag, call if BRANCH_VX_Y</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Now, when you want to find what has happend on your branch you can diff from the branch point to the branch head by doing</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">cvs diff -r BRANCHED_VX_Y -r BRANCH_VX_Y</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Many people forget to create a tag where the branch is created which makes it hard to syncronize between branches.</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">VX_Y is a symbol for the prefix of the version, i.e V0_39. V0_39_1 is then a tag on the branch.</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Main development is performed on the main trunk. I.e with the above example there are no tags starting with V0_39 on the main trunk after the tag BRANCHED_V0_39. The first tag should be an increment, e.g V0_40 or higher.</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">CVS is not very user friendly doing merges between branches. The first merge beteen branches is simple, just use the BRANCHED_VX_Y-tag. merging the work on the branch BRANCH_VX_Y to HEAD (symbolic name for main trunk) by doing "cvs update -j BRANCHED_V0_39 -j V0_39_1" in HEAD.</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">If you do incremental merges from one branch to another you need to manually keep track of points of merge. A good habit is to tag these point as MERGED_FROM_xxx on the target and MERGED_TO_xxx on the source. The next time you to a merge you use one of these tags to refere to from<SPAN class="Apple-converted-space">  </SPAN>where the merge should be done.</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Hans-Christoph Steiner wrote:</DIV> <BLOCKQUOTE type="cite"><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">On Oct 30, 2006, at 3:24 PM, IOhannes m zmölnig wrote:</DIV> <BLOCKQUOTE type="cite"><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Hans-Christoph Steiner wrote:</DIV> <BLOCKQUOTE type="cite"><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Anyone have any good advice on making a branch in CVS? Or perhaps a good HOWTO?<SPAN class="Apple-converted-space">  </SPAN>Its time to make a branch for the Pd-0.39.2-extended release.</DIV> </BLOCKQUOTE><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">what is your exact problem?</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">how does "cvs tag -b extended_0_39_2" (within the cvsroot) not fit your needs?</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">btw, googling for "cvs tag"<SPAN class="Apple-converted-space">  </SPAN>returned <A href="http://www.psc.edu/~semke/cvs_branches.html">http://www.psc.edu/~semke/cvs_branches.html</A> as the second hit (the first one was a dead link)</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">there is no magic involved in tagging.</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">btw, i thought someone mentioned a "best practice CVS" document a while ago ;-)</DIV> </BLOCKQUOTE><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">I know tagging, that's dead simple.<SPAN class="Apple-converted-space">  </SPAN>I am talking about a branch.<SPAN class="Apple-converted-space">  </SPAN>I can google "cvs tag" or "cvs branch" myself too, but a personal recommendation is worth a lot more than a google search.</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">I am more interested in experience in managing changes in the branch.<SPAN class="Apple-converted-space">  </SPAN>Some changes should get folded in to MAIN, others are only for the branch.<SPAN class="Apple-converted-space">  </SPAN>I am sure there are things that you can do that will make your life easier when the time to merge comes.</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">.hc</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">------------------------------------------------------------------------</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">All information should be free.<SPAN class="Apple-converted-space">  </SPAN>- the hacker ethic</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">_______________________________________________</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">PD-dev mailing list</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><A href="mailto:PD-dev@iem.at">PD-dev@iem.at</A></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><A href="http://lists.puredata.info/listinfo/pd-dev">http://lists.puredata.info/listinfo/pd-dev</A><SPAN><DIV>&lt;jonas.bulow.vcf&gt;</DIV></SPAN></DIV></BLOCKQUOTE></BLOCKQUOTE></DIV><BR><DIV> <SPAN class="Apple-style-span" style="border-collapse: separate; border-spacing: 0px 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-align: auto; -khtml-text-decorations-in-effect: none; text-indent: 0px; -apple-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><DIV><BR class="khtml-block-placeholder"></DIV><DIV>------------------------------------------------------------------------</DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV>                                              <A href="http://at.or.at/hans/">http://at.or.at/hans/</A></DIV><BR class="Apple-interchange-newline"></SPAN> </DIV><BR></BODY></HTML>