Я столкнулся с проблемой в репозитории Apache Subversion и ищу лучшее решение:
Я не могу зафиксировать репозиторий Subversion и получаю сообщение об ошибке:
svn: E720002: Ошибка фиксации (подробности следуют): svn: E720002: Не удается открыть файл «C:\Repositories\myproject\db\txn-current»: система не может найти указанный файл.
Если я создам пустой файл txn-current
, если при фиксации будет получена еще одна ошибка:
svn: E070014: Ошибка фиксации (подробности следуют): svn: E070014: Не удается прочитать файл «C:\Repositories\myproject\db\txn-current»: найден конец файла
ПРИМЕЧАНИЕ. Предположим, что у меня нет резервной копии репозитория, поэтому мне нужно исправить проблему вручную.
Такое же поведение уже обсуждалось на StackOverflow: проблема фиксации svn, невозможно прочитать 'd:\UC\db\txn-current': найден конец файла. Однако я сомневаюсь, что ответы там действительно полезны:
Я не думаю, что создание
\db\txn-current
вручную и добавление туда0
(или любого другого целого числа) является хорошим решением. Я предполагаю, что это может привести к неожиданному поведению в ближайшем будущем,svnadmin recover
и/илиsvnadmin verify
не создают и/или не заполняютtxn-current
. Эти команды беспомощны в данном случае.
Согласно описанию FSFS \db\txn-current
файл содержит следующий номер ключа транзакции. Если я помещу какое-то целое число в файл, тогда я смогу зафиксировать, и целое число увеличится на 1.
Однако похоже, что добавление какого-то нерелевантного целого числа может сломать что-то в моем репо, и я не хочу, чтобы это произошло.
Файл «txn-current» представляет собой файл с одной строкой текста, который содержит только число base-36. Текущее значение будет использоваться в имени следующей транзакции вместе с номером версии, на которой основана транзакция. Этот порядковый номер гарантирует, что имена транзакций не будут использоваться повторно, даже если транзакция прерывается и начинается новая транзакция, основанная на той же версии. Единственная операция, которую FSFS выполняет с этим файлом, — «получить и увеличить»; файл «txn-current-lock» блокируется во время этой операции.
Что мне нужно сделать, чтобы правильно решить проблему \db\txn-current
? Какое целое число я должен поместить в файл? Есть ли другой способ решить эту проблему?
ИЗМЕНИТЬ:
- Как я могу решить ту же проблему (несуществующую или пустую), но для файла
db/current
?
db/current
файлом? - person user13107   schedule 30.10.2012