svn Невозможно установить указатель положения в файле

У меня проблема с репозиторием SVN, который до сих пор работал нормально.

Я получаю ошибку

svnadmin: Can't set position pointer in file 'repository/db/revs/0/783': Invalid argument

например, когда я бегу

svnadmin verify

Другие общие симптомы включают неспособность проверить, обновить, зафиксировать и т. Д.

Любая помощь высоко ценится

Спасибо! Питер

4 ответа

ОК... У меня была эта проблема, и я смог ее исправить. Я использую FSFS. Последняя хорошая ревизия, которая была у меня, была Ревизия № 88. Ревизия 89 была сломана.

  1. Я скопировал хранилище и назвал его repository-2018-10-18-broken, Абсолютно сделай это первым!!!

  2. Я удалил следующие файлы в исходном хранилище:

/ Хранилище / дБ / об / 0/89

/ Хранилище / дБ / Свойства ревизии / 0/89

/repository/db/transactions/89*.*

  1. Используя мой верный текстовый редактор, я затем отредактировал файл /repository/db/current и изменил 89 в 88, Я оставил в конце новой линии.

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

Когда возникла такая же проблема, мы смогли отследить ее до отдельной папки, в которой были файлы, которые были перемещены неправильно.

Другие папки разрешили фиксацию и обновление, только при включении этой папки мы получили сообщение о невозможности установить указатель.

Решение было:

  1. Удалите проблемную папку из SVN (игнорировать, рекурсивно)
  2. Снова добавьте папку.
  3. Зафиксируйте папку.

Похоже, это исправило все, что было неправильно.

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

Была такая же проблема с некоторыми файлами. Когда я углубился в указанную папку, хранилище файлов ревизий /db/revs/89 было нулевым файлом. Я предполагаю, что проблема может быть из-за аппаратного сбоя или прерывания питания (репозитории находятся на USB-диске). То, как я это исправил, это скопировать с 88 на 89, и тогда я смог снова отправить изменения.

Единственное решение, которое я смог найти, это сделать копию моего хранилища следующим образом

svnadmin create newrepo
svnadmin dump -r 0:783 repository | svnadmin load newrepo
mv repository repository_corrupted
mv newrepo repository

После этого в каталогах, извлеченных пользователями, обычно требовалась очистка svn.

Самый простой способ для Не могу установить указатель положения в файле:

Я сделал это так:

  1. Перейти в родительский каталог (папку) проекта.
  2. Нажмите правую кнопку мыши
  3. Нажмите на TortoiseSVN, затем нажмите Очистить...
  4. Диалог очистки появится автоматически
  5. Выбрать Clean up working copy status, Break locks, Fix time stamps, Vacuum pristine copies, Refresh shell overlays, Include externals
  6. Pres OK

Проверьте снимки экрана для вашей справки.

Первый шаг:

введите описание изображения здесь

Второй шаг:

введите описание изображения здесь

Надеюсь, что это поможет вам.

Другие вопросы по тегам