Интеграция с Git в Xcode 4 очень приветствуется, однако она кажется немного ненадежной, когда дело доходит до работы с удаленными репозиториями.Для ясности я использую OS X версии 10.6.7 и Xcode 4.0.2 (4A2002a).
Если я создам новый проект Xcode 4 и приму опцию создания локального репозитория Git, все в порядке.Я могу зафиксировать локально, и это здорово.
Когда я хочу перенести новый проект в GitHub, я хочу добавить удаленный репозиторий и перенести свои локальные изменения в GitHub.Я могу добавить репозиторий GitHub в Xcode 4 в качестве нового репозитория в окне Organizer, но нет способа установить его в качестве удаленного репозитория для моего существующего проекта.
Поэтому я переключаюсь на использование команд git в Терминале.
git remote add origin https://<username>@github.com/<organization>/<repository>.git
Если я затем возвращаюсь к Xcode 4 и пытаюсь использовать
Файл -> ИсточникУправление -> Push ...
, затем Выберите репозиторий, в который нужно отправить изменения. Появится диалоговое окно со списком origin удаленное хранилище.Есть желтый индикатор, указывающий, что требуется аутентификация, и это нормально, поскольку я еще не смог ввести свои учетные данные для 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, репозиторий origin был добавлен в браузер репозиториев в Organizer, и я вижу ветку master на GitHub, поэтому я знаю, что учетные данные верны, и я ничего не меняю.
Есть кто-нибудьнашли надежный способ использования Xcode 4 с GitHub, начиная сначала с локального проекта?
Если я клонирую существующее хранилище GitHub с проектом Xcode, откройте его с Xcode 4, хотя первый Push кажетсяпотерпеть неудачу, 2-й толчок сделал тогда работать.Так что, возможно, начинать с нуля с Xcode 4, создавая хранилище для меня, не самый лучший шаблон (пока они не улучшат инструментальные средства Git в более поздней версии Xcode 4).1035 *
Этот пример действительно относится только к первому проекту, который вы добавляете в репозиторий GitHub.Таким образом, я думаю, что вам лучше выполнить следующие шаги, имея в виду, что в этом решении все еще есть некоторые «ошибки» Xcode.
- Элемент списка
- 'Подключитьсяв хранилище из диалогового окна «Добро пожаловать в Xcode».
- Используйте URL-адрес GitHub SSH для местоположения
- Дайте ему имя ( RepositoryName ) и клонируйте в каталог
- 1-я попытка не удалась, даже если содержимое загружено
- Попробуйте еще раз, и это работает.
- В окне «Органайзер» теперь определен новый репозиторий с источником, установленным для удаленного SSH GitHub.URL.
- Создайте новый проект в каталоге, в который вы только что клонировали, но НЕ отмечайте опцию «Создать локальный git-репозиторий для этого проекта».
- Делать начальную фиксацию в локальном Git-репозитории.
- Попробуйте Source Control -> Push и Xcode 4 завершается неудачно с 'Операция не может быть выполнена, потому что доступ к хранилищу RepositoryName был запрещен.Проверьте имя пользователя и пароль '
- Попробуйте Source Control -> Push и Xcode 4 снова откроет диалоговое окно удаленного хранилища, но на этот раз обнаружил удаленное хранилище с именем origin .Рядом с ним желтый шарик и «Требуется аутентификация».
- Повторное нажатие кнопки «Push» заставило работать удаленный Push.
Одна вещь, которую я обнаружил и пока не смог решить, - это то, что ответные сообщения обратно из GitHub со значением хэша checkin и любые сообщения, по-видимому, сообщаются в навигаторе Xcode Log как ошибки Push, даже если Push успешен что касается GitHub.
У кого-нибудь еще есть лучшее решение?