SVN Can’t open file No such file or directory

Данная заметка - это больше памятка для себя, поэтому пишу практически без вступлений и лишних комментариев.

Ситуация следующая. Одному из разработчиков нужно было сделать чекаут проекта:

1
svn checkout http://domain-name.com/svn/xyz-ios

Во время выполнения операции получили ошибку:

1
2
svn: In directory 'trunk'
svn: Can't open file 'trunk/.svn/tmp/text-base/Default.png.svn-base': No such file or directory

Процедура была прервана. Команда svn checkout работу свою не закончила. В рабочей копии отсутствовали каталоги tags и branches.

Команда svn st отображала, что все файлы в директории trunk находятся не под контролем версий. Какие либо попытки делать svn cleanup не увенчались успехом. Рекомендации из интернета, тоже не помогали.

Посмотреть, что представляет собой последняя ревизия на сервере можно было благодаря Redmine. Указанный файл - Default.png - на сервере был с большой буквы. А файл в рабочей копии оказался с маленькой буквы - default.png.

Проблему решили следующим образом. Скачали предыдущую ревизию:

1
svn checkout --revision 6 http://domain-name.com/svn/xyz-ios

Затем сделали попытку обновления рабочей копии до последней ревизии:

1
svn up ./xyz-ios

И получили ошибку:

svn: Failed to add file ‘xyz-ios/trunk/Default.png’: an unversioned file of the same name already exists

svn status показал следующую картину:

1
2
3
$ svn st
!       .
!       trunk

Попробовали принудительное обновление:

1
2
$ svn up --force
E    trunk/Default.png

И в этот раз получили более приемлемый результат:

1
2
$ svn st
!       trunk/Default.png

Дальше решил переименовать файл default.png в Default.png:

1
2
3
4
$ mv ./trunk/default.png ./trunk/Default.png
Igors-Mac-mini:xyz-ios igor$ svn st
!       trunk/default.png
M       trunk/Default.png

И удалить из рабочей копии SVN файл default.png:

1
2
3
4
5
6
Igors-Mac-mini:xyz-ios igor$ svn delete ./trunk/default.png
D         trunk/default.png

Igors-Mac-mini:xyz-ios igor$ svn status
D       trunk/default.png
!       trunk/Default.png

После чего обновление рабочей копии:

1
2
3
4
5
6
Igors-Mac-mini:xyz-ios igor$ svn up
Restored 'trunk/Default.png'
At revision 7.

Igors-Mac-mini:xyz-ios igor$ svn st
D       trunk/default.png

И коммит:

1
2
3
4
svn commit -m "trunk/default.png was deleted"
Deleting       trunk/default.png

Igors-Mac-mini:xyz-ios igor$ svn st

Сейчас я вижу, что среди последних команд есть лишние и, скорее всего, достаточно было просто удалить командой svn delete файл default.png и сразу сделать обновление.

Статьи и новости схожей тематики:

Оставьте свой отзыв