About IBranchingVC...

Matt Rogers mattr at kde.org
Thu May 17 21:06:04 UTC 2007


On Thursday 17 May 2007 14:24, Matthew Woehlke wrote:
> How exactly is branch() supposed to work? In perforce, a "tag" (label)
> requires the source files to be checked out, while a branch() requires
> the destination to be in the view (branch() == copy() except somewhat
> more sophisticated). Also there is a "branch" object that would
> (should?) be created in this case. Also labels in perforce need a name
> (no surprise here).
>
> In svn AFAIK both branch() and tag() are synonyms for copy(). I don't
> know how things work in CVS.
>
> Options:
> - move branch() to IRepositoryVC and drop tag()

nope, people need to tag and branch things for certain VCSs but not all of 
them require branching or tagging. Branching and tagging need their own 
interface.

> - perforce doesn't implement IBranchingVC

nope, because it obviously does some sort of branching

> - clarify what branch() and tag() do in a way that is favorable to a
> perforce implementation

hmm, also no. why should our interfaces favor perforce or any other version 
control system, subversion and cvs included?

> - drop IBranchingVC altogether; plugins will expose the VCS's native flavor

nope. We can have an interface for branching, it's a universal task.

> - something else?
>

maybe

> In any case, "branches" can still be done using copy() from IBasicVC for
> the generic case, otherwise plugins are expected to expose the VCS's
> native flavor of this.
>

branching is a term that is universally understood. It has an equivalent for 
nearly all version control systems. (the exceptions being the distributed 
ones like git or darcs, which probably wouldn't implement the IBranchingVC 
interface anyways). If needed, the VCS plugin should take the steps needed to 
make a branch or a tag, even if we use a temporary directory for it.

> NOTE: Shouldn't copy(), etc in IRepositoryVC take lists?

probably.

-- 
Matt




More information about the KDevelop-devel mailing list