Я отримую цю помилку, коли роблю svn update
:
Робоча копія XXXXXXXX заблокована. Виконайте команду "Очищення"
Коли я запускаю очищення, я отримую
Під час очищення не вдалося обробити такі шляхи: XXXXXXXX
Як я вийду з цієї петлі?
Я отримую цю помилку, коли роблю svn update
:
Робоча копія XXXXXXXX заблокована. Виконайте команду "Очищення"
Коли я запускаю очищення, я отримую
Під час очищення не вдалося обробити такі шляхи: XXXXXXXX
Як я вийду з цієї петлі?
Відповіді:
Одним із підходів було б:
Іншим варіантом буде видалити папку верхнього рівня та перевірити ще раз. Сподіваємось, це не дійшло до цього.
Для мене хитрість полягала в тому, щоб запускатись svn cleanup
у верхній частині моєї робочої копії, а не в папці, де я працював увесь час до появи проблеми.
Подивіться у свою .svn
папку, там буде файл, який називається lock
. Видаліть цей файл, і ви зможете оновити. У .svn
каталозі кожного підкаталогу може бути більше файлів блокування . Їх також потрібно буде видалити. Це можна зробити як пакет досить просто з командного рядка з напр
find . -name 'lock' -exec rm -v {} \;
Зауважте, що ви вручну редагуєте файли в .svn
папці. Їх помістили не просто так. Ця причина може бути помилкою, але якщо ні, то ви можете пошкодити локальну копію.
find . | grep ".svn/lock" | xargs rm
У моєму випадку я вирішив це, видаливши запис вручну в таблиці SQLite ".svn \ wc" в блоці запису WC_LOCK.
Я відкрив файл "WC" за допомогою редактора SQLite і виконав
delete from WC_LOCK
Після коментаря eakkas вам може знадобитися також видалити всі записи з WORK_QUEUE
таблиці.
Найпростіший спосіб коли-небудь:
Clean up working copy status
, Break locks
, Fix time stamps
, Vacuum pristine copies
, Refresh shell overlays
,Include externals
Ви успішно зробили свою роботу.
Перевірте знімки екрана для ознайомлення.
Перший крок:
Другий крок: Увімкніть параметр "Блокування блокування" (другий прапорець у спливаючому вікні очищення)
Сподіваюся, що це вам дуже допоможе.
Колега на роботі постійно бачить це повідомлення, і для нього це тому, що він видалив каталог під контролем версій SVN, не видаляючи його з SVN, а потім створив новий каталог на своєму місці, не під контролем версій, з тим самим ім'ям.
Якщо це ваша проблема ...:
Існують різні способи виправити це залежно від того, як / чому було замінено каталог.
У будь-якому випадку вам, ймовірно, потрібно буде:
A) Перейменуйте існуючий каталог у тимчасове ім'я
В) Зробити SVN для відновлення каталогу, видаленого з файлової системи, але не з SVN
Звідти ви й хотіли б
A) Скопіюйте відповідні файли в каталог, який було видалено
B) Якщо у вас відбулася значна зміна вмісту в каталозі, видаліть SVN на оригіналі, зробіть і перейменуйте новий каталог на потрібне ім'я, після чого додайте SVN, щоб отримати цей під контролем версій.
Для мене жодне з перерахованих вище рішень не спрацювало. Я знайшов рішення, зламавши замки. Коли я виконував очищення svn, я вибрав "Break Locks" разом із "Очистити стан робочої копії".
Цей працював на мене.
Після очищення це дозволить вам оновити до останньої версії.
Clean up working copy status
і Breaks locks
таInclude externals
Для мене це була насправді вина Черепахи. Черепаха просто поскаржилася "не можу очистити, запустити очищення", але коли я запустив командний рядок (очищення svn), він чітко сказав мені, що не може видалити деякі файли, які використовуються, рішення яких було очевидним. Як тільки я закрив Visual Studio (який зберігав файли відкритими), тоді очищення спрацювало чудово.
Інші програми також можуть тримати файли відкритими в РЕПО, викликаючи цю проблему. Excel, який тримає xls відкритим, був винуватцем в іншому випадку, тому може бути розумним закрити всі програми, які можуть використовувати що-небудь в репо або навіть перезавантажити, щоб змусити програми закритись та повторити спробу очищення.
У мене виникла ця проблема, оскільки зовнішні папки не хочуть пов’язуватись із наявною папкою. Якщо ви додасте лінію властивості svn: externals, де адресатом є існуюча папка (у версії або без версії), ви отримаєте помилку заблокованої копії SVN Woring Copy. Тут очищення також скаже вам, що з усім все в порядку, але все ж оновлення не буде працювати.
Рішення: Видаліть тривожну папку з сховища та проведіть оновлення в кореневій папці, де встановлено властивість svn: externals. Це створить папку і все знову буде добре.
Ця проблема виникла у мене, оскільки svn: externals для файлів вимагає керування версією цільової папки. Після того як я помітив, що це не працює в різних сховищах, я перемінився із зовнішніх файлів у зовнішню папку і потрапив у цей безлад.
Найпростіший спосіб зробити це - показати приховані папки, а потім відкрити папку .SVN. Ви повинні побачити нульовий файл КБ з назвою "замок", видалення це вирішить проблему
Я зіткнувся з точно такою ж проблемою, використовуючи SVN 1.7, і жодне з вищезгаданих виправлень не працювало.
Найперше, переконайтеся, що ви створюєте резервну копію всього відредагованого вмісту.
Провівши пару годин (не перезавантажував усе, оскільки моя гілка перевищує 6 Гб), я виявив, що в папці .svn вашого відділення є файл db під назвою "wc".
Відкрийте файл db за допомогою будь-якого db-менеджера (я використовував плагін менеджера sqlite для firefox) та перейдіть до таблиці WC_LOCK. Ця таблиця містить записи для придбаних замків. Видаліть записи з таблиці, і ви закінчите :)
Коли у мене є ця проблема, я виявляю, що команда очищення безпосередньо на шляху до проблеми, як правило, працює. Потім я знову запущу очищення від робочого кореня, і він поскаржиться на якийсь інший каталог. і я просто повторюю, поки не перестане скаржитися.
Якщо ви працюєте на машині Windows, перегляньте сховище через браузер, і ви, можливо, побачите два файли з однаковим іменем файлу, але використовуючи різні регістри. Subversion залежить від регістру, і Windows - це не так, що ви можете заблокувати, коли Windows думає, що витягує той самий файл, а Subversion - ні. Видаліть дублікати імен файлів у сховищі та повторіть спробу.
Я зробив це, просто створивши нову папку, перевіривши проект, скопіювавши оновлені файли в нову папку.
Це було зафіксовано за допомогою свіжої каси.
Ви використовуєте TortoiseSVN та щойно оновлені? У мене була ця проблема раніше, коли я переходив з 1,4 до 1,5 і не перезавантажувався. (Спробуйте перезавантажити).
Причина, яку вам потрібно перезавантажити, полягає в тому, що файл кешу стає все більш фанк.
В іншому випадку, щоб просто перейти, експортуйте цю робочу копію в нову папку (не копіюйте приховані папки .svn), повторно оформити проект і перенести весь код назад, а потім продовжувати виконувати.
просто видаліть папки .svn, а потім запустіть очищення у батьківській директорії. Працює чудово !!
У мене часто трапляється таке питання. Моя схема, яка викликає проблеми з очищенням.
Закриття програми перегляду зображень, де відкритий файл відкритий, вирішує проблему. Можливо, інше програмне забезпечення може заблокувати очищення аналогічно.
В загальному. Я вважаю, що перезапуск комп'ютера може допомогти в таких випадках.
SVN зазвичай оновлює свою внутрішню структуру (.svn / prop-base) файлів у папці до отримання фактичних файлів із сховища. Після отримання файлів це буде очищено. Часто помилка видається через те, що "оновлення" не вдалося або передчасно скасувалося під час оновлення.
Тепер оновлення має працювати.
Була така ж проблема, тому що я експортував папку в папку, керовану версією. Довелося видалити папку з TortoiseSVN, потім видалити папку з файлової системи (TortoiseSVN не любить неперевершені підпапки ... чому б не ???)
Не видаляйте своє рішення!
у папці .svn у вас є файл з назвою блокування, він довжиною 0 байтів
Ви можете видалити всі ці файли з усіх .svn папок у своєму рішенні, і це спрацює
Це спрацювало в моєму випадку
Інверсія файлів на місці та нова перевірка того ж місця вирішила для мене цю проблему.
У TortoiseSVN, щоб здійснити інверсію на місці, перетягніть правою рукою папку кореня робочої копії зі списку файлів на себе у дереві каталогів та виберіть зі спливаючого меню пункт "Експорт SVN-версій сюди". TortoiseSVN помічає, що пункт призначення збігається з джерелом, і пропонує розвернути робочу копію.
Після перевертання зробіть новий замовлення в ту саму папку (яка тепер містить неперевершену копію всіх файлів, які ви мали). TortoiseSVN попередить вас, що ви перевіряєтесь у наявну папку, але можете продовжити.
Після цього очищення, оновлення та інші операції працювали без перешкод. Оскільки обидва вищезазначені етапи зберігають локальні модифікації, втрати інформації не повинно бути (але резервне копіювання робочої копії до цього може бути гарною ідеєю).
Одне попередження: Якщо робоча копія містить змішані версії або невідомі зміни властивостей, ця інформація буде втрачена. Для мене це нечасте явище, і зважаючи на вибір пошкодженої робочої копії або втрати невмілих змін властивостей, я схильний вибирати останні.
У мене була ця проблема, коли "очищення" працювало, але "оновлення" продовжувало б виходити з ладу. Вирішенням цього завдання було видалення відповідної папки за допомогою Провідника Windows, а не видалення TortoiseSVN (яке позначає видалення як щось, що потрібно скопіювати у сховище, а потім я зробив "замовлення", щоб по суті "оновити" папку з репозиторію.
Більше інформації про різницю між видаленням O / S та SVN видаленням тут: http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-rename.html
Зокрема:
Коли ви TortoiseSVN → Видалити файл, він вилучається з робочої копії негайно, а також відмічається для видалення в сховищі при наступному фіксації.
І:
Якщо файл видалено через провідник замість контекстного меню TortoiseSVN, діалогове вікно фіксації показує ці файли і дозволяє вам також видалити їх з контролю версій перед фіксацією. Однак якщо ви оновите свою робочу копію, Subversion виявить файл, що відсутній, і замінить його на останню версію зі сховища.
Якщо ви працюєте в Linux, спробуйте це:
find "/the/path/to/your/directory" -name .svn -type d | xargs chmod 0777 -R
Потім запустіть cleanup
команду в цьому каталозі, а потім спробуйте оновити.
Щоб вирішити свою проблему, я зробив наступне:
У провіднику рішень клацніть правою кнопкою миші проект, у відкритому підменю натисніть на підрив та виберіть очищення. Це вирішить проблему, як це було для мене. Сподіваюся, це спрацює.