VCS Interfaces, round 3

Matthew Woehlke mw_triad at users.sourceforge.net
Fri May 4 15:33:08 UTC 2007


Matt Rogers wrote:
> On May 3, 2007, at 4:23 PM, Matthew Woehlke wrote:
>> Andreas Pakulat wrote:
>>> * Parameters for push/pull in the distributed vcs iface, no idea  
>>> whats
>>>   needed there
>> This still needs to be addressed. The good news is that there are  
>> no BC issues until a plugin is actually implementing it, so this  
>> isn't urgent. (Similar to how we expect individual plugins will  
>> create their own interfaces in addition to the shared ones, e.g.  
>> IAegisVersionControl.)
> 
> This assumption that there are no BC issues until a plugin is  
> implementing it is incorrect. Being BC means that the interface  
> _does_ _not_ change after releasing, even if there is nobody using  
> it. BC is a contract between the interface writers and the users of  
> that interface. Once we break that, we lose all trust, frustrate  
> other developers, etc.

Well, right now the interfaces exist and are not even remotely BC. So I 
guess what I was saying is that we can slap a big "NOT BC - DO NOT USE 
FOR NOW" label on IDistributedVersionControl until we have a plugin that 
needs to implement it, at which point it will necessarily get some love 
and we can make it BC going forward.

> I missed a few things, so I have some questions.
> 
> Why do we have log, and showLog?

log() is for use in scripts, it allows you to do things like write a 
revision graph tool, ask for information about a file three versions 
ago, etc. With just showLog() this cannot be done.

We probably need to keep showLog() because some plugins have more 
information to present than others. Ideally we have a shared widget that 
can be told how to display extra information, but to do that I think we 
still must have something in the interface to set it up. The most 
straight-forward way, I think, is to do this up front in showLog() which 
will invoke the widget after properly configuring it.

> Why do we have one interface that takes local paths and one that  
> takes repo paths?

Ask Andreas. :-) Personally I'd be in favor of dropping the one in 
IBasicVC (that takes local paths), you can always still use local paths 
indirectly with repositoryLocation().

Hopefully that helps! :-)

-- 
Matthew
Current geek index: 62%





More information about the KDevelop-devel mailing list