Отсутствующие предупреждения файла, появляющиеся после обновления до Xcode 4

166

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

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

Я посмотрел вокруг и не нашел, как я могу сказать XCode, что эти файлы исчезли, перестать давать мне предупреждения. Вот скриншот, который я получаю в Xcode4, но никогда не получаю в Xcode 3.

Отсутствует предупреждение о файле Xcode 4

Скотт
источник
Если бы я был тобой, я бы всегда импортировал твои файлы в твой проект, а не просто сохранял ссылку на них на своем диске. Это действительно избавит вас от головной боли, если вы переместите файлы позже.
sudo rm -rf

Ответы:

297

Эти решения слишком сложны. Проблема в том, что вы удалили проект из файловой системы, но SVN все еще думает, что они там есть. Будет работать отключение проекта от SVN, то же самое для удаления папок .svn, НО, что приведет к разрушению вашего хранилища!

Гораздо проще открыть консоль, перейти в свою папку («cd / pathToYourFolder») и ввести следующую команду:

svn delete nameOfMissingFile

Если имя отсутствующего файла содержит символ @ (например, изображение, относящееся к сетчатке), убедитесь, что имя файла заканчивается символом @:

svn delete nameOfMissingFile@2x.png@

Для GIT-репозиториев:

git rm nameOfMissingFile

Sulthan
источник
20
У меня была такая же проблема, и я решил ее через терминал, используя:svn rm --force nameOfMissingFile
ReachWest
1
Это лучший ответ, чем тот, который помечен как правильный. Удаление папок SVN из проекта, находящегося под контролем SVN, может быть очень болезненным. Лучше всего использовать SVN для решения проблемы. Я последовал этому ответу, чтобы решить свою собственную проблему, однако у меня была роскошь Cornerstone. Но в остальном круто. Спасибо :)
Джоуи
1
Кажется, это не работает для меня. Я бы добавил файл обратно, а затем удалил его, но то же самое предупреждение все еще появляется в сборке. Я даже пытался добавить файлы обратно в проект, а затем удалить их. Все та же проблема.
Yenyi
10
Это сработало для меня, но мне сначала нужно было создать фиктивный файл, прежде чем я смог удалить его, используя svn. Таким образом, вы должны сделать прикосновение nameOfMissingFile, а затем svn удалить nameOfMissingFile --force
Maciej Swic
9
Мне также пришлось выйти и убить xcode для решения проблемы.
Twilite
55

В XCode 4.2. + (Возможно, в 4+) вы можете избежать ручной работы и командной строки:

  1. Выбрать проект Project Navigator (Command - 1)
  2. Выберите Файл - Контроль источника - Меню фиксации
  3. На левой панели у вас есть три иконки, выберите среднюю - Просмотр файла
  4. Вы увидите список всех отсутствующих файлов
  5. Выберите все из них и щелкните правой кнопкой мыши - Отменить изменения. Это восстановит все удаленные файлы с сервера SVN и поместит их в вашу локальную папку SVN.
  6. Перетащите эти файлы в проект XCode (выберите «Дата сортировки, измененная в Finder», чтобы легко их найти)
  7. Удалите эти файлы должным образом через XCode (выберите файлы и нажмите правой кнопкой мыши Удалить)
  8. Зафиксируйте проект

И это все :)

Все эти мерзкие предупреждения исчезли!

Дополнительно для Xcode 6+: После выбора вида файла «средний значок» - вы можете установить флажок слева, и это пометит их как удаленные для SVN, когда вы будете в следующий раз фиксировать!

Alex
источник
1
Требовалось только до шага 5. На самом деле у меня не было файлов в SVN.
Даррен Рили
Я провел рефакторинг проекта, который затронул другой проект из-за некоторого общего кода, и XCode жаловался на отсутствующие файлы, связанные с SVN. Мне потребовалось некоторое время, чтобы понять, что это была проблема с SVN, после ручного просмотра исходного кода проекта xml и ничего не найдя.
Дэнфордхэм
50

В Xcode5 & Xcode6 у меня сработали следующие шаги

Xcode-> Preferences-> Source Control->uncheck Enable Source Control

затем

Xcode-> Preferences-> Source Control->check Enable Source Control

Шамсудхин Т.К.
источник
На Xcode 8.3.2 это работало в течение приблизительно десяти минут, и затем все предупреждения вернулись снова :(
Боб
27

Это как-то связано со скрытыми папками .svn в вашем проекте.

Я решил эту проблему, отсоединив проект от SVN.

а. Откройте терминал и введите следующие команды:

defaults write com.apple.finder AppleShowAllFiles TRUE


killall Finder

Это позволит вам просматривать папки .svn внутри вашего проекта

б. Удалите все папки .svn в папках / подпапках вашего проекта

с. Повторно включите скрытые файлы:

defaults write com.apple.finder AppleShowAllFiles FALSE

killall Finder

д. Теперь ваш проект отделен от svn, и у вас больше не возникает проблем со сборкой.

е. Повторно добавьте свой проект в SVN или что-то еще.

Я сам начинающий, и это был мой способ решения этой проблемы, поэтому я не уверен, что это лучший путь. Во всяком случае, проблема была решена.

Роберт Нягу
источник
3
Не очень хорошая идея возиться с запутанными SVN-папками и файлами, вы можете оказаться в запутанном беспорядке SVN. Лучше всего использовать команду удаления SVN, чтобы привести в порядок отсутствующие файлы.
Джоуи
Это путь, который я на самом деле выбрал. Да, он удаляет всю сохраненную информацию SVN, но это было на самом деле то, что кто-то еще вложил в конкретный проект, который я не хотел сохранять. Я хотел начать все сначала и не заботился о поддержании конкретной версии.
Скотт
Я просто "killall Finder", перезапустив его. Проблема ушла сейчас. Спасибо
JHHoang
9

Это сработало для меня:

File-> Source Control->Hide Working Copy Status

затем

File-> Source Control->Show Working Copy Status

Тайсон
источник
6

Я решил это следующим образом:

  1. Проверьте путь к отсутствующему файлу.
  2. Создать недостающие файлы в соответствующих местах в вашем каталоге проекта
  3. Добавьте их в свой проект с помощью «Добавить файлы в« проект »» и создавайте только ссылки (не копируйте файлы)
  4. Предупреждения должны исчезнуть в этой точке.
  5. Из XCode удалите файлы, убедившись, что вы нажимаете «Удалить» вместо стандартного «Удалить ссылку только»
  6. Вы сделали
askoric
источник
4

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

Яно
источник
Печально, я надеялся, что есть более простой способ обойти эту проблему. У меня есть около 20 файлов, поэтому создание, а затем удаление будет довольно сложной задачей.
Скотт
4

У меня также была эта проблема, и, как описал пользователь 151215, это связано с папками .svn.

У меня была старая папка .svn, не в самом проекте, а в родительской папке проектов.

в папке .svn, в которой есть ошибки, будет файл записей, в котором будут отсутствующие файлы. Таким образом, вы можете использовать Teminal и искать пропущенную строку имени файла, например, grep -lir BagController.m yourRootDevDir / *

проще, чем включить скрытые файлы в Finder, просто используйте терминал. перейдите в соответствующий каталог, а mv .svn ~ / .Trash

Надеюсь это поможет!

Ник H247
источник
4

Перейдите в соответствующий каталог и запустите:

svn revert fileName
Шон МакКарти
источник
3

Я использовал следующий способ решения этой проблемы:

Запустите терминал и перейдите в каталог проекта. (напр .: cd /Users/Mauro/Src/Pippero-1.2/)

Затем введите следующую команду:

find . -name .svn -exec rm -rf { } \;

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

Мауро Делрио
источник
это не сработало для меня, но заходило в каждый каталог и удаляло отдельные папки .svn. такие большие взлеты к тебе, мой человек!
gonzobrains
3

Отключение SVN в XCode предотвращает эти проблемы (при условии, что вы управляете своим хранилищем с помощью другого инструмента SVN). Смотрите этот вопрос:

Можете ли вы отключить интеграцию контроля версий в Xcode 4?

Очевидно, что это может быть непрактично, если есть другие проекты Xcode, с которыми вы хотите использовать SVN.

occulus
источник
2

Я использую SVN и удается решить эту проблему путем

svn delete pathToMissingFile

который собирается удалить локальную svn-копию отсутствующего файла, а также копию в удаленном хранилище.

или

svn revert pathToMissingFile

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

Jibeex
источник
1

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

Я узнал, что были конфликты с помощью командной строки:

svn status

Тогда все конфликтующие файлы должны были быть решены

svn resolved filename1 filename2 ...

Как только конфликты были разрешены, предупреждения были удалены из Xcode

gfrigon
источник
1
  1. Зафиксируйте изменения.
  2. Перезапустите Xcode.
quemeful
источник
1

Это очень просто,

Xcode -> Preferences -> Source Control -> uncheck Enable Source Control

и не забудьте сделать cmd+shift+k

Кавин Кумар Арумугам
источник
0

Нажмите Cmd + 7 после сборки и выберите последнее действие сборки. Это немного похоже на старый добрый Xcode? :) введите описание изображения здесь

knuku
источник
Да, это похоже на старый XCode, но это не решает проблему с новым XCode, говоря, что у меня отсутствуют файлы. Мне нравится вид, но похоже, что он просто маскирует проблему с XCode.
Скотт
0

В моем случае

  1. Я просто открываю SvnX.
  2. Все отсутствующие файлы помечены красным. Выберите и удалите их.
  3. Тогда все предупреждения Xcode исчезли.
Apoc
источник
0

Ответ Алекса устранил мою проблему с отсутствующими файлами.

У меня была еще одна проблема (хотя она не связана с отсутствующими файлами, но я считаю, что это была бы лучшая тема)

  1. Мне нужно было скопировать набор изображений в мой проект.
  2. Я просто создал группу (хотя я знаю, что группа не сопоставляется с физической папкой) и перетянул изображения в группу (выбран вариант «Копировать в ...»).
  3. Статус SVN показал их всех в «А».
  4. Теперь, когда я вошел в настоящую файловую систему, я обнаружил, что все изображения были скопированы в корневую папку моего проекта. Поскольку это выглядело не очень хорошо, я создал физическую папку внутри папки с изображениями в моем проекте и скопировал туда все добавленные изображения.
  5. Затем SVN показала все файлы красным цветом.
  6. Я удалил ссылки всех красных файлов.
  7. С опцией «Добавить файл» я затем добавил изображения из только что созданной папки.
  8. Теперь SVN не показывает состояние файлов как «A», и я никак не могу их проверить.
  9. Пробовал много шагов, таких как удаление их, добавление снова из другой папки и т.д., но не было никакой удачи.

Я исправил это, перейдя непосредственно в хранилище, создав новый каталог под изображениями, чтобы физическая папка теперь находилась на сервере SVN.

Затем я взял обновление исходного кода и получил недавно созданный каталог в моей рабочей копии (хотя он не добавлен в проект).

Затем я скопировал изображения в этот каталог и добавил их в проект, используя опцию «Добавить файл», что вернуло мне статус «А», и я смог проверить файлы.

Просто хотел поделиться этим ..... потому что это заняло у меня много времени.

-anoop

anoop4real
источник
В этом случае перейдите в Терминал и в корень вашего проекта. Создайте папку с помощью «svn mkdir name_of_the_folder». Перетащите файлы с помощью Finder из name_of_the_folder в ваш проект (или добавьте в него все файлы). Проблема в том, что когда вы создаете папку без папки «svn mkdir», она не добавляется в SVN.
Алекс
0

Не удаляйте файл прямо в папке .xcode. Удалить файлы из навигатора проекта xcode. (Щелкните правой кнопкой мыши по этому файлу и выберите «Переместить в корзину»).

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

Gowtham R
источник
0

Мне не нужно было ничего делать. Я зафиксировал свой код и поднял его. Выключил XCODE. Снес это снова и все просто заработало.

VBaarathi
источник
0

Обзор:

В моем случае был проект xcode, который вызывается Sampleпо следующему пути к папке/folder1/folder2 .

Был .gitфайл внутри/folder1/folder2/Sample/ который ожидается.

Основная причина:

В .gitродительском каталоге ( /folder1) был другой файл, который вызывал проблему. Папки могли быть удалены, оставив позади.git файл

Решение

rm -rf /folder1/.git

Ключ к разгадке

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

user1046037
источник