web-dev-qa-db-fra.com

Dans Xcode 4, comment ajouter un référentiel GitHub distant à un projet local existant?

L'intégration de Git dans Xcode 4 est la bienvenue, mais elle semble un peu floue lorsqu'il s'agit de gérer des référentiels distants. Pour plus de clarté, j'utilise OS X version 10.6.7 et Xcode 4.0.2 (4A2002a).

Si je crée un nouveau projet Xcode 4 et accepte l'option de créer un référentiel Git local, tout va bien. Je peux m'engager localement et c'est super.

Quand je veux pousser le nouveau projet vers GitHub, je veux ajouter un référentiel distant et pousser mes modifications locales jusqu'à GitHub. Je peux ajouter un référentiel GitHub à Xcode 4 en tant que nouveau référentiel dans la fenêtre Organiseur mais il n'y a pas de méthode pour le définir comme référentiel distant pour mon projet existant.

Je passe donc à l'utilisation des commandes git dans Terminal.

git remote add Origin https://<username>@github.com/<organization>/<repository>.git

Si je retourne ensuite à Xcode 4 et essaie d'utiliser

Fichier -> Contrôle de source -> Push ...

puis la boîte de dialogue Choisissez le référentiel vers lequel effectuer les modifications. apparaît et répertorie le référentiel distant Origine . Un indicateur jaune indique que l'authentification est requise, ce qui est bien car je n'ai pas encore pu entrer mes informations d'identification pour HTTPS. Cependant, lorsque je clique sur "Push" et qu'il essaie de pousser les modifications, il dit "L'opération n'a pas pu être effectuée car l'accès au référentiel" Origin "est refusé."

Une boîte de dialogue m'invitant à saisir mon nom d'utilisateur et mon mot de passe apparaît alors avec mon pré-rempli, il doit donc être en train de lire correctement la configuration du référentiel local.

Lorsque j'entre mon mot de passe Xcode 4, il se bloque avec l'erreur suivante

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

Si je redémarre Xcode, un référentiel d'origine a été ajouté au navigateur des référentiels dans l'Organiseur et je peux voir la branche principale sur GitHub, donc je sais que les informations d'identification sont correctes sans que je change quoi que ce soit.

Quelqu'un a-t-il trouvé un moyen fiable d'utiliser Xcode 4 avec GitHub en commençant par un projet local?

Si je clone un référentiel GitHub existant avec un projet Xcode dedans, ouvrez-le avec Xcode 4 puis même si le premier Push semble échouer, le 2nd Push a alors fonctionné. Donc, peut-être que partir de zéro avec Xcode 4 créer le référentiel pour moi n'est pas le meilleur modèle (jusqu'à ce qu'ils améliorent l'outillage Git dans une version ultérieure de Xcode 4).

MODIFIER AVEC PLUS DE DÉTAILS D'UNE SOLUTION DE CONTOURNEMENT

Cet exemple ne s'applique vraiment qu'au premier projet que vous ajoutez à un référentiel GitHub. En tant que tel, je pense que vous êtes mieux avec les étapes suivantes, en gardant à l'esprit qu'il semble toujours y avoir des "accrochages" Xcode dans cette solution.

  1. Élément de liste
  2. "Se connecter à un référentiel" dans la boîte de dialogue Bienvenue dans Xcode.
  3. Utiliser l'URL SSH GitHub pour la localisation
  4. Donnez-lui un nom ( RepositoryName ) et clonez dans un répertoire
  5. La première tentative semble échouer même si le contenu est téléchargé
  6. Réessayez et cela fonctionne.
  7. Il y a maintenant un nouveau référentiel défini dans la fenêtre Organiseur avec son origine définie sur l'URL SSH distante GitHub.
  8. Créez un nouveau projet dans le répertoire dans lequel vous venez de cloner, mais NE cochez PAS l'option `` Créer un référentiel git local pour ce projet ''.
  9. Effectuez la validation initiale dans le référentiel Git local.
  10. Essayez le contrôle de code source -> Push et Xcode 4 échoue avec 'L'opération n'a pas pu être effectuée car l'accès au référentiel RepositoryName a été refusé. Vérifier le nom d'utilisateur et le mot de passe '
  11. Essayez le contrôle de source -> Push et Xcode 4 affiche à nouveau la boîte de dialogue Référentiel distant mais cette fois a détecté un référentiel distant appelé Origine . À côté, il y a une boule jaune et "Authentification requise".
  12. Cliquez à nouveau sur "Push" pour faire fonctionner le Push distant.

Une chose que j'ai repérée et que je n'ai pas encore réussi à résoudre est que les messages de réponse de GitHub avec la valeur de hachage de consignation et tous les messages semblent être signalés dans le navigateur Xcode Log comme des échecs de Push, même si le Push réussit dans la mesure où GitHub est concerné.

Quelqu'un d'autre a une meilleure solution?

50
jbjon

Je pense avoir trouvé le moyen Xcode de pousser un projet existant vers GitHub ou tout autre référentiel distant!

Conditions préalables

  • Je suppose que vous avez un projet créé par Xcode 4 avec un dépôt git local.
  • Vous avez créé un référentiel git distant vide (je l'appelle RemoteRepository dans l'exemple suivant)

Poussez-le à distance

  1. Ouvrez le Organisateur dans Xcode et allez dans l'onglet Repositories

  2. Cliquez d'abord sur Télécommandes puis sur "Ajouter une télécommande"

    Xcode Organizer

  3. Entrez un Nom distant et le Emplacement de votre référentiel distant et cliquez sur créer

    Add a remote dialog

  4. Sélectionnez ensuite votre projet et ouvrez File -> Source Control -> Push ...

    open Push dialog

  5. Sélectionnez votre référentiel distant et attendez qu'il soit connectable! Recherchez le Créer dans les crochets.

    Push dialog

  6. Maintenant, votre ancien projet est publié sur GitHub

    result on GitHub

J'espère que ça marchera aussi pour vous! Dans mon cas, cela fonctionne avec chaque dépôt git distant .

Veuillez me contacter sur Twitter si quelque chose n'est pas clair ou écrit dans un mauvais anglais!

89
Tim

J'ai réussi cela en utilisant une connexion ssh (qui ressemble à [email protected]:<username>/<project>.git). Il authentifie l'utilisateur sur la base d'une clé publique SSH, que vous pouvez générer sur la ligne de commande - beaucoup de documents à ce sujet sur github dans la section "aide".

2
Dan Ray

Xcode 6.2 (et peut-être 6.x) a changé les choses. Il n'y a plus d'onglet Référentiels dans l'Organiseur. Voici comment le faire avec les nouveaux Xcodes.

Pour ajouter un projet avec un référentiel git local à GitHub, voici ce que vous faites:

  1. Accédez au menu Contrôle de source, élisez votre projet et sélectionnez Configurer:

enter image description here

  1. Tu verras:

enter image description here

  1. Sélectionnez l'onglet Télécommandes et appuyez sur le "+" dans le coin inférieur gauche. Sélectionnez Ajouter une télécommande.

enter image description here

  1. Saisissez un nom pour le référentiel distant et saisissez l'URL de votre référentiel distant. Assurez-vous que vous avez déjà créé ce référentiel distant, et si sur GitHub, make vous spécifiez qu'il s'agit d'un projet existant, et non d'un nouveau.

enter image description here

  1. Vous avez presque fini. Accédez au menu Source Control et sélectionnez Push. Vous verrez alors le nom du référentiel que vous avez utilisé à la dernière étape, quelque chose comme "simple/maître"; appuyez sur le bouton-poussoir.

Terminé.

2
mahboudz