Невозможно зафиксировать в Subversion - PullRequest
33 голосов
/ 04 декабря 2008

У меня есть клиент, которому пришлось перестраивать свой сервер автоматической сборки. Он извлек папку своего проекта с моего сервера Subversion, но теперь больше не может коммитить - он получает эту ошибку:

Error: Commit failed (details follow):  
Error: Cannot write to the prototype revision file of transaction
'551-1' because a   
Error: previous representation is currently being written by another
process  
Finished!:   

Я искал в Google, но, хотя об этой ошибке часто сообщалось, четкого объяснения нет - у кого-нибудь в StackOverflow есть решение?

ОБНОВЛЕНИЕ: никто больше не фиксирует в этом хранилище, поэтому транзакция не зависла (по крайней мере, от другого пользователя). В итоге мы обнаружили, что права доступа были установлены неправильно. Не то чтобы вы узнали об этом из этого сообщения, но это устранило проблему.

Ответы [ 18 ]

43 голосов
/ 11 марта 2010

Вы можете удалить эту ошибку без перезагрузки:

  1. Определите (или создайте) каталог в корневом SVN-репозитории, который не был частью неудачной фиксации.

  2. Создайте новый файл в каталоге из шага 1.

  3. Зафиксируйте новый файл (и каталог, если он создан на шаге 1). Поскольку файл новый, он не конфликтует с предыдущей фиксацией и может обновить версию # на сервере.

  4. Зафиксировать исходные файлы / каталоги.

  5. Удалить новый файл (и каталог, если он создан на шаге 1).

  6. Зафиксировать все дерево.

** Шаги 5 и 6 не требуются, но мне нравится держать мой репозиторий в чистоте ...

Я часто получаю эту ошибку, потому что SVN часто выходит из строя во время фиксации моих больших файлов, что, в свою очередь, заставляет последующие коммиты пытаться записать ревизию, которая была прервана.

15 голосов
/ 05 декабря 2008

У меня была похожая проблема, за исключением сообщения «... предыдущее представление в настоящее время записывается ЭТОМ процессом».

svnadmin lstxns не показывал никаких транзакций.

Перезапуск Apache решил проблему для меня.

9 голосов
/ 04 декабря 2008

В вашем хранилище застряла транзакция. Вы можете использовать команду svnadmin для ее восстановления. Как и все другие утилиты svn, svnadmin принимает команду, за которой следуют параметры (обычно это просто каталог репозитория). svnadmin должен быть запущен на сервере с хранилищем.

Сделайте что-то вроде этого:

svnadmin lstxns /path/to/repository

, чтобы получить список транзакций в процессе (там вы должны увидеть ваш оскорбительный номер 551-1). Затем вы можете решить, как лучше восстановиться после этой ошибки ... svnadmin также имеет команду rmtxns для удаления ошибочной транзакции. Для получения дополнительной информации, выпуск:

svnadmin help

или посетите веб-сайт tigris: http://subversion.tigris.org/. Вы также можете получить более подробную справку по конкретным командам, выполнив команду help с названием интересующей вас команды. Например:

svnadmin help lstxns

Очевидно, вам понадобится доступ оболочки к серверу хранилища и права на запись в хранилище для использования svnadmin. Если вы используете репозиторий в формате Berkely DB, вам следует приостановить работу демона svnserve (если вы его используете) и любой доступ к web_dav / web_svn, чтобы гарантировать, что вы не повредите базу данных при выполнении команд svnadmin.

5 голосов
/ 12 июля 2010

Для меня проблема была решена (как подсказано в обновлении вопроса) путем изменения разрешений моей локальной папки (не репозитория). В Windows Vista вы делаете это, щелкая правой кнопкой мыши по папке и в свойствах / безопасности вы меняете права доступа.

Сообщение об ошибке не очень хорошее, и найти ответ было непросто, поэтому я надеюсь, что мой ответ поможет другим людям решить эту досадную проблему, но, с другой стороны, просто решить проблему.

3 голосов
/ 19 января 2010

Была такая же проблема, перезапуск apache исправил проблему.

2 голосов
/ 31 марта 2010

Натолкнулся на эту же проблему после того, как я отменил коммит в процессе. После выполнения команды svnadm rmtxns с номером транзакции для удаления я все еще получил сообщение. Я использую webdav с apache, поэтому я перезапустил apache, как предложено (/ sbin / service httpd restart). Работали.

1 голос
/ 24 декабря 2008

«Невозможно записать в файл версии прототипа транзакции» Перезапуск apache также исправил эту проблему для меня. Я отправляю сообщение, чтобы что-то полезное действительно попало в топ Google.

Удачи!

1 голос
/ 04 декабря 2008

Я не видел этого, но при появлении сообщения об ошибке, я предполагаю, что что-то застряло при записи файла. Я бы попробовал перезапустить сервер процесса / перезагрузки сервера SVN.

1 голос
/ 07 ноября 2015

Вы должны изменить права доступа к каталогу репозитория

sudo chown -R www-data:www-data /home/pi/repos/
sudo chown -R www-data:www-data /home/pi/repos/myProject
0 голосов
/ 18 декабря 2015

Время от времени возникает одна и та же проблема. Мы пытались:

Локально: Retry свн чистый SVN обновление убить все svn процессы

Сервер: Проверьте на открытые темы Отказов SVN

В настоящее время единственное исправление, которое у нас есть, - это удалить все содержимое из файла и зафиксировать. После успеха мы вставляем содержимое файла обратно и фиксируем снова. Если возникает та же ошибка, мы медленно заполняем файл снова несколькими байтами за раз, пока не сможем зафиксировать все это.

Обычно это происходит с одним файлом в коммите, и мы фиксируем каждый файл по отдельности, пока не выясним, какой файл вызывает проблему. Затем мы приступаем к вышеупомянутому процессу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...