VCS Interface classes

Matthew Woehlke mw_triad at users.sourceforge.net
Mon Apr 30 22:15:07 UTC 2007


Andreas Pakulat wrote:
> On 30.04.07 14:39:30, Matthew Woehlke wrote:
>> Andreas Pakulat wrote:
>>> Not 100% following here, but IMHO that means we should have something
>>> like this:
>>>
>>> class Revision
>>> {
>>> 	enum RevisionType {
>>> 		Number,
>> Does this consider that IIRC a cvs version "number" is e.g. "1.2.15"?
> 
> Uhm, well its just a flag, what really is inside the QVariant is
> determined by whoever builds the revision. I mean for Number we can say:
> Try "int" fall back to "QString".

Ok, I wasn't sure. Thanks for clarifying.

>>> Or don't we need Branch/Tag as Revision kind of Parameter? I think for
>>> CVS thats needed, for SVN branch/tag would mean another repo location,
>>> how is it with perforce?
>> I'm not sure how branch works with svn, I guess it is the revision of 
>> the file in e.g. /trunk when the branch was done?
> 
> I was thinking that svn would just ignore this, i.e. it would use solely
> the url, same for tag. If a VCS does need an identifier, like CVS does
> then its in the Revision. If a VCS doesn't need an identifier for
> identifiying a branch then it just ignores the Revision parameter. Or is
> that too much "magic" behind the scenes?

Wait, there was "branch" *and* "tag"? Ok, I need to read closer. In that 
case, "label" is I guess closest to "tag", and there is no "branch", at 
least not in the way I am thinking. So I am increasingly convinced we 
should not have these (i.e. use PluginSpecific).

Perforce has such a critter as a "label", which is a list of 
fully-qualified files (i.e. repo path plus revision). You create a label 
by giving a client spec, and you can "sync" a label to update the 
versions associated with the label (possibly you can manipulate the 
label in other ways). However, a label /does not create additional repo 
paths/. You can use a label to specify a version, such as 'do an 
update(), but instead of updating to HEAD, update to <label>', which 
uses the label to decide what version of the file you want.

cvs might have something like that, although I think what cvs does is 
more akin to "tagging" in svn. AFAIK svn does not have anything like 
"labels" in perforce. IOW I think this belongs squarely in the 
PluginSpecific category.

-- 
Matthew
If you believe you received this e-mail in error, you are probably sadly 
mistaken, but if not, aren't you lucky?





More information about the KDevelop-devel mailing list