Главная страница » Почему git не открывает файлы на swift

Почему git не открывает файлы на swift

  • автор:

Почему Git не отслеживает файлы, измененные в Xcode?

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

Git может распознать, когда я создаю файл или изменяю файл с помощью VS Code. Однако, когда я работаю над своими файлами в Xcode и сохраняю их, Git не отслеживает никаких изменений. Он говорит мне:

В чем проблема и как ее исправить?

И файлы, которые вы редактируете с помощью Xcode, определенно находятся в репо, имеют фактические изменения и не игнорируются?

В Xcode перейдите в меню Source Control, щелкните Fetch and Refresh Status и расскажите нам, что будет дальше.

Позже я изменил те же файлы в VS Code, и git распознал изменения.

@staticVoidMan привет, я только что сделал это и проверил «git status», в нем написано: На ветке master Ваша ветка обновлена ​​с ‘origin / master’. нечего делать, рабочее дерево чистое

@Biffen привет, да, я уверен, что он находится в том же репо, потому что git отслеживал изменения, когда я изменял файл в VS Code, он не отслеживает его только тогда, когда я меняю его на Xcode

@goldfrappp Проверьте git remote show origin и подтвердите еще раз. Проект Xcode может находиться в папке, которая не находится под управлением git или связана с другим URL-адресом git.

@goldfrapp: можете ли вы дважды проверить, что путь к файлу, который вы редактируете в Xcode, действительно соответствует пути, который вы ожидаете на вашем диске?

@LeGEC Я изменил «ViewController.swift» внутри Xcode и нажал «Сохранить», но Git не смог отследить изменение, затем я перешел к исходным файлам и открыл «ViewController.swift» с помощью VS Code и изменил его, затем Git обнаружил, что файл измененный!

@staticVoidMan привет, я только что проверил, что он ответил следующим образом: «macs-MacBook-Pro: Autolayout-Exercises mac $ git remote show origin * удаленное происхождение URL выборки: github.com/gfrapp/Autolayout-Exercises.git Push URL: github.com/gfrapp/Autolayout-Exercises.git HEAD branch: master Удаленная ветвь: master отслеживается Локальная ветвь настроена для ‘git pull’: мастер сливается с удаленным мастером Локальная ссылка, настроенная для ‘git push’: мастер отправляет на мастер (обновленный) macs-MacBook-Pro: Autolayout-Exercises mac $ «

Когда я зафиксировал и впервые отправил в удаленное репо, все содержимое файлов было перенесено в удаленное репо в обычном режиме, однако всякий раз, когда я изменяю какой-либо файл внутри Xcode, Git не распознает изменения

@goldfrappp вы уверены, что ваш проект Xcode такой же, как тот, который вы открываете с помощью Visual Studio? Проанализируйте это очень внимательно

@staticVoidMan Да, это тот же проект, я просто щелкнул ViewController.swift из папки на моем рабочем столе, и он не содержал измененного содержимого, которое находится внутри Xcode, я думаю, что есть проблема в соединении между Xcode и источником файлы на моем рабочем столе ??

@goldfrappp Еще две вещи, которые нужно проверить. Сначала перейдите в настройки Xcode Source Control и убедитесь, что установлен флажок Enable Source Control. Во-вторых, в Finder нажмите Cmd-Shift-Period, чтобы отобразить невидимые файлы. Перейдите в папку проекта Xcode и убедитесь, что внутри папки проекта есть папка .git.

Как бороться с предупреждением об отсутствии файла Xcode в репозитории Git?

Я использую GIT для управления исходным кодом в моем проекте Xcode. После обновления библиотеки Cocopod я начал получать предупреждения, подобные следующим:

File:///Users/NinjaDev/Development/Xcode/NinjaApp/Pods/Alamofire/Source/Download.swift: предупреждение: Отсутствует файл: /Users/NinjaDev/Development/Xcode/NinjaApp/Pods/Alamofire/Source/Download.swift отсутствует в рабочей копии

Библиотека изменилась, так что файла Download.swift больше нет. Я зафиксировал проект и сделал чистку и перестройку, но все еще получаю сообщение об ошибке. Я предполагаю, что репозиторий не знает, что он был удален, но я не очень хорошо знаком с внутренней работой Git. как правильно это исправить и предотвратить повторение этого?

Изменить: по предложению Aspirin2D, вот статус git. В журнале git не было ничего необычного.

Статус Git

РЕДАКТИРОВАТЬ 2: Я понял, что произошло. Когда я зафиксировал в Xcode, файлы, которые я удалил, по умолчанию должны были быть сняты с проверки. Пока я возился с проблемой, я снова открыл меню фиксации, и, конечно же, это была просто куча непроверенных файлов. Проверьте их и снова зафиксируйте предупреждения. Почему Xcode по умолчанию не проверяет некоторые файлы?

Swift — Unable to open file in target Xcode 10

I am trying to run Aplication which I have downloaded from GitHub.

When I run get error unable to open file in target, I have Xcode 10.

I already searched for solution and get this one.

I had the same problem, but in Xcode 6.1.1 — what fixed it for me was to change the configuration file setting to None for the two Pods-related targets, then run pod install again.

The configuration file setting is found by selecting the project (not the target) and then the Info tab.

But cant find configuration file location.

16 Answers 16

In File -> Project setting -> select Legacy Build System

Make sure you have opened .xcworkspace file and pod installed properly.

Saeed All Gharaee's user avatar

Pushp's user avatar

A solution I found to work for me was

Inside the project root directory

Delete the following files. Ensure you have copied the contents of Podfile.

  1. Podfile
  2. Podfile.lock
  3. Pods Folder

Open your .xcodeproj using Xcode or using terminal command

Inside Xcode, locate the «Pods» folder which should contain something along the lines of.

Delete those references and select «move to trash» when prompted.

Now run the following:

Open your Podfile and paste in your previously copied old Podfile that was deleted earlier.

run the following command:

In terminal open Xcode again with the following command

Note: that I opened the xcworkspace file NOT the xcodeproj file.

At this point for me I was able to compile my code as normal without having to change back to the Legacy Build System.

Создаём блог на Swift и размещаем его на GitHub Pages

У меня уже есть блог, он на WordPress, и я устал от всей этой свистопляски с обновлением версии, плагинов, возможности взлома и прочего. Это буквально убивает желание продолжать его развивать. Моя цель — делиться с миром своими мыслями и находками, но при этом иметь полный контроль над своим сайтом. С недавних пор GitHub Pages предоставила возможность хранить простенькие сайты у них. Никаких баз данных и PHP, статический сайт, как в старые добрые. Для блога —идеально. А т.к. процесс деплоя будет проходить через GitHub, будет прозрачная история всех изменений и полный контроль над тем, что реально находится на сайте: трояны и прочая нечисть не пройдут.

Но они предлагают использовать Jekyll, статический генератор сайтов, написанный на Ruby. Все же хочется оттачивать мастерство в том языке, который ты используешь ежедневно, поэтому в качестве альтернативы я взял свежий статический генератор, написанный на Swift, от John Sundell.

Нам предстоит сделать 3 вещи:

  1. Создать блог на GitHub Pages.
  2. Разобраться, как работать с Publish.
  3. Залить свой новый блог на GitHub Pages.

Создадим блог на GitHub Pages

Официальная инструкция доступна по адресу https://pages.github.com.

Основное условие — login блога должен совпадать с вашим логином на GitHub (в моем случае это sparklone). Наши действия:

  • логинимся в GitHub;
  • идем по адресу https://github.com/new,
  • в качестве имени репозитория вводите login.github.io, в моем случае было sparklone.github.io;
  • убеждаемся, что он будет Public;
  • жмем Create Repository;
  • все, наш блог уже доступен по адресу https://login.github.io.

Но пока на сайте нет ни одного файла. Переходим ко второму пункту.

Разберёмся, как работать с Publish

Publish — это статический генератор сайтов, написанный на Swift, что позволяет выстраивать любую логику при генерации сайта: теги, карта сайта, rss, специфическая перелинковка… — все, на что нам хватит фантазии. Одна из моих идей на будущее — попробовать писать статьи на двух языках, и чтобы настроенный шаблон умел это понимать и вставлять переключатель в статью, к примеру. Не знаю, дойдут ли когда-нибудь до этого руки, но как идея — интересно.

Я предпочел установить напрямую через git, создал папку

/Developer/tools и там выполнил

Далее я создал папку, где планирую хранить свой сайт (точнее, исходники его генератора), в моем случае это

/Developer/my/blog. Внутри этой папки запускаем команду

Это создаст новый сайт, а список опций для команды можно узнать, просто запустив в консоли publish .

publish run скомпилирует все исходники и запустит веб-сервер на питоне (если прервать посредством Ctrl+C, веб-сервер не умрет и придется ковыряться в процессах, чтобы убить Python).

Первая сборка занимает какое-то время (подливаются нужные репозитории, все компилируется), при последующих запусках publish run все происходит намного быстрее.

Открываем в браузере http://localhost:8000 и видим, что за сайт получился:

Не густо, но мы еще ничего, собственно, и не сделали, чтобы ожидать чего-то большего.

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

  1. Сделать изначальную настройку генератора для нашего сайта.
  2. Поменять пути, по которым будут лежать записи, и настроить меню.
  3. Добавить подсветку для исходных файлов и создание своей темы.

Изначальная настройка генератора для нашего сайта

Посмотрим, что нам сгенерировал Publish. Внутри папки будет файл Package.swift, его открываем XCode’ом (можно в консоли набрать open Package.swift ), и это запускает процесс подтягивания всех нужных библиотек. На скрине видно, что должно получится в итоге.

Тестовая запись лежит в Content/posts/first-post.md. Проверим, что мы можем что-то изменить и это отразится на сайте: подправим текст в first-post.md (можно поменять дату, теги, описания и сам контент).

В Xcode выбираем Mac в качества таргета, для которого надо запускать, и делаем Run проекту.

После этого рефрешим веб-страницу http://localhost:8000.

Меняем пути, по которым будут лежать записи, и настраиваем меню

Почему это важно сделать сразу? Если вы решите поменять пути после того, как уже зальете часть постов, входящие ссылки на эти страницы станут невалидными, а т.к. это не свой сервер/VPS, будет довольно проблематично сделать редирект со старых ссылок на новые пути. Не невозможно (вот, к примеру, плагин для Jekyll), но зачем создавать себе головную боль в будущем, если можно ее избежать.

По умолчанию все записи лежат в папке posts. Учитывая, что в дальнейшем хочется бить на категории, а posts — общее название, лучше переименовать папку в articles. Также не помешает добавить страницу about. Но наш генератор пока ничего не знает про это.

В main.swift поменяем на

Добавим файл about.md в папку Content и заполним немного информации о себе.

К слову, эту статью я пишу в XCode, редактируя md-файл и периодически запуская проект, чтобы посмотреть в браузере, как это смотрится.

Я долго колебался, заморачиваться ли с датой у файлов *.md, т.е. называть не my-article.md, а, к примеру, 2020-07-10-my-article.md. И все же решил отказаться от этой идеи: т.к. в самих md-файлах есть метаданные (поле date), это при желании позволит в будущем добавлять дату автоматически. И не придется следить за корректностью даты в имени файла, к тому же это убережет от расхождений, если в имени файла одна дата, а в метаданных внутри — другая. Недостатком такого решения я вижу то, что гипотетически могут в будущем быть коллизии в именах md-файлов, но все-таки это маловероятно, к тому же мы об этом узнаем при создании поста, а не сохранении.

Добавляем подсветку для исходных файлов

Автором генератора Publish так же была написана библиотека Splash, позволяющая делать подсветку исходных кодов. Подключается она как package в Swift Package Manager.

Открываем файл Package.swift и добавляем поддержку, по сути нужно добавить 2 строки. Вот что получилось у меня:

А чтобы подсветка начала применяться при генерации, нужно подключить плагин в main.swift:

try Blog().publish(withTheme: .foundation)

Не забываем добавить в main.swift импорт плагина import SplashPublishPlugin.

Если сгенерировать сайт сейчас, мы увидим, что блоки с кодом будут выделяться, но не подсвечиваться: это связано с тем, что нужно добавить CSS, будем использовать тот, который по умолчанию используется автором плагина.

Но вот проблема: куда добавлять этот CSS? Если покопаться в исходниках, то станет видно, что все это решается на уровне темы. Тема у нас стандартная: foundation, и она лежит в самом пакете Publish по пути Sources/Publish/API/Theme+Foundation.swift.

Внутри своего проекта (Blog) в папке, где лежит main.swift, я создал подобный файл Theme+Blog.swift. Также внутри папки Resources я создал папку Blog и поместил туда файл styles.css Внутрь файла я поместил содержимое CSS от темы Foundation, ну и CSS от Splash. Да, лучше было бы разделить, а может, вообще темы вынести в отдельный package, но не будем усложнять раньше времени.

Итого у меня в файле темы пришлось поменять таким образом:

Если бы мы добавили еще один css, нам потребовалось бы не только добавить его в resourcePaths , но также добавлять в каждый head страниц, чего мне делать совершенно не хотелось в данный момент.

.head(for: item, on: context.site, stylesheetPaths: [«/styles.css», «/splash.css»]),

В итоге сейчас у меня в проекте файловая структура выглядит как-то так:

Зальём свой новый блог на GitHub Pages

Итак, воспользуемся встроенным инструментом Publish для заливки нашего блога. В main.swift добавим

.deploy(using: .gitHub(«login/login.github.io», useSSH: false))

У меня получилось

Проверяем в последний раз, что все работает. Последний штрих — мне кажется, что нет смысла хранить в git нашего репозитория с темплейтами, как строить сайт, содержимое папки Output, для этого у нас будет отдельный репозиторий, как раз таки login.github.io Если вы согласны — исключим эту папку из .gitignore, добавив туда строку /Output в конце. Если все ок, выполняем в консоли (из папки, где мы выполняли publish new )

В течение минуты GitHub Pages подхватит ваши изменения, и все появится онлайн.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *