[RFC] Workingstyle of different VCS systems

Matthew Woehlke mw_triad at users.sourceforge.net
Tue Apr 10 15:47:10 UTC 2007


Kuba Ober wrote:
> On Thursday 05 April 2007, Andreas Pakulat wrote:
>> import - import a local dir into the VCS
> Has to be done by hand, basically doing aegis -new_file on each file in the 
> dir

As Andreas said, that's what the back end is for. :-)

>> state - get the state of a local file, currently possible state flags
>> 	are:
>> 	Added, Uptodate, Modified, Conflict (between VCS-version and
>> 	local version), Sticky (some CVS thing, no idea what it means),
>> 	NeedsPatch (what does that mean?), NeedsCheckout, Directory,
>> 	Deleted, Replaced
> Aegis has only two possible states: a file may need to be merged with upstream 
> before integration, or not. Nothing else makes any sense.

Hmm...
added - file only exists in this change (right?)
uptodate - file exists, but isn't in this change
modified - file doesn't need merge, but is in this change (right?)
conflict - file in this change *does* need merge (right?)
deleted - can't you delete in aegis?

...so aegis can still map most of the states.

I think "needspatch" means that you don't have the latest version. This 
would make sense in perforce, cvs, and svn, but I am guessing it does 
not apply to aegis? Ditto for "needscheckout"; means the file exists in 
the repo but not in your working copy.

>> log - Show a complete history for a given local resource or VCS resource
> Makes little sense. What's a resource??
> 
>> diff - show a difference between local file and latest VCS version, or 2
>>        VCS versions
> Makes sense, but there needs to be a way of choosing which "latest VCS 
> version" do we talk about. There can be multiple branches of parallel 
> development!

Actually you should always (i.e. for all plugins) be able to specify 
what VCS version to diff against. Andreas is right, though, "latest" 
should mean the version your change is based off of. (Actually, in 
general it should mean the file you would get if you reverted the file 
being diff'd.)

>>            modified by whom in which version
> This is file difference tool specific, i.e. aegis itself is diff tool agnostic 
> and by itself doesn't know much about diff tools. This would need to be made 
> pluggable per diff tool used, i.e. diff-style, fcomp-style, etc.

Right, this one won't be supported by all VCS's. Older p4d's don't 
support it either.

>> repositoryVersion - gives the latest version in the repository
> In aegis, this needs to let you choose what do you consider as "latest 
> version". The most recent version in the timeline may *not* be what you 
> want - it may likely come from a parallel branch of development, and be 
> completely unapplicable to whatever you're doing.
> 
>> localVersion - gives the version of the local file
> East: that's just the file in the change you're working on.

I assume you meant "easy", but it's not *quite* that simple; IIUC the 
local version in aegis is "where did this file come from" (e.g. the 
change, baseline, etc.).

>> copy - copy a file with VCS methods (history is kept)
> IIRC, aegis doesn't support this.
> 
>> move - move/rename a file with VCS methods (history is kept)
> OK, aegis -move

How can aegis support "move" but not "copy"? How can it not support 
"copy", period? (Note: in perforce, "copy" == "integrate"; aegis might 
use its merge or branch command to do a copy.)

-- 
Matthew
GDRLaH - Grin, Duck, and Run Like a Hippo! :-)





More information about the KDevelop-devel mailing list