CVS is dead

Martin Marques martin at marquesminen.com.ar
Fri Dec 28 01:33:47 UTC 2007


Les Mikesell escribió:
> Martin Marques wrote:
> 
>>
>>> up side is that you can track development 'forwards' from any point. 
>>
>> Uhh???
>>
>> $ hg up -r SOME_OLD_REV
> 
> Start from a tagged point in development. Branch several times for 
> different changes. Can you find all subsequent work?

What are you talking about? Do you know that a tag isn't necessarily a 
branch (not even on CVS)?

$ cvs tag my_tag
$ cd ../newdir/
$ cvs co -r my_tag myrepo
... change some file....

Now, try to commit the change in the new dir? See? It's a dead end in 
CVS too. You need to branch to be able to commit to a *sticky tag*.

The thing is that, for example in Mercurial, branches and tags are 
different things, even though the idea is to put a marker at a point and 
then start a branch or not.

>>
>> What? Les do you really know what you're talking about?
> 
> I'd like to hear that I don't.  With CVS, if you have any of the 
> development you have all of it.  With svn, tags are (by convention) dead 
> end snapshots and there is no way to track forward development.

I'm not a Subversion expert, only CVS and now Mercurial (not ann expert 
yet :-) ).

> Assume 
> you worked on something some time ago, ending by creating a certain tag. 
>  Now several other people create branches for additional work.  How can 
> you tell that, starting from the tag you last knew about?  You could 
> start from any of the branches and work backwards but you can't see what 
> branches were created or when going forwards.

I don't understand. Where do they branch? On your working branch or 
another (like HEAD for example)? BTW different branches mean different 
development, or why would you branch?

Remember tags are just a way of marking your development. In CVS you can 
tell it to, besides tagging putting a branch which will have the name of 
the tag. If you don't branch, you're at a dead end, just like in SVN.

>>> This must be even worse in distributed VC's where the changes might 
>>> not even exist in your copy of the repository.  Doesn't it bother you 
>>> to know you might be repeating someone else's mistakes because you 
>>> can't track all the other changes from a given point?
>>
>> What mistake if it's not in the repository?
> 
> That's the point - you won't know.

You can't know in any VCS.

>> The same thing would happen with CVS if you were coding without 
>> commiting to the main server. Nobody will be able to know what you are 
>> doing. Same if your coworkers don't update regularly. How can they 
>> know what you fixed?
> 
> If you aren't committing to the central repository, you aren't using CVS.

I repare a bug, but don't commit, it's the same as commiting to a 
distributed VCS and not pushing.

>> In distributed VCS you use pull and push for this.
> 
> How can you tell whether that was always done or not?

By communicatting with the other developers. Or do you work inside a jar?




More information about the users mailing list