[M3devel] CM3 services and Elego support, was: Re: conversion to another version control system

hendrik at topoi.pooq.com hendrik at topoi.pooq.com
Sun Aug 29 20:40:12 CEST 2010


On Sun, Aug 29, 2010 at 12:02:01PM +0000, Jay K wrote:
> 
>  > We're not a shop at all in the sense that you can buy anything from our shelves
> 
> 
> "Shop" has a different meaning in this context.
> English is wierd.
> 
> 
> Roughly speaking "an X shop" is a "company that tends to use product X or products from company X, not necessarily to the exclusion of others"
> "a Microsoft shop"
> "a Java shop"
> "a Unix shop"
> "an Oracle shop"
> "a .NET shop"
> 
> 
>  > And we don't really need more than CVS offers.
>  
> 
> A few things bug me.
> The number one is that there are no change lists, just multiple independent changes to independent files.

monotone does this.

> I want to be able to browse history as a list of changes, and click on them, not navigate to each file individually.

One of the independent GUIs associated with monotone does this.

> I would also like a system that keeps enough local state so that I can diff my local version against current
> without going to the slow unreliable network. The network is indeed very slow and unreliable.

monotone does this withoug using the unreliable network.
> 
> 
> Perforce seems ideal in so many ways. Its command line interface is excellent.
> Its gui is very good.
> Its feature set is excellent.
> Its branching support is excellent.
> I don't know if it has good offline support though.
> 
> 
> I think I would settle for SVN.
> Though SVN has completely broken branching last I checked, and they acknowledged it.
> SVN also has relatively large dependencies to build from source.
> 
> 
> I would also like a system that doesn't drop files/directories all over the place. Just in the root of a checkout should
> suffice and be ideal. CVS is awful here and I believe SVN is too.

I don't know what you mean with files/directories all over the place.
monotone does allow you to have mutiple workspaces (perhaps you are 
working on several bugs simultaneousle, on the same of different 
branches, without having more than one local copy of the entire 
repository.  But I suspect this isn't what you mean with "all over the 
place".

> 
> 
> Perforce maybe doesn't have the portability I'd like -- e.g. I don't see OpenBSD.
> But that might be an ok compromise, if copying can be done, or if those platforms can be requested.
> It seems they are extremely extremely portable but just don't bother to provide the binaries.
> Through time they do have excellent platform coverage.
> I'm sure we don't go for this, but I do recommend it wholeheartedly.

monotone available for
    * Cygwin
    * Debian Linux
    * FreeBSD Ports
    * Mac OS X MacPorts
    * NetBSD pkgsrc
    * openSuSE Linux
    * Fedora Linux
    * Gentoo Linux
and it's free and open source.  So are quite a few other VCS's.  We 
certainly don't want to be in the position the Linux kernel got into 
with bitkeeper.

> I want a system that makes me do *something* before editing a file.
>   Run some command to acknowledge I'm editing it, so it can keep track.

monotone can tell you what *has* been edited.  Though it doesn't have a 
specific command that allows editing ... just what do you mean here?  
What do you really need?

> I want a systerm with a command to undo the edits. With CVS I delete and update. Lame.

I'm not sure what you mean here.

> I want a system that quickly knows which files I have changed.
> Perforce meets all these requirements.
> 
> 
> When I'm lazy I do:
>   p4 edit ... 
>   spend a while editing 
>   p4 revert -a  to revert anything I didn't actually change 
>   It is wasteful, but plenty fast. 

In monotone, you can just discard the entire workspace, create another.  
But you can also use the mtn revert ... command, where ... is a list od 
files and directories you specifically want to revert.
There's also a command to remove the last revision you committed to the 
repository, as long as you haven't sync'd with another copy of the 
repositiry (in that case it would just com back the next time you 
sync'd)

Is that wnat you want?

> 
> 
> I'd prefer a system that knows how to use windiff or some other decent gui to show diffs.
> I've gradually become comfortable with textual diffs.
> But I like gui diffs. Windiff is nice. Some people think it is old and limited, but it is
> much better than textual diffs.
> 
> 
> CVS handling of merges and conflicts is also very poor.
> 

Monotone on my system deals with merge conflicts by using emacs merge 
mode.  Is that what you're talking about?  But it's possible to have 
multiple heads on a branch.

But that's not why I use monotone in my own work.  I chose it primarily 
because of its utter paranoia about data loss.

It's primarily its internal self-checking that makes it slow to the 
extent that it still is slow.  I like that.  For example, it will *not* 
sync with a damaged repository, thereby limiting contagion.  I've heard 
of occasional problems checing out extremely old versions from CVS.  
Single-bit errors can have long-lasting consequences.

But converting CVS to monotone seems still to be a pain.  Monotone's own 
cvs to monotone conversion campaign failed on my (it turns out 
incomplete) copy of the Modula 3 repository I made several months ago, 
failing on some kind of internal consistency check, thereby protecting 
the monotone repository it was building.  I should try it again after I 
re-cvsup the whole repository.  For all I know, it may be a problem with 
my missing CVSROOT.

-- hendrik

P.S. I don't know how other version control systems rate on these issues 
at present.  I suspect several would rate as well.  Input on this 
from people with actual experience would be very useful.

-- hendrik

> 
>  - Jay
> 



More information about the M3devel mailing list