Проблема SVN (Subversion) «Файл запланирован для добавления, но отсутствует» - Использование версий

94

Я использую версии для SVN.

Я пытаюсь зафиксировать и получаю это сообщение:

Ошибка фиксации (подробности см. Ниже): '/Users/mike/Sites/mysite.com/astss-cvsdude/Trunk/cart/flashfile.swf' запланировано для добавления, но отсутствует

Я полагаю, это потому, что я добавил файлы в репо, а затем удалил их через файловую систему.

Я бы хотел, чтобы он просто записал мое изменение и применил его к репо.

Как я могу это обойти?

Майк
источник

Ответы:

121

Я не уверен, что вы пытаетесь сделать: если вы добавили файл через

svn add myfile

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

svn commit

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

Итак, либо вы хотите сохранить файл в репозитории, а затем удалить его из своей рабочей копии: в этом случае попробуйте вернуть файл (из корзины?), Выполните фиксацию и затем удалите файл через

svn delete myfile
svn commit

Если вы хотите отменить add и просто выбросить файл, вы можете

svn revert myfile

который сообщает svn(в данном случае) отменить операцию добавления.

РЕДАКТИРОВАТЬ

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

MartinStettner
источник
2
Проблема здесь в том, что он использует графический интерфейс. Если он все равно может использовать командную строку, он может просто svn rmфайл, даже если он не существует в каталоге.
Pikrass
Хорошо, я не знал о клиенте «Версии» для OSX. Он в любом случае должен иметь возможность использовать «откат», не так ли? Это будет работать с TortoiseSVN в Windows.
MartinStettner,
svn cleanups и svn rms позже ... Спасибо за вашу помощь, ребята. Есть ли способ сказать svn: «Послушайте, я добавил несколько файлов через файловый менеджер моей ОС по умолчанию, и прямо сейчас содержимое этой папки - это то, что я хочу, чтобы текущее состояние этого репо было ... теперь позвольте ему случается ... не говорите мне, что я могу и что не могу делать с этими файлами, но да, отслеживайте все это для меня. "?
Майк,
1
svn add *Автоматически добавляет все новые неверсированные файлы, svn commitнемедленно сохраняет эти изменения в хранилище. Афаик нет эквивалентной операции по удалению, поэтому при удалении файлов придется вызывать svn rmвручную.
MartinStettner,
Просто к вашему сведению, у меня тоже была эта проблема и svn rmдаже с --forceне работает - написано does not exist. Так svn revertчто это правильный поступок.
Мишель Мюллер
24

У меня была такая же проблема с версиями, отображающими одно и то же сообщение. Я просто щелкнул правой кнопкой мыши проблемные файлы и выбрал «Вернуть ...» из контекстного меню, и все было хорошо.

Обычно Versions (на самом деле Subversion) думает, что вы все еще хотите добавить файл, но не может его найти, потому что вы удалили его в файловой системе. Параметр «Вернуть» заставляет Subversion забыть о его добавлении.

mmopy
источник
Я получал эту ошибку, потому что удалил папку из иерархии приложений. Я просто добавил пустую папку с таким же именем, и это сработало.
Йоги
10

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

Ответ состоит в том, чтобы отменить добавление, либо зафиксировать файл, а затем использовать svn rm, чтобы удалить его из файловой системы и репозитория.

gbjbaanb
источник
Я получаю это из Xcode, где я добавляю файл и делаю это неправильно или что-то еще и говорю Xcode удалить (переместить в корзину). К сожалению, Xcode оставляет его в этом состоянии и не выполняет для меня rm из svn, хотя и удаляет файл ...
chadbag
3

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

svn add folder_path/*
svn commit -m "message"
Хосе
источник
2

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

Тоторо
источник
0

Я просто удалил файл из VS, а затем из «Repository Explorer» скопировал файл в рабочую копию.

Бехзад Седигзаде
источник
0

Если вы используете TortoiseSVN…

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

Говард
источник