Matthew Jacob wrote...
> 
> Oh, very well, I'll have to say Perforce isn't that bad- it's just that it
> doesn't have a snappy set of tcl/tk GUI tools that allow you look at whole
> branch and revision histories..

I know there's a reasonable web-based tool that lets you look at revision
histories for files, trees, whatever.  There's also a nice tcl/tk tool that
allows you to do merge files from a gui interface.

> It doesn't have a 3-way filemerge tool (I
> still fire up teamware (what NSElite became) to do heavy merging and use
> the automerge feature)... Perforce *does* have the disparate release
> stream feature, but I have found it somewhat difficult to use. Perhaps if
> I'd actually had the depot locally I'd feel more at home with it....

What do you mean by 3-way merge?  I've got one souce tree under perforce 
that is an amalgamtion of 5 source trees.  Right now, I'm actively keeping
it in sync with two separate source trees.  And this is a non-trivial
number of files -- each of the trees in question is at least a full
FreeBSD source tree.

Perforce's merging tools work pretty well, and have enabled me to do some
branching and merging that would probably drive even a seasoned CVS user
nuts.  Here's how I generally merge things from two branches into a
"combined" branch:

p4 integrate -b branch1-to-combined-branch
[ The -b argument specifies the branch mapping, which basically is the
source and destination trees ]
p4 resolve -as
[ This tells perforce to resolve the merge, and accept "safe" changes.
  Safe changes are changes to files that have changed in the source or
  destination branches, but not both. ]
p4 resolve
[ This picks up the files that weren't automatically merged in the last
  step.  For most files, perforce is able to merge things adequately, but
  when it can't, you have to go in and edit things manually, or
  specify whether you want to keep the source or destination branch
  version of the file. ]
p4 submit
[ Write a change description, edit the list of files to submit, and then
  check things in. ]

You then repeat the same process for the second branch merge, except that
in the first step, you'd use a different branch mapping.  It's also pretty
easy to merge things in the opposite direction.

You can also do nifty things like only merge certain files from one branch
to another, or only merge certain changes from one branch to another.  It's
possible, for instance, to merge revisions 4, 5, 7, and 9 of a file, but
not 6 or 8.  It's also possible to merge certain changelists from one
branch to another, instead of doing a blanket merge.

Ken
-- 
Kenneth Merry
k...@plutotech.com


To Unsubscribe: send mail to majord...@freebsd.org
with "unsubscribe freebsd-current" in the body of the message

Reply via email to