[RFC] Workingstyle of different VCS systems

Kuba Ober kuba at mareimbrium.org
Mon Apr 9 14:22:37 UTC 2007


> >>>>>>> Sounds a bit like aegis which Kuba uses... So if you have a number
> >>>>>>> of files in your changelist you can't just edit them? You have to
> >>>>>>> do this via a p4 command?

Well, it's even weirder than that. The files are in the project. A project 
directory will be available on your machine, typically via nfs or samba, or 
some other distributed sync mechanism (unison works fine for that, too). A 
change, by default, has no files. Say you're working on foobar.2.1, where 
foobar is the project name, and 2.1 is the current brand new branch. You 
create a new change, which is called foobar.2.1.C010 (change 10). What 
happens is this:
1. ~/foobar.2.1.C010 is created, which is the change directory / work 
directory
2. it's an empty directory
3. if you want to get to a file, you have to look for it in:
   I.   ~/foobar.2.1.C010
   II.  /usr/com/aegis/foobar/branch.2/branch.1/baseline
   III. /usr/com/aegis/foobar/branch.2/baseline
   IV.  /usr/com/aegis/foobar/baseline
   in that order.

Usually, you'll add some script magic to the project's configuration, such 
that when a new change is created, the .kdevelop* files get copied to it.

When a file is in the change, it's editable. If it's not, it simply doesn't 
exist in your work directory, and you have access to the *read only* baseline 
files.

> >>>> Yes, thats exactly what I was thinking, i.e. you can't just click on a
> >>>> file in the project which opens it and then edit it. You first have to
> >>>> execute some vcs-action to do that.

In case of aegis, that's exactly what has to happen! If the file is 
foo/bar/baz, then you'd execute the following commands

aegis -copy -project foobar.2.1 -change 10 foo/bar/baz

> Offhand I would guess you can't, but IMO that's OK. I'd say let's stick
> with a manual 'edit' action, at least for perforce (maybe aegis wants to
> do this differently).

As long as it's one click away, maybe it'd be acceptable, otherwise I'd hardly 
call it "integration" of aegis.

I'd say a file should always be openable, but it should be shown as read-only. 
Then when you right click in katepart's window, or on the tab, or on the file 
list, there should be a context menu entry to "make editable". This will 
execute the relevant vcs thingo.

> Anyway I think we are again drifting into back end 
> implementation and away from interface design. :-) I guess maybe we
> should keep in mind that a VCS plugin may want to hook certain events
> (maybe Kuba Ober could comment on this?).

See above for what implementation I'd consider "good enough".

> > Well, I think it depends. On a large project like KDevelop its certainly
> > not apropriate, however if you're working on your own small project that
> > you do release sometimes it might be convenient to not have to switch to
> > another client. As I said I don't know about other VCS' but with svn its
> > just a plain svn copy and thats pretty easy.

I've worked for ages with current kdevelop and doing all the aegis 
manipulations by hand. It's tiresome and wholly unnecessary. Kdevelop is 
there for a reason - it should do all that for you.

In case of aegis, the integration is much tighter, since an aegis-managed 
project has pretty fixed way of building it: essentially aegis -build and you 
don't care what other maketools etc. are used, it's supposed to be handled 
during project setup.

Cheers, Kuba




More information about the KDevelop-devel mailing list