[RFC] Workingstyle of different VCS systems

Andreas Pakulat apaku at gmx.de
Thu Apr 5 22:18:30 UTC 2007


On 05.04.07 16:00:49, Matthew Woehlke wrote:
> Andreas Pakulat wrote:
> > On 05.04.07 15:01:58, Matthew Woehlke wrote:
> >> Andreas Pakulat wrote:
> >>> On 05.04.07 13:04:43, Matthew Woehlke wrote:
> >>>> Hmm... ok, I guess it's similar. I don't know how aegis works, so... :-)
> >>> See the archive of last month, Kuba Ober tried to explain it to me.
> >> I know, I've been reading, but I didn't understand it either. :-)
> > 
> > Good :) I already thought I'm stupid. Although I have to admit that I
> > don't completely understand the "workflow" in perforce either :)
> 
> Eh, perforce is easy. :-) It's almost exactly like svn except you have 
> to 'p4 edit' before you can edit. And you have clients to map files from 
> the repo to your workspace instead of what amounts to a symlink to the 
> repo (i.e. you get exactly the entire tree, no more no less),

Symlink to the repository?? Which VCS does that stupidity?

> but that doesn't really change the workflow, just makes it easier
> (possibly? ;-)) to be selective about what you pull down.

Well, thats something svn does allow too, although if you're not
watching your fingers you easily checkout the whole of a project.

> aegis I don't get, from what I read it sounds like the files are on your 
> *drive* in strange places,

Right, the whole filesystem is your repository. It seems you have a base
folder "somewhere" and then you create a changeset somewhere else with
just the files you want to change. No idea how merging back or such
things work..

> and there was something about all sorts of 
> weird stuff you have to do with symlinks and... I admit I didn't read it 
> *real* closely but it sounded really strange. :-)

No, the symlinks are there to be able to compile inside a changeset, as
there are only few files in there not the whole project. But normal
buildsystems like qmake/cmake/make/whatever need the whole project.

> >>> Hmm, I'm not sure we can intercept it (I haven't looked at the
> >>> kate-integration).
> >> Offhand I would guess you can't, but IMO that's OK.
> > 
> > Well, now is the time to ask kate-devs to get this...
> 
> We really need it in KTextEditor though, don't we? I'm happy to ask if 
> you think it's worthwhile.

Well it can't hurt...

> Or is KDevelop4 dropping KTextEditor support?

No, at least not as long as kate-devs still call it KTextEditor ;)

> >> Hmm... ok, then maybe what I am thinking of as "tagging" is not what you 
> >> are thinking of as "tagging". It sounds like you are thinking of what I 
> >> call "branching".
> > 
> > Well, I'm spoiled by svn, because I never did this particular thing in
> > CVS. Unless I'm totally mistaken in CVS if you tag something its the
> > same as "giving a specific revision in a specific branch a name". 
> 
> Yes, that sounds like perforce's "labels". I'm unconvinced of the 
> importance of trying to support that directly in KDevelop (I'm not 
> arguing against it, really, I'm just unconvinced).

Well, we'll leave it to the vcs plugins anyway, so they can decide...

> > In SVN however there are no such "special names", normally you use a 
> > structure like this:
> > 
> > project/trunk
> > project/branches
> > project/tags
> > 
> > trunk is self-explanatory, branches is for working branches as well as
> > stable releases, i.e. we have branches/KDE/3.5 for KDE 3.5. Now if you
> > do a release you do that from branches/KDE/3.5 at a time where you think
> > its ready for a .x release. You do this by copying branches/KDE/3.5 to
> > tags/KDE/3.5.1 (for x=1), thats it. Now you can always access KDE 3.5.1
> > at tags/KDE/3.5.1. Which was created from revision 564234 (whatever it
> > was exactly) of branches/KDE/3.5.
> 
> ...and it's just "principle" that /tags/... is read only? I.e. it's 
> semantically special, but otherwise it's just another spot in the repo, 
> yes? If I am understanding you, this is just a "branch" with a "special" 
> target.

Right, in SVN everything is just a dir, the same is true for trunk and
branches. Actuall in KDE's svn repo the structure is 

/trunk
/branches
/tags

and then have trunk/projectA, trunk/projectB and so on. You can as well
do something like

/devel
/stable
/releases

or you can just drop all that and only have

/project

> Would svn have separate interfaces for "branch" and "tag", even though 
> they do the same thing under the covers? Other VCS back ends would need 
> them to be separate.

Uhm, SVN doesn't have an interface at all for branch or tag. You handle
a SVN repository just like a normal filesystem. So you literally copy a
branch at a specific revision to a tag:

svn copy https://svn.kde.org/home/kde/branches/KDE/3.5@623434
https://svn.kde.org/home/kde/tags/KDE/3.5.7

Thats all (behind the scenes this is not a real full copy, but thats
just details). 

Anyway, as I said above, both branching and tagging should be left to
the vcs plugin. I don't see the need for this to be in the common VCS
interface.

Andreas

-- 
You will get what you deserve.




More information about the KDevelop-devel mailing list