Проблема SVN (Subversion) “Файл заплановано додати, але відсутній” - Використання версій


94

Я використовую версії для SVN.

Я намагаюся зафіксувати та отримати таке повідомлення:

Не вдалося зафіксувати (деталі слідують): '/Users/mike/Sites/mysite.com/astss-cvsdude/Trunk/cart/flashfile.swf' планується додати, але відсутній

Припускаю, це тому, що я додав файли до репо, а потім видалив їх через файлову систему.

Я хотів би, щоб він просто занотовував мої зміни та застосував зміни до репо.

Як я можу обійти це?

Відповіді:


120

Я не впевнений, що ви намагаєтесь зробити: Якщо ви додали файл через

svn add myfile

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

svn commit

Якщо ви видалите файл до фіксації, svnвін буде в його записах (оскільки ви його додали), але не можете надіслати його до сховища, оскільки файл більше не існує.

Отже, ви хочете зберегти файл у сховищі, а потім видалити його з робочої копії: у цьому випадку спробуйте повернути файл (зі сміття?), Виконайте комітування та видаліть файл потім через

svn delete myfile
svn commit

Якщо ви хочете скасувати addфайл і просто викинути файл, ви можете перейти до

svn revert myfile

який вказує svn(у цьому випадку) скасувати операцію надбудови.

EDIT

На жаль, я не знав, що ви використовуєте клієнтський графічний інтерфейс "Версії" для Max OSX. Тож спробуйте повернути каталог, що містить файл, за допомогою графічного інтерфейсу, або стрибніть у холодну воду і запустіть свою приховану командну оболонку Mac :-) (це називається "Термінал" у німецькій OSX, не маючи уявлення, як це зробити англійською версія ...)


2
Проблема в тому, що він використовує графічний інтерфейс. Якщо він все одно може використовувати командний рядок, він може просто svn rmфайл, навіть якщо він не існує в каталозі.
Pikrass

Гаразд, я не знав про клієнт "Версії" для OSX. Він все одно повинен мати можливість використовувати "повернути", чи не так? Це працювало б із TortoiseSVN у Windows.
MartinStettner

очищення svn та свз середньоквадратичне значення пізніше ... Дякую за допомогу, хлопці. Чи є спосіб сказати svn: "Дивіться, я додав деякі файли за допомогою диспетчера файлів за замовчуванням для моєї ОС, і зараз, вміст у цій папці, я хочу, щоб поточний стан цього репо був ... тепер дозвольте трапиться ... не кажіть мені, що я можу, а що не можу робити з цими файлами, але так, відстежуйте все це для мене. "?
Mike

1
svn add *Автоматично додає все нові неверсірованние файли, svn commitнегайно зберігає ці зміни в сховище. Afaik не виконує еквівалентну операцію з видалення, тому, якщо ви видаляєте файли, вам доведеться телефонувати svn rmвручну.
MartinStettner

Просто FYI, у мене теж була ця проблема, і svn rmнавіть з --forceне працює, - говорить does not exist. Тож svn revertправильно тут робити.
Мішель Мюллер,

24

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

В основному Версії (насправді Subversion) вважають, що ви все ще хочете додати файл, але він не може його знайти, оскільки ви видалили його у файловій системі. Параметр "Повернути" говорить Subversion забути про його додавання.


Я отримав цю помилку, оскільки видалив папку з ієрархії додатків. Я щойно додав порожню папку з тим самим іменем, і вона спрацювала.
Йог

10

Додавання файлу, а потім його видалення - це операція, яка вважається помилкою - і тому SVN повідомляє вам. Ви сказали йому очікувати якихось файлових даних, а потім не вказувати їх, коли робите, червоні індикатори блимають, а сирени згасають!

Відповідь полягає в тому, щоб скасувати додавання, або зафіксувати файл, а потім використовувати 'svn rm', щоб видалити його з файлової системи та репозиторію.


Я отримую це з Xcode, де я додаю файл, зробив це неправильно або щось інше, і кажу Xcode видалити (перемістити в кошик). На жаль, Xcode залишає його в такому стані і не робить rm зі svn для мене, хоча видаляє файл ...
chadbag

3

Це вирішило мою подібну проблему. Я використав його для скасування змін, потім додав все і здійснив зміни в терміналі за допомогою

svn add folder_path/*
svn commit -m "message"

2

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



0

Якщо ви використовуєте TortoiseSVN ...

У вікні коміту в розділі «Внесені зміни» ви можете вибрати всі порушувальні файли, потім клацнути правою кнопкою миші та вибрати видалити. Завершіть коміт, і файли буде видалено із запланованих доповнень.

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