info-cvs
[Top][All Lists]
Advanced

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

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


From: kynn
Subject: CVS bug? "cvs checkout: move away bar; it is in the way"
Date: Sat, 5 Jun 2004 11:10:47 -0400 (EDT)




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





reply via email to

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