Cannot get info for a file that was inside of file-replaced directory
From: Иван Селин <ivanselin_at_yandex-team.ru>
Date: Mon, 18 Nov 2019 12:15:16 +0300
I think I've found a bug in subversion client. Setup is as follows:
1. Create directory with a file in it — commit 1
2. Replace directory with other file — commit 2
3. Call "svn info dir/file@1" — it should give information about dir/file at revision 1, but it fails saying that "dir" is a file at latest revision:
svn: E160016: Failure opening '/dir' in revision 2
svn: E160016: '/dir' is not a directory in filesystem '0bc899d5-c233-4fed-98a3-8705ddfc96c4'
But directory can be listed, it shows the file, and file can be listed too:
$ svn info file:///tmp/subversion-info-on-replaced-file/repo/dir@1
Relative URL: ^/dir
Repository Root: file:///tmp/subversion-info-on-replaced-file/repo
Repository UUID: 0bc899d5-c233-4fed-98a3-8705ddfc96c4
Node Kind: directory
Last Changed Author: ivanselin
Last Changed Rev: 1
Last Changed Date: 2019-11-18 11:38:16 +0300 (Пн, 18 ноя 2019)
$ svn list file:///tmp/subversion-info-on-replaced-file/repo/dir@1
$ svn list file:///tmp/subversion-info-on-replaced-file/repo/dir/file@1
So, only "info" does not work. It seems that it's performing directory check against HEAD instead of provided peg revision. Adding --revision key changes nothing. This is trunk svn (1.14.0-dev, r1869957), svn 1.9.7 does not have this bug, it correctly shows info.
Sample reproduction script attached.
This is an archived mail posted to the Subversion Users mailing list.