Subversion застрял из-за того, что «предыдущая операция не завершена»?


229

Если я пытаюсь обновить мой репозиторий Subversion, он говорит, что я должен запустить очистку. Если я запускаю очистку, он говорит, что файл отсутствует. (Я удалил MASSIVE каталог файлов, которые не удалось зафиксировать сегодня утром, с моего домашнего компьютера, но затем я фиксирую тот же набор файлов с работы, и теперь мой домашний репозиторий обанкротился). Итак, уборка говорит:

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

Если я обновлю это говорит:

Команда: Ошибка обновления: Предыдущая операция не завершена; запустите «очистку», если она была прервана. Ошибка: выполните команду «Очистка». Завершена !:

Как мне это отклеить?


(кроме удаления всей информации SVN и повторной проверки)
coderama

3
эта досадная ошибка - вот почему я ненавижу svn. Каждый раз, когда сталкиваюсь с этим, я должен повторно проверять, потому что очистка из корневой папки или родительской папки не работает. Но самая большая проблема заключается в том, что в это время на нем не отображаются значки наложения, поэтому я не знаю, какой файл был изменен на резервную копию перед проверкой
phuclv

Сообщение @ sigurd-v является реальным ответом на вопрос, который помог мне и многим другим: stackoverflow.com/a/22717607/5613292
Мехди Джаван

Ответы:


102

Я был в подобных ситуациях. Вы пробовали запустить очистку из корня вашего рабочего пространства? Я знаю, что иногда очистка из дочернего каталога (где проблема лежит) не работает, а очистка из корня рабочего пространства - не работает.

Если это по-прежнему не удается, так как вы удалили дочерний каталог где-то. Попробуйте удалить на 1 уровень выше из дочернего каталога (при условии, что он не является корневым) и повторите попытку обновления и очистки.

Если попытки очистки не увенчались успехом на любом уровне, то, к сожалению, ответом является извлечение новой рабочей копии.


4
за чистку от ребенка реж! Меня устраивает!
Франва

1
Если вы читаете это, у вас неприятности :) Я никогда не сталкивался с таким беспорядком с Git (пока). Я заканчивал тем, что чистил / возвращал / чистил и т. Д. В любом каталоге, который мог, если Свен позволил мне.
Алиопи

2
Сообщение @ sigurd-v является реальным ответом на вопрос, который помог мне и многим другим: stackoverflow.com/a/22717607/5613292
Мехди Джаван

Я запустил Очистку из Windows FileExplorer (с Turtoise), и она выдала мне более сложную ошибку, которая указала мне, в каком файле была проблема, каким-то образом SVN потерял этот файл, файл darm * .cache, поэтому я взял другой .cache и переименуйте его, чтобы заменить отсутствующий файл, запустите очистку, никаких ошибок в этом, ВСЕ ИСПРАВЛЕНО !!
Джоллман

331

Часто нет необходимости в новой проверке или копировании.

Я только что решил аналогичную проблему, связанную с ошибкой «предыдущая операция не завершена» с помощью этого ( ссылка )

Кажется, что SVN иногда застревает при обработке команд / операций. Все эти операции хранятся в файле базы данных wc.db в папке .svn.

При загрузке SQLite в мой каталог кассы и работает

sqlite3.exe .svn/wc.db "select * from work_queue"

Вы можете получить список всех ожидающих операций. Это те операции, которые ошибка называет «не завершенными».

Запустив

sqlite3.exe .svn/wc.db "delete from work_queue"

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


5
Вы всегда должны пытаться выполнить очистку, прежде чем пытаться использовать вышеуказанное решение. Это работает, если вы хотите запустить зависший SVN-репозиторий без необходимости извлечения новой рабочей копии.
Сигурд V

7
Загрузка sqlite.exe и запуск удаления были на самом деле быстрее, чем проверка и слияние - отличный ответ
Джеффри Найт

12
Я также получил «заблокирован» после этого, но прошел через «очистку svn»
Джеффри Найт

1
Я запустил это в Debian, установил с помощью apt-get install sqlite3, затем вы можете запустить приведенные выше команды без .exe
Richard Merchant

3
Я также получил сообщение «заблокировано», но затем запустил команду «Очистить», установив флажок с надписью «ломает блокировки», и это сработало
McCoy

114

Запуск консоли svn cleanupрешил ту же проблему для меня.


20
Команда console svn cleanupтакже предоставит более подробную информацию, чем использование подключаемого модуля Tortoise Explorer, что делает его очень полезным в подобных ситуациях.
Брэндон С

7
Запуск консольной команды, вероятно, даст достаточно информации, чтобы действительно решить проблему. Это гораздо лучший ответ.
ДДС

1
ну я выбрал самую верхнюю папку и использовал svn cleanup, спасибо
deadfish

Мне часто удавалось обходить родительские каталоги и убирать их, но это отнимает немного времени и «волшебно». Никогда не знал, что это даст подробную ошибку, +1.
Фил Купер

При запуске svn cleanupубедитесь, что консоль поднята. Сначала я этого не делал и получил red-write: Access is deniedошибку.
Тони

26

У меня просто была похожая проблема. Запуск Process Explorer показал, что другая программа (Notepad ++) имеет дескриптор файла для папки, которую SVN пытался удалить. Когда я закрыл Notepad ++, «Очистить» удалось успешно запустить.


Это может привести к проблеме, упомянутой в вопросе. Но я боюсь, это не может ликвидировать это, если это уже произошло.
Гангнус

19

Я столкнулся с этой проблемой после добавления банку, которая уже находится в SVN, и я добавил новую версию с тем же именем.

В Eclipse я попробовал это

  1. Щелкните правой кнопкой мыши папку> Команда> Обновить / Очистить.
  2. Очистите, создайте и обновите мое приложение.
  3. Перезапустите Затмение.

Используя вышеперечисленные шаги я могу синхронизировать.


1
Работал на меня. Просто третий шаг не обязателен (перезапустите Eclipse).
jpmottin

Это тоже сработало для меня, я много чего пробовал, но ничего не получалось Я закрыл свою визуальную студию и провел уборку. Большое спасибо
AhammadaliPK

18

Здесь я попробовал ответы с наибольшим количеством голосов и несколько других безрезультатно. Мой WORK_QUEUEстол был пуст, и я не смог попробовать очистить папку более высокого уровня. То, что работало, было следующим (это через Черепаху SVN);

  • Щелкните правой кнопкой мыши на папке
  • Перейти к TortoiseSVN -> Очистить ...
  • Убедитесь, что опция Break Locksотмечена и нажмите OK

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


2
Взлом замков не делает то, что я думал. Он только ломает локальные блокировки, которые он использует в вашей системе. Не замки, которые кто-то еще установил.
Брайан Карлтон

1
sqlite3 иногда решал мою проблему, но этот метод был слишком сложен для запоминания, и очистка не удавалась так часто. Этот метод спас меня ..
Sc

9

Попытка запустить очистку, пока ваши файлы открыты, доставила мне проблемы. как только я закрыл свое приложение (Visual studio), я побежал, и все прошло успешно


1
Правда. Убедитесь, что ваши файлы не используются или извлечены другим пользователем, например администратором в Windows.
froggythefrog

6

Я использую черепаху SVN. Если очистка не удалась, проверьте параметр очистки

Убедитесь, что опция Разблокировать блокировки включена.

Шаг очистки

  • левая кнопка мыши в папке исследования
  • выберите «Черепаха SVN» -> «Очистить ...» меню
  • отметьте « Break Locks » и нажмите «ОК»

Уже ответили, но иногда помогает картинка

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


4

Я получил ту же проблему, в моем случае я использовал SVN черепаху с приложением, которое я имею в виду. Используя командную оболочку Windows в режиме root, я применил svn cleanup, а затем svn update .... Затем вы можете вернуться в режим приложения, и он будет работать отлично!


2

Я попытался удалить папку .svn в другое место и поместил ее обратно в ту же корневую папку. После того, как я попытался обновить SVN, он обновился. Я не знаю, как именно это сработало.


2

У меня была та же проблема, и я как-то обнаружил, что у меня есть скрытый файл .svn на уровне c: \. Как только я удалил эту скрытую папку (.svn), все работало нормально. Я должен был непреднамеренно создать рабочий каталог на корневом диске.


2

В моем случае у меня был глоток, который вызвал проблемы. После остановки я смог выполнить команду «Очистка».


Это помогло мне убить нежелательную JVM и прогресс.
Блюдо

2

Привет, ребята, в моих случаях после того, как я закрываю Visual Studio и повторяю попытку очистки, хорошо проведите время


2

Я также застрял с той же проблемой, которую я попробовал удар:

1. Попробуйте убить процесс, связанный с svn, т.е. TSVNCache.exe и TortoiseProc. 2. Восстановление неверсионных файлов и их удаление, которые я имею в SVN. 3. Очистить с помощью командной строки "SVN Cleanup"

и наконец при перезапуске рабочего стола у меня это сработало, поэтому у меня для перезапуска системы сработало


1

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


1

Обходной путь, который работал для меня:

  1. Вырежьте содержимое вашего каталога и скопируйте его в другую папку.
  2. Запустите очистку из командной строки в пустой папке.
  3. Скопируйте файлы обратно в исходную папку.

Готово, но я не могу объяснить, почему это происходит. Если вы не удалите файлы, команда очистки скажет, что он не может читать / записывать эти файлы.


1

У меня была такая же проблема, что работала на меня:

  1. Скопируйте ваши папки и файлы в другое место, скажем, в папку (я недавно изменил свои файлы, и обязательство не удалось и привело к устранению проблемы)
  2. проверить новую рабочую копию
  3. скопируйте измененные файлы из папки в рабочую копию и переопределите существующие файлы. Фиксация / Обновление должно работать сейчас

1

У меня была ошибка, такая как «Невозможно изменить параметры доступа к файлу» /Users/Code/UnitTest.cpp «Нет такого файла или каталога». Подрывная деятельность путает с файлом, которого больше нет. Я просто сделал что-то вроде «echo ABCD >> /Users/Code/UnitTest.cpp», чтобы создать копию файла, а затем очистить. Это сработало.


1

В моем случае ошибка возникла при попытке зафиксировать из IDE. Когда я выполнил фиксацию тех же каталогов с помощью TortoiseSVN в проводнике, операция прошла успешно.


1

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

Пример: используя внешний ^/widgets/foo common/foo-widget, сначала выполните очистку папки common/foo-widget.


1

Я исправил эту ошибку сегодня, когда она произошла, пытаясь зафиксировать SVN. Ошибка была подлинной, TortoiseSVN не смог получить доступ к файлу, который я пытался зафиксировать. Этот файл был сохранен при запуске программы «Как администратор» в Windows. Это означает, что файл имеет доступ администратора, но не доступ из моей учетной записи (TortoiseSVN работает как интерактивный пользователь). Я вступил во владение назначенным файлом под своей учетной записью Windows, и после этого очистка смогла продолжить.


0

Я изначально получил эту проблему, пытаясь зарегистрироваться с TortoiseSVN. Первоначально и TortoiseSVN clean, и консольная очистка svn завершились неудачно с сообщениями, подобными исходному постеру.

Но мое решение (случайно обнаруженное) состояло в том, чтобы просто подождать несколько минут. Я думаю, что TSVNCache держал некоторые из этих файлов во время регистрации.


0

выполните следующие шаги.

1) Перейдите в каталог, где вы не можете успешно очистить через svn. (Корневая папка или дочерняя папка).

2) Выберите .svnпапку в каталоге, вырежьте эту папку и вставьте ее на отдельный диск или в другое место (вне каталога svn)

3) Теперь вернитесь в каталог - щелкните правой кнопкой мыши и выберите TortoiseSVN -->Repo-browser

4) Checkoutпапка (она не будет выполнять новую проверку).

5) Все ваши элементы будут версионированы снова, и это исправит внутреннюю проблему svn, и проблема должна быть решена.


ТОЛЬКО выполнить полную проверку. любая помощь ?
candidJ

0

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


0

Я взял папку .svn у моего коллеги-разработчика и заменил на нее папку .svn. Это сработало для меня. Не знаю, какие могут быть другие последствия!


0

Используя эту ссылку, https://tortoisesvn.net/docs/nightly/TortoiseSVN_en/tsvn-dug-cleanup.html

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


0

Это может произойти, если у вас есть файлы, которые открыты при попытке включить / очистить SVN.

У меня была ветка, где я создал новый файл, который я открыл в другом приложении. Переключение на другую ветку не может удалить файл, вызывая сбой коммутатора. Это также приводило svn cleanupк сбою, однако это не отображается в качестве причины в пользовательском интерфейсе SVN Tortoise.

Запуск svn cleanupиз окна консоли (в корневой папке) ясно показывает ошибкуfile\location\file.ext: The process cannot access the file because it is being used by another process

Закрытие любых открытых файловых дескрипторов / окон и запуск консоли svn cleanupзатем позволяет очистке работать правильно.

Короткая история - запустите svn cleanupв консоли, чтобы увидеть более подробную ошибку.


0

В дополнение к ответу Sigurd V (сначала попробуйте), некоторые большие базы кода имеют несколько папок '.svn', и это не обязательно та папка в корневом каталоге, в которой есть заблокированная задача.

Если это так, вы должны проверить каждый. Если у вас уже есть SQLite и Powershell, вы можете быстро найти проблемный каталог.

Чтобы узнать, какие папки заблокированы, запустите (замените path\to\sqlite.exe):

Get-ChildItem -Path . -Filter '.svn' -Recurse -Hidden | foreach { $toFind = $_.FullName + "\wc.db" ; gci $toFind | foreach { echo $_.FullName ; path\to\sqlite.exe $_.FullName "select * from work_queue" } },

Это дает список каталогов .svn и, под каждым, список текущих задач.

Если есть такие с незавершенными задачами, для каждого запуска (замена path\to\sqlite.exeи path\to\.svn\wc.db):

path\to\sqlite.exe path\to\.svn\wc.db "delete from work_queue"


0

Я видел несколько проблем svn, в том числе эту, решенную путем удаления / создания .svn/tmpкаталога. Тогда бегиsvn cleanup


-3

Пожалуйста, перейдите по этой ссылке. Это решит вашу проблему полностью.

Перейдите в основной каталог, щелкните правой кнопкой мыши -> Черепаха SVN -> Очистить

https://tortoisesvn.net/docs/nightly/TortoiseSVN_en/tsvn-dug-cleanup.html


1
Чем это решение отличается от решения Джошуа МакКиннона, полученного несколько лет назад?
Якобом
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.