Re: How to extract fine-grained snapshot history?

2004-06-17 Thread Kynn Jones


   Date: Wed, 16 Jun 2004 13:03:57 -0400
   From: Scott Moynes [EMAIL PROTECTED]

   Kynn Jones wrote:

   Therefore, my question is:
   
 1.  How to extract the times of all the commits to a project
 (including recursively all subprojects, of course).
   
 2.  How to associate each of these times with the branch that was
 active when the corresponding commit took place.
 
   
   I've used CVSps http://www.cobite.com/cvsps/ to some success for a 
   similar problem. Though, from what I understand of your use case, you 
   will probably have to wrap it up in some scripting glue.


Very cool.  Thanks for the tip!

kj



___
Info-cvs mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/info-cvs


How to extract fine-grained snapshot history?

2004-06-16 Thread Kynn Jones




For any given project under CVS control, every time someone makes a
commit, the project changes state, as far as CVS is concerned.  The
finest-grain history of this project, as far as CVS knows it, would
consist of a sequence of snapshots of the project as it would appear
right after each one of these commits.  To be more precise, suppose
that after each commit, we did

  % cd $WORKING_DIRECTORY/..
  % rm -rf $WORKING_DIRECTORY
  % cvs co [-r $ACTIVE_BRANCH] MyProject
  % tar czf MyProject_Snapshot_xxx.tgz MyProject

where $ACTIVE_BRANCH is the branch that was current when the commit
was issued (if it was the trunk, then the -r option to the checkout
command is omitted).  Then we would end up with a sequence of
snapshots (in this case compressed tar files) of the project.

The repository holds all the information necessary to recreate such a
sequence of snapshots.  If there were only one branch to worry about,
getting this sequence would be simply a matter of extracting from the
repository the times of all the commits to MyProject and for each of
one these times doing a checkout of MyProject with the appropriate
argument to the -D option.

The problem is more complicated when the project has multiple
branches, because it requires associating each commit time with a
branch.

Therefore, my question is:

  1.  How to extract the times of all the commits to a project
  (including recursively all subprojects, of course).

  2.  How to associate each of these times with the branch that was
  active when the corresponding commit took place.

Thanks!

kj



___
Info-cvs mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/info-cvs


Re: How to extract fine-grained snapshot history?

2004-06-16 Thread Kynn Jones


   X-Original-To: [EMAIL PROTECTED]
   From: Jim.Hyslop [EMAIL PROTECTED]
   Date: Wed, 16 Jun 2004 09:18:18 -0400

   Kynn Jones wrote:
Therefore, my question is:

  1.  How to extract the times of all the commits to a project
  (including recursively all subprojects, of course).

  2.  How to associate each of these times with the branch that was
  active when the corresponding commit took place.
   I don't know if there's a simpler way, but my first reaction would be to
   write a loginfo script, which will capture the information you need. You'd
   have to do a little extra work to match the revision number against the
   branch.

I'm not sure I follow you.  It sounds to me like your solution is for
recording the commit times and associated branches as I go along, so
that, in the future, I could generate the snapshot sequence.  But what
I want to do is to generate the snapshot sequence *retroactively*,
using the information about past commits stored in the current
repository.

My guess is that all the information is encoded somehow in the RCS
files.  (Although maybe other files under $CVSROOT/CVSROOT have
essential, or at least useful, information for what I want to do?)
The problem is to extract the data from the RCS files.

For example, in one of such files I find the following:

1.3
date2004.06.10.19.32.06;author jones;   state Exp;
branches;
next1.2;

1.2
date2004.06.09.14.06.20;author jones;   state Exp;
branches
1.2.4.1;
next1.1;

1.1
date2004.06.09.14.06.18;author jones;   state Exp;
branches;
next;

1.2.4.1
date2004.06.09.14.06.23;author jones;   state Exp;
branches;
next;


What do these dates mean?  Are they commit dates?  And does the
revision following the branches keyword refer to the branch that was
active at the time of the commit?

I suppose it would be useful to read a detail description of the
anatomy of an RCS file, and of any other $CVSROOT/CVSROOT file that
may contain the time and branch information I need.

kj



___
Info-cvs mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/info-cvs


How to undo a change to a branch

2004-06-15 Thread Kynn Jones




I just mistakenly committed a change to a (non-trunk) branch.  What's
the best way to undo this change?  (I'm tempted to just delete the
change in the RCS file, but I figure I'd better learn the right way to
do this.)

Thanks!

kj





___
Info-cvs mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/info-cvs


Any CVS tricks for creating patch files?

2004-06-07 Thread kynn




To create a patch, I could do this:

  % cvs co -d buggy -r Release_0_1 MyProj
  % cvs co -d fixed -r Release_0_1_Bugfixes MyProj

  % LC_ALL=C TZ=UTC0 diff -Naur buggy fixed  Release_0_1_Patch

...but I wonder if there are some CVS tricks to streamline the process
further.

Thanks!

kynn



___
Info-cvs mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/info-cvs


Re: Any CVS tricks for creating patch files?

2004-06-07 Thread kynn

   Date: Mon, 7 Jun 2004 18:08:20 -0400 (EDT)
   From: [EMAIL PROTECTED] (Larry Jones)

   [EMAIL PROTECTED] writes:

...but I wonder if there are some CVS tricks to streamline the process
further.

   You mean like the cvs patch command?

That'll probably do it.  :-)

kynn


___
Info-cvs mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/info-cvs


cvs checkout: move away foo; it is in the way

2004-06-05 Thread kynn



Sorry, I noticed a typo in the interaction transcript I posted in the
original message for this thread (see comments beginning with ###).
   
   Date: Fri, 4 Jun 2004 18:17:03 -0400 (EDT)
   From: [EMAIL PROTECTED]
   Subject: cvs checkout: move away foo; it is in the way
   To: [EMAIL PROTECTED]


   OK, here's an interaction that illustrates yet another bizarre (to me)
   CVS conundrum (summary: I import some files, create a branch, modify
   one file on this branch, commit it, delete the CVS directory, and
   reimport):

 % export CVSROOT=/home/jones/cvs_test
 % rm -rf $CVSROOT
 % cvs init
 % mkdir Foo
 % cd Foo
 % touch foo
 % cvs im -m '' Foo vendor_1 v1
 N Foo/foo

 No conflicts created by this import

 % cvs co -d . Foo
 cvs checkout: Updating .
 U foo
 % cvs ta -b branch_1
 cvs tag: Tagging .
 T foo
 % cvs co -d . -r branch_1 Foo
 cvs checkout: Updating .
 ### In my original post, the following line was given as
 ### % date
 ### missing the redirection part.
 % date  foo
 % cvs ci -m '' foo
 Checking in foo;
 /home/jones/cvs_test/Foo/foo,v  --  foo
 new revision: 1.1.1.1.2.1; previous revision: 1.1.1.1
 done
 % rm -rf CVS
 % cvs im -m '' Foo vendor_2 v2
 U Foo/foo

 No conflicts created by this import

 % cvs co -d . -r vendor_2 Foo
 cvs checkout: Updating .
 cvs checkout: move away foo; it is in the way
 C foo



   Why am I getting the error message cvs checkout: move away foo; it is
   in the way?  Can anyone make any sense of this?

   Thanks!

   kynn


___
Info-cvs mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/info-cvs


CVS bug? cvs checkout: move away bar; it is in the way

2004-06-05 Thread kynn




OK, I've significantly narrowed down the problem from my original post
(which, I now realize, had much irrelevant stuff).  I also provide a
script below that reproduces the problem if anyone wants to play
around with this.  All you need to do to it is edit the value of
TESTCVSROOT, and it's ready to go.

I thought that my confusion had to do with my incomplete understanding
of CVS, but now I think that what I'm seeing below is a bona fide CVS
bug.

SUMMARY: I import some files, and successfully check out the vendor
branch; then I repeat the process, starting from scratch, and
modifying one file before the import step; when I attempt to check out
the vendor branch, as before, I get an error; I've added comments and
blank lines, for clarity, to the transcript below.

  ### Initialize
  % TESTCVSROOT=/home/jones/cvs_test
  % rm -rf $TESTCVSROOT
  % cvs -d $TESTCVSROOT init

  % rm -rf Foo  mkdir Foo  cd Foo
  % echo -n 0  bar 
  % cvs -d $TESTCVSROOT import -m '' Foo vendor_1 v1
  N Foo/bar

  No conflicts created by this import

  % cvs -d $TESTCVSROOT checkout -d . -r vendor_1 Foo
  cvs checkout: Updating .
  U bar
  ### Everything OK so far

  % cd ..

  ### Repeat the whole process, with a different
  ### bar file, and a different release tag during
  ### the import step
  % rm -rf Foo  mkdir Foo  cd Foo
  % echo -n 1  bar 
  % cvs -d $TESTCVSROOT import -m '' Foo vendor_1 v2
  U Foo/bar

  No conflicts created by this import

  % cvs -d $TESTCVSROOT checkout -d . -r vendor_1 Foo
  cvs checkout: Updating .
  cvs checkout: move away bar; it is in the way
  C bar
  ### Not OK this time; bar has a conflict (???)

  ### Rename bar so that it is cvsignore'd, and
  ### attempt checkout again
  % mv bar bar.orig
  % cvs -d $TESTCVSROOT checkout -d . -r vendor_1 Foo
  cvs checkout: Updating .
  U bar
  ### Everything OK this time

  ### What was the conflict all about?
  % diff bar bar.orig  echo $?
  0

None of this makes sense to me.  I want to understand why it is
that the second checkout fails, while the first one succeeds.  Why
is there a conflict in bar, when, as shown at the end, the version
that was in the way is identical to the one that was ultimately
checked out?  Any clues would be much appreciated!

Thanks!

kynn

P.S.  If anyone wants to play with the script that generated the
results above, here it is:

#!/bin/bash

### Edit the following line so that TESTCVSROOT has a valid value
TESTCVSROOT=/path/to/test/cvs/repository

# If you want to see cvs's output, set OUT to /dev/fd/1,
# or delete all occurrences of  $OUT in the code below
OUT=/dev/null

rm -rf $TESTCVSROOT
cvs -d $TESTCVSROOT init $OUT

### First iteration
rm -rf Foo  mkdir Foo  cd Foo
echo -n 0  bar
cvs -d $TESTCVSROOT import -m '' Foo vendor_1 v1 $OUT
cvs -d $TESTCVSROOT checkout -d . -r vendor_1 Foo
cd ..

### Second iteration
rm -rf Foo  mkdir Foo  cd Foo
echo -n 1  bar
cvs -d $TESTCVSROOT import -m '' Foo vendor_1 v2 $OUT
cvs -d $TESTCVSROOT checkout -d . -r vendor_1 Foo

mv bar bar.orig
cvs -d $TESTCVSROOT checkout -d . -r vendor_1 Foo
diff bar bar.orig  echo $?

cd ..

exit 0



___
Info-cvs mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/info-cvs


Re: Help! Branch/attic mess

2004-06-04 Thread kynn


   Cc: [EMAIL PROTECTED]
   From: Mark D. Baushke [EMAIL PROTECTED]

   [EMAIL PROTECTED] writes:

 From: Mark D. Baushke [EMAIL PROTECTED]
 ...
 cvs checkout -d top .  # checkout all of your modules

Wow. I've never before seen '.' used in the modules slot
for checkout. I just scoured the manual trying to find
documentation on this, but no luck. Is this usage
documented anywhere?

   I don't recall it being explicitly mentioned. However, the
   cvs-1.11.16/src/sanity.sh uses th is in many tests including
   the basica test, so I don't think of it as being all that
   secret.

*Finally* I get it.  . refers to $CVSROOT/.  Doh!

I tend to forget that, at least as far as cvs checkout is concerned,
Project is pretty much equivalent to any directory under $CVSROOT.
I.e.

  cvs checkout -d top .

and

  cvs checkout -d top ././/.///CVSROOT/.././

and even (lo and behold)

  cvs checkout -d top ''

have the exactly same effects.

Actually, the above was a bit of an overstatement.  Maybe it should be
rephrased as Project is pretty much equivalent to any directory
under $CVSROOT, or a module mentioned in $CVSROOT/modules

kj


___
Info-cvs mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/info-cvs


cvs checkout: move away foo; it is in the way

2004-06-04 Thread kynn




OK, here's an interaction that illustrates yet another bizarre (to me)
CVS conundrum (summary: I import some files, create a branch, modify
one file on this branch, commit it, delete the CVS directory, and
reimport):

  % export CVSROOT=/home/jones/cvs_test
  % rm -rf $CVSROOT
  % cvs init
  % mkdir Foo
  % cd Foo
  % touch foo
  % cvs im -m '' Foo vendor_1 v1
  N Foo/foo

  No conflicts created by this import

  % cvs co -d . Foo
  cvs checkout: Updating .
  U foo
  % cvs ta -b branch_1
  cvs tag: Tagging .
  T foo
  % cvs co -d . -r branch_1 Foo
  cvs checkout: Updating .
  % date
  % cvs ci -m '' foo
  Checking in foo;
  /home/jones/cvs_test/Foo/foo,v  --  foo
  new revision: 1.1.1.1.2.1; previous revision: 1.1.1.1
  done
  % rm -rf CVS
  % cvs im -m '' Foo vendor_2 v2
  U Foo/foo

  No conflicts created by this import

  % cvs co -d . -r vendor_2 Foo
  cvs checkout: Updating .
  cvs checkout: move away foo; it is in the way
  C foo



Why am I getting the error message cvs checkout: move away foo; it is
in the way?  Can anyone make any sense of this?

Thanks!

kynn



___
Info-cvs mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/info-cvs


Help! Branch/attic mess

2004-06-03 Thread kynn




I am a CVS newbie, and I'm having a very hard time with some very
basic CVS concepts.

The interaction below illustrates the sources of my confusion.
Basically, I start a project Foo which initially consists of a single
file foo.  Afterwards, I add and commit a new file bar.  Finally, I
issue a cvs status -v command.  (I've numbered the lines and
inserted a few comments, preceded by ###).

 1  % CVSROOT=/home/jones/cvs_test
 2  % rm -rf $CVSROOT/Foo
 3  % mkdir -p Foo  rm -rf Foo/*
 4  % cd Foo
 5  ### generate a file for CVS to act on
 6  % touch foo
 7  ### import and check out
 8  % cvs -d $CVSROOT im -m '' Foo trunk start
 9  N Foo/foo
10
11  No conflicts created by this import
12
13  % cvs -d $CVSROOT co -d . Foo
14  cvs checkout: Updating .
15  U foo
16  ### modify a CVS-controlled file
17  ### create a new file to put under CVS control
18  % touch bar
19  % cvs ad bar
20  cvs add: scheduling file `bar' for addition
21  cvs add: use 'cvs commit' to add this file permanently
22  % cvs ci -m '' bar
23  RCS file: /home/jones/cvs_test/Foo/bar,v
24  done
25  Checking in bar;
26  /home/jones/cvs_test/Foo/bar,v  --  bar
27  initial revision: 1.1
28  done
29  % cvs st -v
30  cvs status: Examining .
31  ===
32  File: bar   Status: Up-to-date
33
34 Working revision:1.1 Thu Jun  3 15:22:24 2004
35 Repository revision: 1.1 /home/jones/cvs_test/Foo/bar,v
36 Sticky Tag:  (none)
37 Sticky Date: (none)
38 Sticky Options:  (none)
39
40 Existing Tags:
41  No Tags Exist
42
43  ===
44  File: foo   Status: Up-to-date
45
46 Working revision:1.1.1.1 Thu Jun  3 15:22:22 2004
47 Repository revision: 1.1.1.1 /home/jones/cvs_test/Foo/foo,v
48 Sticky Tag:  (none)
49 Sticky Date: (none)
50 Sticky Options:  (none)
51
52 Existing Tags:
53  start   (revision: 1.1.1.1)
54  trunk   (branch: 1.1.1)
55



OK, what puzzles me about this is that bar is not associated with
*any* branch, whereas foo is.  This makes absolutely no sense to me.
What gives?

I tried to repeat everything above, but this time specifically
requesting the branch called trunk at checkout time (line 15).

 1  % CVSROOT=/home/jones/cvs_test
 2  % LAB=/home/jones/cvslab
 3  % cd /home/jones/cvslab
 4  % rm -rf $CVSROOT/Foo
 5  % mkdir -p Foo  rm -rf Foo/*
 6  % cd Foo
 7  ### generate a file for CVS to act on
 8  % touch foo
 9  ### import and check out, explicitly requesting the trunk branch
10  % cvs -d $CVSROOT im -m '' Foo trunk start
11  N Foo/foo
12
13  No conflicts created by this import
14
15  % cvs -d $CVSROOT co -d . -r trunk Foo
16  cvs checkout: Updating .
17  U foo
18  ### modify a CVS-controlled file
19  ### create a new file to put under CVS control
20  % touch bar
21  % cvs ad bar
22  cvs add: scheduling file `bar' for addition on branch `trunk'
23  cvs add: use 'cvs commit' to add this file permanently
24  % cvs ci -m '' bar
25  RCS file: /home/jones/cvs_test/Foo/Attic/bar,v
26  done
27  Checking in bar;
28  /home/jones/cvs_test/Foo/Attic/bar,v  --  bar
29  new revision: 1.1.2.1; previous revision: 1.1
30  done
31  % cvs st -v
32  cvs status: Examining .
33  ===
34  File: bar   Status: Up-to-date
35
36 Working revision:1.1.2.1 Thu Jun  3 15:23:13 2004
37 Repository revision: 1.1.2.1 /home/jones/cvs_test/Foo/Attic/bar,v
38 Sticky Tag:  trunk (branch: 1.1.2)
39 Sticky Date: (none)
40 Sticky Options:  (none)
41
42 Existing Tags:
43  trunk   (branch: 1.1.2)
44
45  ===
46  File: foo   Status: Up-to-date
47
48 Working revision:1.1.1.1 Thu Jun  3 15:23:11 2004
49 Repository revision: 1.1.1.1 /home/jones/cvs_test/Foo/foo,v
50 Sticky Tag:  trunk (branch: 1.1.1)
51 Sticky Date: (none)
52 Sticky Options:  (none)
53
54 Existing Tags:
55  start   (revision: 1.1.1.1)
56  trunk   (branch: 1.1.1)


Now the results are even more puzzling.  For starters, when bar is
commited, its corresponding RCS file bar,v is (inexplicably) placed
under $CVSROOT/Foo/Attic.  Moreover, and just as inexplicably, a
second branch (1.1.2) emerges.  So now there are two branches
associated with the same tag trunk, depending on which file one
looks at.  The relationship between these two branches is a mystery to
me.

If someone can explain to me what's going on I'd be most grateful.

Many thanks,

kynn


___
Info-cvs mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo

Re: Help! Branch/attic mess

2004-06-03 Thread kynn


   From: Jim.Hyslop [EMAIL PROTECTED]
   Date: Thu, 3 Jun 2004 12:28:27 -0400 

   [EMAIL PROTECTED] wrote:
The interaction below illustrates the sources of my confusion.
Basically, I start a project Foo which initially consists of a single
file foo.  Afterwards, I add and commit a new file bar.  Finally, I
issue a cvs status -v command.  (I've numbered the lines and
inserted a few comments, preceded by ###).
   [...]
 7  ### import and check out
 8  % cvs -d $CVSROOT im -m '' Foo trunk start
   There's the root of your confusion. The import command is intended to
   import third-party software into your repository, not to create your own
   project.

OK, but how does one get a project started without using import?  The
Cederqvist manual gives no other way to start a project besides using
import (ch. 3).  And going over all the commands listed with cvs
--help-commands, I don't see any other command to start a project
with.

Many thanks for the other clarifications.  It all makes a *lot* more
sense now.

BTW, what got me started looking into all this was trying to find some
algorithm for determining the branch (if any) a given checked out
revision belongs to, based on the info genertated by cvs status -v.
As best as I can figure, this is the algorithm:

  remove the last period and everything that follows it from the
  Working revision; call this the branch revision

  if there is a branch tag, among those listed under Existing Tags
  corresponding to the branch revision, then the checked out revision
  under consideration belongs to it.

  if not, the checked out revision belongs to no branch (i.e. it
  belongs to the trunk).  (As far as I have seen, these cases
  correspond to branch revisions with no periods in them.)

This algorithm is correct for all the cases I've checked, but I can't
say whether it is correct in general.

Thanks!

kj


___
Info-cvs mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/info-cvs


Re: Help! Branch/attic mess

2004-06-03 Thread kynn


   X-Original-To: [EMAIL PROTECTED]
   From: Jim.Hyslop [EMAIL PROTECTED]
   Date: Thu, 3 Jun 2004 14:43:14 -0400 

   [EMAIL PROTECTED] wrote:
OK, but how does one get a project started without using import?  The
Cederqvist manual gives no other way to start a project besides using
import (ch. 3).  And going over all the commands listed with cvs
--help-commands, I don't see any other command to start a project
with.
   That's because there is no single command to do that. You need to add an
   entry to the CVSROOT/modules file, then create the corresponding directory
   in the repository and check it out. From there, you use 'cvs add'.

I suppose I could always do something like

  % cvs im -I'*' -I'.*' -m '' Foo x xx

Surprisingly enough (to me at least), if I do this, then afterwards
CVS doesn't even recognize the vendor tag:

  % cvs co -d . -r x Foo
  cvs [checkout aborted]: no such tag x

BTW, what got me started looking into all this was trying to find some
algorithm for determining the branch (if any) a given checked out
revision belongs to, based on the info genertated by cvs status -v.
As best as I can figure, this is the algorithm:
   [etc].

   Wouldn't it just be easier to look at the sticky tags field of the status
   report? Or am I missing something here?

No, except for my uncanny talent for making things more complicated
than they need to be :) .

Thanks!

kynn



___
Info-cvs mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/info-cvs


Re: Help! Branch/attic mess

2004-06-03 Thread kynn


   From: Jim.Hyslop [EMAIL PROTECTED]
   Date: Thu, 3 Jun 2004 14:43:14 -0400 

   [EMAIL PROTECTED] wrote:
BTW, what got me started looking into all this was trying to find some
algorithm for determining the branch (if any) a given checked out
revision belongs to, based on the info genertated by cvs status -v.
As best as I can figure, this is the algorithm:
   [etc].

   Wouldn't it just be easier to look at the sticky tags field of the status
   report? Or am I missing something here?


Now I remeber why I was not looking at the sticky tag field: it
doesn't necessarily contain the *branch* tag (it can contain a
revision tag, in which case I don't see any way around deducing the
branch tag from the working revision number, as I described).

kynn



___
Info-cvs mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/info-cvs


Re: Help! Branch/attic mess

2004-06-03 Thread kynn



   From: Mark D. Baushke [EMAIL PROTECTED]

   [EMAIL PROTECTED] writes:

OK, but how does one get a project started without using import?  

   A typical set of commands might be

 CVSROOT=/path/to/your/repository; export CVSROOT
 cvs init# create the repository and the CVSROOT module
 cvs checkout -d top .  # checkout all of your modules

Wow.  I've never before seen '.' used in the modules slot for
checkout.  I just scoured the manual trying to find documentation on
this, but no luck.  Is this usage documented anywhere?

BTW, what got me started looking into all this was trying to find some
algorithm for determining the branch (if any) a given checked out
revision belongs to, based on the info genertated by cvs status -v.

   You may find looking in the sources cvs-1.11.16/doc/RCSFILES of interest.

Thanks for the pointer.


kynn


___
Info-cvs mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/info-cvs


How to expunge sick revision?

2002-04-08 Thread kynn





I used cvs remove to get rid of some unwanted files, and CVS
informed me to use commit to make the removals final.  OK, so I did
cvs commit, and CVS proceeded to commit everything in sight, not
just the removals as it had announced.  Among the files it committed
was a source file in a completely sick and dangerous state (it
contains a potentially devastating bug).  So now this completely sick
file is indelibly enshrined in the repository.  It is simply obscene
to have such potentially dangerous code stored in the repository, but
as far as I've been able to find there is nothing I can do about it.
OK, fine.  Life is too short, etc., and I try to get on with mine by
reverting to an earlier (non-buggy) revision of the rotten file; I
pull it out with cvs update -r x.x.  I make some changes, but when I
try to commit them, I get:

  cvs commit: sticky tag `x.x' for file `BloodyMurder.c' is not a branch

So the completely rotten version x.(x+1) that should have never been
stored in the repository in the first place is now blocking my
attempts to commit a correct revision.  How can I fix this horrible
mess?

Thanks,

Kynn

PS: Please, Cc me in your replies.


___
Info-cvs mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/info-cvs



Newbie: nonsensical documentation

2002-03-11 Thread kynn





I'm being forced by my supervisor to start using CVS, which I hate.
The reason I hate it is that every time I've tried to read the
documentation I've found it either incomprehensible or unreliable.  In
my experience, this is par for the course for free software, and
that's why I don't touch it with a ten-foot pole.  But now my job
depends on it, so I desperately need every bit of help I can get...

On page 29, one is instructed to do this:

  $ cd $WDIR
  $ cvs import -m Imported sources yoyodine/$RDIR yoyo start
  $ cd ..

I've done this (though, of course, I've changed yoyodine/$RDIR to
MyModule, and yoyo to $USER).  Next, the instructions say to do
try this:

  $ cvs checkout yoyodine/$RDIR

so I try:

  $ cvs -n checkout MyModule

but I get an error message:

  cvs checkout: cannot chdir to MyModule: Not a directory
  cvs checkout: ignoring module MyModule

Why am I getting the cannot chdir error message?  My CVSROOT
variable is properly set, and the directory $CVSROOT/MyModule exists:

  % ls -ld $CVSROOT/MyModule
  drwxrwsr-x3 kynn   cvs  4096 Mar 11 11:49 /usr/local/cvsroot/MyModule

Thank you for all your help.

kj

P.S. please Cc me in your replies.

___
Info-cvs mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/info-cvs



New to CVS: multiplatform projects

2001-10-01 Thread kynn




I'm new to CVS, and version control in general.  I understand the
basic idea of having a repository that preserves the history over time
of a software project.

My problem is that, for reasons too complex to go into here, I must
manage two parallel Java development projects.  These two projects are
99 % identical, except in the few areas in which one must be
compatible with v. 1.1.8 of the JDK, and the other must be compatible
with v. 1.3 of the JDK.

The v. 1.3 branch is our main area of development, while the v. 1.1.8
one is a secondary effort to satisfy a significant fraction of our
customers who have not upgraded from Mac OS 9 to Mac OS X.

Since the two versions are so similar, it would be convenient to
generate the v. 1.1.8 code by applying patches to the v. 1.3 code.
(If this were C/C++, the situation could be handled trivially with
conditional compilation, but, alas, Java does not have conditional
compilation.)  This seems like a problem well suited to CVS, but all
the introductory material I've read so far centers around the problem
updating versions over time, instead of the problem of generating one
secondary version from a primary one.

It seems to me that, schematically, things would look like this:

 1.3-branch-1.1 --1.1.8-branch-1.1 (patch)

   |
   v

 1.3-branch-1.2 --1.1.8-branch-1.2 (patch)
   .  .
   .  .
   .  .

Hence, CVS would have to keep track of not only the diffs between
successive versions of the 1.3-branch code, but also the diffs between
the 1.1.8-branch and the 1.3 branch.  (It is not clear to me whether
it would be useful to keep track of the diffs between successive
1.1.8-branch versions, even if it were possible).

Can CVS be cajoled into helping with such a problem?

Thanks,

KJ


___
Info-cvs mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/info-cvs