[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: How does this file "Move" method sound?

From: Kaz Kylheku
Subject: Re: How does this file "Move" method sound?
Date: 16 Oct 2002 12:43:57 -0700

Shane McDaniel <address@hidden> wrote in message news:<address@hidden>...
> $ cd $CVSROOT/module
> $ cp old,v new,v
> # make a minor change so the commit will occur
> $ cvs commit -m "Moved to new" old
> $ rm old
> $ cvs remove old
> $ cvs upddate new
> # make a minor change so the commit will occur
> $ cvs commit -m "Moved from old" new
> The goal being to have the complete history in the new location as well
> as the history to the move date under the old file.
> Does this accomplish that goal?

No, on at least three counts. 

Firstly, checkouts of old baselines are polluted with the file ``new''
which did not in fact exist when those baselines were created. If you
want to do a better job, then scrub all tags from ``new''. This way
when someone checks out an old release, that file won't be
instantiated. Who knows what problems the extra file may cause?

Secondly, you don't have a complete history that will let you merge
across the rename. You can't go back to an old release, fix something
in the file ``old'', and then merge that fix to the latest code, and
have it automatically apply to ``new''.

Thirdly, what if someone created an object called ``new'' on a branch?
Then you have a new,v in the Attic, which means you better not create
a new,v in the main directory. What do you think will happen when the
addition of ``new'' o the branch is merged to the trunk? CVS will try
to move new,v out of the Attic and encounter the existing new,v.

What you have done is not a real rename, but a copy. A copy is not the
same thing as a rename! If you go down to your local government office
to change your surname, they are not going to clone you, give your new
name to your clone, and then kill you.

A name is the property of an object, not vice versa! A rename
operation takes place when the property is updated to a new value,
while otherwise preserving the identity of the object.

Meta-CVS: directory structure versioning; versioned symbolic links;
versioned execute permission; versioned property lists; easy branching
and merging and third party code tracking; all implemented over the
standard CVS command line client --

reply via email to

[Prev in Thread] Current Thread [Next in Thread]