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 и сразу сделать обновление.
Оставьте свой отзыв