Dear Subversion Community,
I ran into a problem with Subversion and I am wondering if it is a new bug, 
or just a loose nut on the keyboard...
When I try to checkout a directory (subset) of an older version, and that 
directory is not a member of the latest version, then I get this error:
  svn: File not found: revision xxx, path '/yyy'
    (where "xxx" is the latest version, not the one I am trying to access,
    and "yyy" is the path of the directory in question)
I read the FAQs and bug reports at subversion.tigris.org and there are a 
couple of similar items there, but nothing exactly like what I ran into.
When I try to checkout the whole (older) version, all works fine.
When I use @PEGREV at the end of the path, it also checks out the older 
version subset -- although I read somewhere that this was a workaround.
And, of course, when I checkout the entire older version (not just a 
subset), then it works fine. 
Export (mis)behaves same in this case as checkout.
It would seem to me that I should be able to checkout a subset of an older 
version -- a sub-version (this being Subversion and all).
I saw this FAQ:
   http://subversion.tigris.org/faq.html#no-copy-history
   ...but in my case no copying or renaming is involved.  I am simply 
removing a directory, but once in a while I need to get the older version 
that still has the directory.
I saw this bug...
   http://subversion.tigris.org/issues/show_bug.cgi?id=2163
   ...but that has a different error message and involves moving 
directories around, which is not my case.
We're using SVN version 1.2.0 on a Red Hat Linux system:
  Linux version 2.4.21-32.0.1.EL (bhcompile@bugs.build.redhat.com) 
  (gcc version 3.2.3 20030502 (Red Hat Linux 3.2.3-52)) #1 Tue May 17
  18:01:37 EDT 2005
Any ideas?  Is this a bug (old or new), or am I expecting too much?
--Mike
----------------------------------------------------------------------
Here is output of a test script that illustrates the problem (with the 
script further below):
+ rep=/tmp/test
+ q=
+ cd /home/mlinda
+ rm -fr /home/mlinda/tmp /tmp/test
+ mkdir -p /tmp/test
+ svnadmin create --fs-type fsfs /tmp/test
+ tmp=/home/mlinda/tmp
+ mkdir -p /home/mlinda/tmp
+ cd /home/mlinda/tmp
+ svn co file:///tmp/test
Checked out revision 0.
+ cd /home/mlinda/tmp/test
+ mkdir -p dir1 dir2
+ svn add dir1 dir2
A         dir1
A         dir2
+ date
+ date
+ svn add dir1/fileA
A         dir1/fileA
+ svn add dir2/fileB
A         dir2/fileB
+ svn ci -m 'first version'
Adding         dir1
Adding         dir1/fileA
Adding         dir2
Adding         dir2/fileB
Transmitting file data ..
Committed revision 1.
+ cd /home/mlinda/tmp/test
+ svn rm dir1
D         dir1/fileA
D         dir1
+ svn ci -m 'second version'
Deleting       dir1
Committed revision 2.
+ cd /home/mlinda/tmp
+ rm -fr test
+ cd /home/mlinda/tmp
+ svn co -r1 file:///tmp/test/dir2
A    dir2/fileB
Checked out revision 1.
+ cd /home/mlinda/tmp
+ echo '  '
  
+ echo 'This next command will give an error message.'
This next command will give an error message.
+ echo 'On my system, the message is this:'
On my system, the message is this:
+ echo 'svn: File not found: revision 2, path '\''/dir1'\'''
svn: File not found: revision 2, path '/dir1'
+ echo '  '
  
+ svn co -r1 file:///tmp/test/dir1
svn: File not found: revision 2, path '/dir1'
+ cd /home/mlinda/tmp
+ svn co -r1 file:///tmp/test/dir1_at_1
A    dir1@1/fileA
Checked out revision 1.
+ cd /home/mlinda/tmp
+ svn co -r1 file:///tmp/test
A    test/dir1
A    test/dir1/fileA
A    test/dir2
A    test/dir2/fileB
Checked out revision 1.
+ echo '  '
  
+ echo 'To clean up, execute these commands:'
To clean up, execute these commands:
+ echo '  cd ~'
  cd ~
+ echo '  rm -fr ~/tmp /tmp/test'
  rm -fr ~/tmp /tmp/test
+ echo '  '
  
----------------------------------------------------------------------
Here is a test script for illustrating this condition.  Change "q=" to 
"q=-q" to see less distractions:
#!/bin/sh
#
# SVN cannot checkout (or export) a directory of an older 
# version when that directory does not exist in the current
# version.
#
# Mike.Linda@gsfc.nasa.gov
# 12 September 2005
# 1. Clean up from any previous runs of this script:
   rep=/tmp/test
   q=
#  q=-q
   cd ~
   rm -fr ~/tmp $rep
# 2. Create an empty SVN repository (under /tmp) called "test":
   mkdir -p $rep
   svnadmin create --fs-type fsfs $rep
# 3. Toward version 1, add some files into subdirectories:
   tmp=~/tmp 
   mkdir -p $tmp 
   cd $tmp 
   svn co $q file://$rep
   cd $tmp/test
   mkdir -p dir1 dir2
   svn add $q dir1 dir2
   date > dir1/fileA
   date > dir2/fileB
# 4. Add new directories and files to the repository, 
#    creating version 1:
   svn add $q dir1/fileA
   svn add $q dir2/fileB
   svn ci  $q -m 'first version' 
# 5. Remove one of the directories with all files, 
#    creating version 2:
   cd $tmp/test
   svn rm $q dir1
   svn ci $q -m 'second version' 
# 6. Clean up:
   cd $tmp
   rm -fr test
# 7. Check out of version 1 a part that also exists in 
#    version 2 (this works fine):
   cd $tmp
   svn co $q -r1 file://$rep/dir2
# 8. Try to check out of version 1 a part that is a member of 
#    version 1, but that no longer exists in version 2 (this 
#    gives errors):
   cd $tmp
   echo "  "
   echo "This next command will give an error message."
   echo "On my system, the message is this:"
   echo "svn: File not found: revision 2, path '/dir1'"
   echo "  "
   svn co $q -r1 file://$rep/dir1
# 9. Note that the same happens with "svn export -r1 ..."
# 10. Note that this works (maybe similar to bug
#     http://subversion.tigris.org/issues/show_bug.cgi?id=2163):
   cd $tmp
   svn co $q -r1 file://$rep/dir1_at_1
# 11. Note that checking out the whole version 1 also works OK:
   cd $tmp
   svn co $q -r1 file://$rep
# 12. Clean up after the test:
    echo "  "
    echo "To clean up, execute these commands:"
    echo "  cd ~"
    echo "  rm -fr ~/tmp /tmp/test"
    echo "  "
# end of script
----------------------------------------------------------------------
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@subversion.tigris.org
For additional commands, e-mail: users-help@subversion.tigris.org
Received on Tue Sep 13 02:54:55 2005