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 помогло