Since Classpath is a GNU project, I’m stuck using CVS for source control. I so dearly wish that Savannah would start supporting Subversion, but if you suggest that they just tell you to use Arch, ’cause it’s so much better. I don’t want to use Arch.
But, what I’m posting this for is not to complain about CVS, or Savannah admins (well, maybe a little, but that’s just the teaser intro to the real post), but to ask a question: see, the jessie-nio branch was made a while ago, and I really want to update the parts of that branch with code from HEAD, which has had a lot of new features and bug fixes added to it in the meantime.
How do I do this? Google has been pretty unhelpful in answering this so far, and the CVS info pages suck mightily aren’t very thorough. How to I “re-branch” something? Is it as simple as
cvs up -j HEAD
while in the branch? Does this pick up new files added on HEAD?
(I asked this on IRC a while ago, and I think Tom answered. But I don’t remember what it was. I think the real answer is “copy the files from HEAD to your branch; commit,” but if there is a better answer, I’d like to know it!)

Loading...
reeses | 29-May-06 at 9:14 pm | Permalink
Arch (especially Bazaar-NG) is so much better than Subversion or CVS.
I’ve gone through a very similar problem with Subversion, and solved it with a series of disgusting hack scripts.
However, to roll back to your question, it really depends on what you’ve done. First, I’d stop thinking about HEAD. Tag the trunk when you want to make a merge, because you’re going to need to know this later.
What you want to do is cvs up -j tag-of-last-merge-or-when-i-branched -j tag-of-current-trunk-version-mentioned-above wherever you want to apply the diff. Remember the way merges work in CVS (and Subversion) — they diff the two -j arguments, and apply it to your working copy. If you repeatedly diff against your original branch point, you’re going to create a mess, which is why you’ll want to keep the tags rolling forward.
I did a quick google, and http://www.netbeans.org/community/sources/branches.html is as good a guide (and set of pointers) as any.
Good luck. And switch to Arch.
csm | 29-May-06 at 10:53 pm | Permalink
Ew. This is sounding like a lot more than I care to do for this. Maybe I should just take some of the bits in HEAD that I might need — the scatter-gather IO stuff, is probably it — and work with an old Classpath.
Hmm, maybe I could just pull in one of the release branches? Because we branch on every release of Classpath. A bunch of AWT changes are being made in Classpath now, anyway, and I’ll bet that junk will break my build.
I might see if Arch will work for me (I know Savannah has Arch support; I’m not sure if Classpath has it enabled). My experience with it seems like it was kinda like monotone, and I liked working with monotone (even if it is dog slow). Maybe I am unprepared to drop that acid yet, through, since I don’t want to spend the entire summer learning version control systems.
Maybe I’m being dumb, but what I’m looking for doesn’t sound that silly a thing to want: I’m doing my changes on some isolated part of the tree, off in my own branch, and I’d like to update the things that changed around me to the state they are in HEAD. It seems like any big project (like GCC, and I know people work on major changes there in branches all the time) would require this, if the change is at all complicated.