Svn commit failed: Файл не найден: Транзакция "52-1r"
Минимальный воспроизводимый отказ выглядит следующим образом:
> mkdir test && cd test
> svn co https://svn.server.com/repo .
> vim php/main.php
> svn commit
Sending php/main.php
Transmitting file data ..svn: Commit failed (details follow):
svn: File not found: Transaction »52-1r«, Path »/php/main.php«
svn: Your commit message was left in a temporary file:
Меня озадачивает то, что это чистая проверка, никто не коснулся репо (svn update
до того, как фиксация не имеет значения), и файл существует (я могу ls
it или vim
it).
Единственное примечание в том, что имя папки, которая содержит main.php, изменилось между r1 и r52.
Откуда возникает эта проблема, почему этот файл не может быть найден, если он явно существует? И как я могу это исправить?
Ответы
Ответ 1
Короткий ответ
Моя клиентская версия subversion устарела.
Длинный ответ
Я запускаю MacPorts на моем Mac и почему-то предполагал, что у меня Subversion, установленный как часть этого. Увы, у меня этого не было, а моей командой svn
был Apple по умолчанию svn, version 1.6.17 (r1128011)
, который работает с форматом subversion 10.
Репозиторий запускает svn, version 1.7.13 (r1516569)
, который работает с типом subversion 12.
После обновления (то есть установки) моего локального svn, version 1.8.3 (r1516576)
, который также работает с форматом 12, и svn upgrade
мое дерево локального репозитория для текущей версии, я мог бы без проблем выполнить все мои изменения.
Ответ 2
Вы также получите это сообщение при создании тега с помощью клиента, скопировав его на новый путь, где в репозитории не существует более одного уровня требуемой структуры папок. (Боже, что звучит сложно.)
Другими словами, я попытался создать тег:
/проекты/MyAwesomeProject/теги/myFirstTag
... но папка "теги" еще не существует. Я ожидал, что клиент сделает для меня работу; вручную создание папки "теги" было излечением.
Ответ 3
svn cleanup
помогло