System: 5.8-current/amd64

RCS gets confused if the latest revision is an empty file: checking
out any other revision will only produce empty files.

Here's an example:

$ rm -f foo foo,v
$ echo hello world > foo 
$ ci -i -t-bla -l foo
foo,v  <--  foo
initial revision: 1.1
done
$ echo bonjour le monde > foo 
$ ci -msecond -l foo
foo,v  <--  foo
revision 1.2 (locked)
done
$ : > foo 
$ ci -mthird -l foo             # empty file
foo,v  <--  foo
revision 1.3 (locked)
done
$ co -p1.1 foo                  # older revisions check out as empty!
foo,v  -->  standard output
revision 1.1
done
$ co -p1.2 foo
foo,v  -->  standard output
revision 1.2
done

Now we commit a non-empty revision on top:

$ echo hallo welt > foo 
$ ci -mfourth -l foo
foo,v  <--  foo
revision 1.4 (locked)
done
$ co -p1.1 foo                  # older revisions check out correctly!
foo,v  -->  standard output
revision 1.1
hello world
done
$ co -p1.2 foo
foo,v  -->  standard output
revision 1.2
bonjour le monde
done
$ co -p1.3 foo
foo,v  -->  standard output
revision 1.3
done
$ co -p1.4 foo
foo,v  -->  standard output
revision 1.4
hallo welt
done

This bug also affects rcsdiff(1), which in turn causes CVSweb to
display empty diffs, which is how I noticed.

-- 
Christian "naddy" Weisgerber                          na...@mips.inka.de

Reply via email to