Интеграция Git в XCode 4 очень приветствуется, но, похоже, она немного шелушится, когда дело касается удаленных репозиториев. Для ясности я использую OS X версии 10.6.7 и XCode 4.0.2 (4A2002a).
Если я создаю новый проект XCode 4 и приму возможность создать локальный репозиторий Git, все будет хорошо. Я могу совершать локально и отлично.
Когда я хочу подтолкнуть новый проект к GitHub, я хочу добавить удаленный репозиторий и нажать локальные изменения до GitHub. Я могу добавить репозиторий GitHub в XCode 4 как новый репозиторий в окне "Организатор", но нет способа его установки в качестве удаленного репозитория для моего существующего проекта.
Поэтому я переключаюсь на использование команд Git в терминале.
git remote add origin https://<username>@github.com/<organization>/<repository>.git
Если я вернусь к XCode 4 и попробую использовать
Файл → Управление источником → Push...
затем Выберите репозиторий, в который нужно нажать изменения. открывается диалог с исходным удаленным репозиторием. Там есть желтый индикатор, в котором говорится, что требуется аутентификация, и это нормально, поскольку я еще не смог ввести свои учетные данные для HTTPS. Однако, когда я нажимаю "Push", и он пытается нажать изменения, он говорит: "Операция не может быть выполнена, потому что запрещается доступ к репозиторию" origin ".
Диалоговое окно, запрашивающее мое имя пользователя и пароль, появляется с моим предварительно заполненным, поэтому оно должно быть правильно прочитано из конфигурации локального репозитория.
При вводе пароля XCode 4 происходит сбой со следующей ошибкой
ASSERTION FAILURE in /SourceCache/IDEKit/IDEKit-303/Framework/Classes/SourceControl/IDESourceControlOperationInfo.m:59
Details: Message sent to invalidated object: <IDESourceControlPushOperationInfo, 0x200bd2a80>. Backtrace for invalidation:
(null)
Object: <IDESourceControlPushOperationInfo: 0x200bd2a80>
Method: -invalidate
Thread: <NSThread: 0x200020700>{name = (null), num = 1}
Hints: None
Если я перезапущу XCode, исходный репозиторий был добавлен в браузер Хранилища в Organizer, и я могу видеть главную ветку на GitHub, поэтому я знаю, что учетные данные верны, без меня что-то меняя.
Кто-нибудь нашел надежный способ использования XCode 4 с GitHub, начиная с локального проекта?
Если я клонирую существующий репозиторий GitHub с проектом XCode в нем, откройте его с помощью XCode 4, тогда даже если первый Push, похоже, не работает, тогда работает 2-й push. Поэтому, возможно, начиная с абсолютной царапины с XCode 4, создавая репозиторий для меня, это не лучший шаблон (пока они не улучшат оснастку Git в более поздней версии XCode 4).
ИЗМЕНИТЬ ДАЛЬНЕЙШИЕ ДЕТАЛИ ОДНОГО ПОСЛЕДНЕГО ПОСЛЕДНЕГО
Этот пример действительно применим только к первому проекту, который вы добавляете в репозиторий GitHub. Как таковой, я думаю, что вам будет лучше со следующими шагами, имея в виду, что в этом решении все еще есть некоторые ошибки XCode.
- Элемент списка
- "Подключиться к репозиторию" из диалога "Добро пожаловать в XCode".
- Использовать URL-адрес GHHHH SSH для местоположения
- Дайте ему имя (RepositoryName) и Clone в каталог
- Первая попытка оказывается неудачной, даже если содержимое загружено
- Попробуйте снова, и он работает.
- В окне "Организатор" появился новый репозиторий, источник которого установлен на удаленный SSH-адрес GitHub.
- Создайте новый проект в каталоге, в который вы клонировали, но НЕ устанавливайте флажок "Создать локальный репозиторий Git для этого проекта".
- Сделать первоначальную фиксацию в локальном репозитории Git.
- Попробуйте Source Control → Push и XCode 4 сбой: "Операция не может быть выполнена, потому что был запрещен доступ к хранилищу RepositoryName. Проверьте имя пользователя и пароль
- Попробуйте Source Control → Push и XCode 4 снова откроет диалоговое окно удаленного репозитория, но на этот раз обнаружил удаленный репозиторий с именем origin. Рядом с ним есть желтый шар и "Требуется аутентификация".
- Нажатие кнопки "Push" снова заставило удаленный Push работать.
Одна вещь, которую я заметил и еще не успел выработать, - это то, что ответные сообщения от GitHub с хеш-значением checkin и любые сообщения, как представляется, сообщаются в навигаторе XCode Log в качестве сбоев Push, даже несмотря на то, что Push успешно что касается GitHub.
У кого-нибудь есть лучшее решение?