Як ви подолаєте помилку svn 'застарілий'?


336

Я намагався перемістити структуру каталогів з одного місця в інше в Subversion, але я отримав Item '*' is out of dateпомилку при здійсненні.

У мене перевірена остання версія (наскільки я можу сказати). svn st -uне виявляється відмінностей, крім команд mv.


11
ви спробували svn up?
Sklivvz

3
тривіальна проблема усунення: якщо ви видалите папку та вміст, спочатку видаліть лише вміст, svn, потім видаліть папку, потім svn ще раз.
Fattie

Пов’язана примітка: subversion.apache.org/docs/release-notes/…
bahrep

Відповіді:


636

Я інколи отримую це з TortoiseSVN на windows. Для мене рішення - svn updateце каталог, хоча для завантаження чи оновлення немає змін. Це щось робить з метаданими, що магічно їх фіксує.


4
Я змінив властивість svn: ignore папки та почав отримувати помилку застарілості. Але, як ви сказали, просто оновлення спрацювало.
Сушант

4
Коли я намагаюся оновити цей каталог, я отримую "svn: Два звіти верхнього рівня без цілі" Ще одна причина ненавидіти SVN. З git я ніколи не мав такого типу дурної проблеми з елементарними операціями, як переміщення каталогу.
Дан Даскалеску

У моїй батьківській папці сталася помилка "застаріла" за допомогою графічного інтерфейсу Versions. Я оновив батьківську папку і потім вчинив без помилок.
milesmeow

1
це також було викликано зміною svn: ігноруй мене і оновивши оновлення svn. Дякую!
Натан Шверман

8
У підкліпі використовуйте "Команда -> Оновити до голови". Зі мною добре працює.
NeoRamza

42

Після випробування всіх очевидних речей та деяких інших пропозицій тут, не пощастило, пошук Google призвів до цього посилання (посилання більше не працює) - Subversion говорить: Ваш файл чи каталог, мабуть, застаріли.

Коротше кажучи, хитрість полягає в тому, щоб перейти до каталогу .svn (у каталозі, що містить файл -образник ) та видалити файл "all-wcprops" .

Для мене працювали, коли нічого іншого не робили.


Це зробили! Дякую! У когось є якісь пропозиції щодо того, як це відбувається і як уникнути цього в першу чергу?
Джессі Барнум

Працювали для мене. Мені довелося видалити всі файли "all-wcprops": знайти. -name all-wcprops -exec rm -rf {} \;
Пітер Хаф

Я думаю, ви повинні мати можливість вирішити це за допомогою інструментів і параметрів svn, не видаляючи файли в структурі
серпень

+1, це єдине, що працювало на мене. Іншого рішення цього не зробили.
Клейтон Герцог

9
Якщо я не працюю на мене, all-wcpropsфайлів у .svкаталозі немає
ulkas

39

Я вважаю, що ця проблема походить із файлу .svn. Це або неправильно в старому батьківському, новому або в старому. Я б спробував повернутися до вашої вихідної точки. Використовуйте експорт, щоб отримати чисту копію папки. Перемістіть чисту копію на нове місце та використовуйте додавання та видалення для переміщення. Це вручну робити те, що робить SVN, але це може працювати.


4
Subversion фактично копіює, а потім видаляє, що досить відрізняється від видалення та додавання тут.
SnakE

37

Я виявив, що це працює для мене:

svn update
svn resolved <dir>
svn commit

Працював для мене, не займаючись svn updateраніше, у мене був сценарій, коли я хотів уникнути оновлення. (так що я просто вирішив і
погодився,

це було ліком для моєї ситуації, більше нічого не працювало. Дякую!
texasdave

14

Спробував оновити локальну копію та відновити відповідний елемент, і все-таки отримав помилку "застаріло". Це спрацювало чомусь:

svn update --force /path/to/dir/or/file

11

У мене була однакова проблема в декількох папках, і ось що я зробив:

1) У перспективі "Команда синхронізувати" клацніть правою кнопкою миші на папці> Переосмислити та оновити
2) Знову видаліть папку
3) Здійсніть і будьте щасливі


5

Дякую. Це просто вирішило це для мене. оновлення svn --force / шлях до назви файлу /

Якщо ваш останній файл у локальному каталозі такий же, запитів немає. Якщо файл інший, він запрошує tf, mf і т. Д ... вибір mf (мій повний) гарантує, що нічого не буде перезаписано, і я можу зробити це, коли це зробити.

Джей CompuMatter



4

Як @ Олександр-Клюбін пропонує, перенесіть у сховище. Це також буде набагато швидше, особливо якщо у вас є велика кількість даних для переміщення, тому що вам не доведеться знову передавати всі ці дані по мережі.

svn mv https://username@server/svn/old/ https://username@server/svn/new/

повинен працювати просто чудово


У мене була ця проблема з svn up; svn mvкомандним рядом, і це добре зробило трюк. Дякую.
DopeGhoti

3

Видаліть файл або свій шлях, використовуючи перед виконанням команди, зробіть більшість змін

sudo rm -r /path/to/dir/

після:

svn up and commit or delete 

2

Ви впевнені, що перевірили голову, а не нижчу версію? Також ви зробили оновлення, щоб переконатися, що ви отримали останню версію?

Про це йде дискусія http://svn.haxx.se/users/archive-2007-01/0170.shtml .


Скажімо, ви хочете перевірити стару копію? Що тоді є найпростішим способом змусити контрольну роботу?
OJW

Якщо ви говорите про повернення до старої копії, просто перевірте її, як зазвичай. Він отримає новий номер ревізії.
jgreep


2

Принаймні одна причина помилки повідомлення "застаріла". У моєму випадку проблема була .svn / dir-props, яка була створена за допомогою запуску "svn propset svn: ignore -F .gitignore." вперше. Видалення .svn / dir-props здається поганою ідеєю і може спричинити інші помилки, тому, можливо, найкраще використовувати "svn propdel", щоб очистити помилку "svn propset".

# Normal state, works fine.
> svn commit -m"bump"  
Sending        eac_cpf.xsl
Transmitting file data .
Committed revision 509.

# Set a property, but forget to commit.
> svn propset svn:ignore -F .gitignore .
property 'svn:ignore' set on '.'

# Edit a file. Should have committed before the edit.
> svn commit -m"bump"                   
Sending        .
svn: Commit failed (details follow):
svn: File or directory '.' is out of date; try updating
svn: resource out of date; try updating

# Delete the property.
> svn propdel svn:ignore .              
property 'svn:ignore' deleted from '.'.

# Now the commit works fine.
> svn commit -m"bump"     
Sending        eac_cpf.xsl
Transmitting file data .
Committed revision 510.

2

Якщо ви використовуєте міст github svn, певно, що щось змінилося з боку речей Github. Рішення просте, потрібно просто запустити svn switch, що дозволяє правильно знайти себе, потім оновити і все спрацює. Просто виконайте наступне з кореня вашого каси

svn info | grep Relative 
svn switch path_from_previous_command
svn update

або

svn switch `svn info | grep Relative | sed 's_.*: __'`
svn update

Основа цього рішення походить із блогу Лі Преймсбергера


1

Ви переміщуєте його за допомогою svn mv, чи просто mv? Я думаю, що використання просто mvможе спричинити цю проблему.


1

Я перемістив dir на свою локальну машину для безпечного зберігання, потім svn видалив тупий каталог, а потім здійснив. Коли я намагався додати папку з моєї локальної машини, вона ПОСЛІ викинула помилку (переміщення SVN зробило те саме, що я намагався перейменувати папку). Тож я повернувся, потім зробив mkdir DIRNAME, додав та здійснив. Потім я додав вміст у і вчинив, і він спрацював.


1
Я б уникнув зі зміною вмісту сховища (svn delete), просто тому, що мій локальний замовлення якимось чином пошкоджений.
Ларс Нощинський

1

Я випадково отримав цю помилку після видалення декількох каталогів, у кожному з яких були деякі файли. Я видалив каталоги через Netbeans і зрозумів, що він насправді не видалив їх. Здавалося, просто видалити все, що знаходиться всередині каталогів, і видалило посилання на каталог у Netbeans. Однак вони все ще існували у файловій системі. Переконайтесь, що вони видалені з файлової системи, і спробуйте зробити знову.


1

Якщо одного разу вирішили подібну проблему, просто перевіривши нову робочу копію та замінивши каталог .svn, викидаючи помилки на фіксування, на цю нещодавно перевірену. Причиною в моєму випадку було те, що після пошкодження сховища та відновлення з резервної копії робоча копія вказувала на перегляд, якого не було у відновленому сховищі. Також потрапили помилки "елемент застарілих". Оновлення робочої копії перед фіксацією не вирішило це, але замінило .svn, як описано вище.


1

Я це зробив, і це спрацювало для мене:
1. Зробіть резервну копію свого файлу. Ви можете просто скопіювати свій код у текстовий файл.
2. Клацніть правою кнопкою миші файл, який ви хочете зробити >> Команда >> Показати історію. 3. На панелі "Показати історію" ви побачите всі зміни цього файлу. Клацніть правою кнопкою миші останню версію файлу >> Get Revision: Це змінить ваші локальні зміни.
4. Тепер з’єднайте свій код із останнім файлом із резервним файлом (крок №1).
5. Синхронізуйте та зафіксуйте нещодавно об’єднаний файл.


1

Оновіть ваш сервер і клієнта до Subversion 1.9.

Якщо out of date помилка виникає випадковим чином, коли вона зазвичай не повинна, коли ви виконуєте фіксацію, це може означати, що ви використовуєте застарілий і непідтримуваний Subversion 1.7 або старіший клієнт або сервер.

Вам слід оновити сервер та клієнтів, щоб вирішити проблему. Дивіться відповідну запис Subversion 1.9. Примітки до випуску: "Позастарілі" помилки під час здійснення даних над HTTPv1 .


1
Це навіть трапилося зі мною з TortoiseSVN 1.8.8 на Windows. Оновлення до 1.9 допомогло.
Мартін Печка

1

Помилка полягає в тому, що ви не оновлювали конкретний файл, спочатку оновіть його, а потім лише ви можете зробити файл.


1

Спробував все, окрім змін у .svn безпосередньо. Нічого не допомогло, ось ось моє рішення.

У програмі Eclipse> Window> Show View> History Я бачив, що цей файл не знаходиться на останньому перегляді, хоча я зробив кілька svn "Переосмислити та оновити" / "Відновити" / видалити файл та видалити замовлення.

Тому я зайшов Explorer Package> Клацніть правою кнопкою миші на файл> Замінити на> Останній із сховища .

Ще один погляд у "Історичному перегляді" показав, що файл тепер був на останній редакції.


1

"Очистити" Це приведе вас у дорогу.

Клацніть правою кнопкою миші папку svn і натисніть «Очистити», зробіть це, якщо ви отримаєте цю помилку.


0

Це сталося, коли я оновив гілку попереднього випуску з файлами з магістралі. Я використовував Провідник Windows, щоб скопіювати папки з моєї папки замовлення багажника і вставив їх у мій перегляд Eclipse з папки оформлення відділення випуску. Тепер Провідник Windows був налаштований не показувати "приховані" файли, починаючи з ".", Тож я не забув про те, щоб усі неправильні .svn файли вставлялися в папку замовлення відділення випуску. До!

Моїм рішенням було зняти пошкоджений проект Eclipse, перевірити його ще раз, а потім більш ретельно скопіювати нові файли. Я також змінив Windows, щоб показати "приховані" файли.


0

Я отримав цю помилку при спробі ввести деякі файли, тільки це був файл / папка, яких не було в моїй робочій копії. Я дійсно не хотів переживати клопоту з переміщенням файлів і повторної перевірки, врешті-решт, я врешті-решт редагував файл .svn / entries та видалив посилання каталогів, що ображають.


0

У моєму випадку рішенням було лише видалення локальної версії та повторна реєстрація свіжої копії.


0

Я щойно отримав цю помилку. Я рекомендую вам спочатку перевірити на своєму сервері, чи існує оригінальний файл. Іноді зміни не вносяться у вашу локальну папку. Якщо це ваша ситуація, просто видаліть свою папку та оформити замовлення ще раз.


0

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


0

Просто виконайте svn в командному рядку або якщо ви знаходитесь у Windows, виберіть опцію оновлення svn.

  • Після цього це дозволить зробити подальші дії, такі як вчинення та інші.

0

Я щойно це отримав, коли я намагався commitз trunkкаталогу. Виконання svn updateз trunkкаталогу не вирішило помилку; проте, роблячи svn updateз батьківського каталогу (де.svn належить каталог), вирішили помилку.

Мої здогадки про те, що сталося (у випадку використання, серед іншого, може бути кілька причин цього "svn: E160024: ресурс застарів; спробуйте оновити"): поряд з trunkцим був і branchesкаталог. Я взяв участь branches/branch-1у masterGitHub. Здійснення svn updateз батьківського каталогу (тобто кореня моєї робочої копії) замість того, що, trunkздається, щось зробив branchesна додаток до trunk. Коли я намагавсяcommit знову , помилки не було.

Однак, як я вже говорив вище, це один випадок, напевно, багато інших.

Побічна примітка: на відміну від того, що хтось запропонував, я не вважаю, що це гарна ідея грати в .svnкаталог вручну .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.