Mouviciel

Création d'applications pour Mac OS X

Les coulisses d'un développeur Mac

Contrôle de versions et Xcode — Deuxième partie

Publié le dimanche 5 octobre 2008, 3 commentaires

Dans la première partie sur le contrôle de versions, j'avais parlé des bénéfices qu'un développeur pouvait tirer du contrôle de versions en général. Dans cette partie j'entre dans le concret pour vous montrer les réglages à faire afin d'utiliser Subversion sur un projet Xcode.

Pourquoi Subversion avec Xcode ?

J'ai conclu la première partie en indiquant qu'il existait de nombreux outils de contrôle de version et que ce choix se limitait à trois dès qu'on travaillait avec Xcode :

Ainsi, les critères qui ont guidé mon choix de Subversion sont l'intégration dans Xcode, la disponibilité dans Leopard et la combinaison de maturité et de modernité. Il est temps maintenant de passer aux choses concrètes.

Créer un dépôt Subversion

Le principe de fonctionnement de Subversion est le suivant. Quelque part sur votre disque dur ou ailleurs existe un dépôt Subversion qui contient l'historique de tout votre code. Le développeur commence son travail en allant chercher dans le dépôt une copie du code qu'il souhaite modifier, c'est l'opération de checkout. Cette copie est placée dans un dossier qui joue le rôle d'espace de travail privé. Lorsque les modifications sont finies, le développeur les ajoute au dépôt grâce à l'opération de commit.

En général il est utile que plusieurs développeurs aient accès au dépôt. C'est pourquoi la plupart du temps ce dépôt est disponible via un serveur Subversion ; divers protocoles sont possibles, y compris http notamment via Apache. Je n'ai pas envie d'aborder ici l'installation d'un serveur Subversion, mon propos est d'illustrer le client Subversion intégré à Xcode. Mais pour cela j'ai tout de même besoin d'un dépôt Subversion. Le plus simple est donc d'en créer un sous forme d'un dossier sur votre disque dur. Cela se passe dans le Terminal, la commande est la suivante (le dépôt est créé dans ~/Subversion) :

svnadmin create $HOME/Subversion

Une autre solution presque aussi simple est de créer un dépôt Subversion auprès d'un hébergeur spécialisé. Parmi ceux qui ont une offre gratuite, il y a myVersionControl que je ne connais pas et Beanstalk que j'utilise régulièrement sans souci.

Une dernière précision : Un dépôt Subversion peut contenir plusieurs projets, il n'est pas nécessaire de créer un dépôt par projet.

Préparer Xcode

La préparation de Xcode nécessite deux opérations distinctes. La première opération consiste à informer Xcode de l'existence du dépôt Subversion que vous venez de créer.

Pour cela, choisissez le menu SCM—Configure SCM Repositories.... La fenêtre qui s'affiche est la rubrique SCM des préférences de Xcode. Choisissez le premier onglet, nommé Repositories, puis cliquez sur + en bas de la première colonne, intitulée elle aussi Repositories. Donnez un nom à votre dépôt, par exemple monDepotSubversion, puis choisissez Subversion pour SCM System. Enfin dans le champ URL: tapez le chemin d'accès au dépôt que vous venez de créer, par exemple chez moi c'est :

file:///Users/mouviciel/Subversion

Si tout se passe bien, vous devriez voir en bas du formulaire une bille verte annonçant Authenticated.

Pour la deuxième opération de préparation, j'aimerais attirer votre attention sur le fait que seules les sources sont à gérer par un système de contrôle de versions. J'utilise le terme de source dans le sens général de quelque chose à l'origine d'autre chose : cela recouvre plus que le code source et inclut toutes les ressources d'une application comme les icônes, les fichiers de configuration, les Makefiles, ... C'est-à-dire tout ce qui est nécessaire pour reconstruire l'application et seulement cela. En particulier les exécutables de l'application ne doivent pas être insérés dans le contrôle de version. Dans Xcode, il s'agit du dossier build d'un projet. Il faut donc trouver un moyen de l'exclure du contrôle de version.

Il s'agit d'une simple préférence de Xcode. Par défaut, celui-ci place le dossier build à l'intérieur du dossier du projet. Mais il est possible de choisir un autre emplacement, soit pour tous les dossiers build de tous les projets, soit pour un projet spécifique :

Préparer le projet

Ici, il s'agit de préparer l'arborescence du projet pour qu'elle contienne tout ce qu'on souhaite importer dansSubversion et seulement cela. Si votre projet n'existe pas encore, il vous suffit de le créer et de sauter le paragraphe qui suit. Sinon il y a peut-être un peu de ménage à faire.

En effet, même si vous avez modifié l'emplacement du dossier build, cela ne prendra effet qu'avec la prochaine compilation. Le dossier build qui était présent dans votre projet existe toujours. Il est donc nécessaire de le supprimer avant d'importer le projet dans Subversion. Pour cela, il vous suffit de le glisser dans la corbeille.

La deuxième étape de la préparation du projet vise à respecter l'usage recommandé par Subversion : un projet est un dossier qui contient à son tour trois autres dossiers nommés trunk (le tronc commun de votre projet, c'est-à-dire tout le contenu actuel de votre dossier de projet), branches (les diverses branches de développements, pour corriger un bug ou ajouter une fonctionnalité, ...) et tags (les versions référencées de votre application que vous souhaitez retrouver rapidement).

Pour cela, le Finder suffit. Dans votre dossier de projet, créez un dossier trunk et glissez-y tous les fichiers et dossiers du projet. Ensuite, créez les dossiers branches et tags à côté de trunk.

Importer le projet

Les opérations relatives au contrôle de versions sont réalisées dans Xcode via la fenêtre qui s'affiche en sélectionnant le menu SCM—Repositories. Dans la colonne Repositories à gauche, choisissez votre dépôt monDepotSubversion, puis cliquez sur l'outil Import à gauche dans la barre d'outils.

Localisez votre projet, le dossier qui contient trunk, branches et tags, ajoutez un commentaire qui décrit ce que vous êtes en train de faire, par exemple :

monSuperProjet: Importation du projet dans le dépôt Subversion.

Créer l'espace de travail

Voilà, le projet est importé ! Maintenant il reste une dernière précaution à prendre : le dossier du projet que vous venez d'importer n'est pas un espace de travail Subversion. Même après importation, il reste un dossier simple. Pour créer un espace de travail Subversion il faut récupérer le dossier depuis le dépôt Subversion par une opération de checkout.

D'abord, pour éviter de vous embrouiller entre le dossier simple et l'espace de travail, je vous recommande de glisser le dossier simple à la corbeille. N'ayez pas d'inquiétude, tout est dans le dépôt. Ensuite, je vous suggère de ne récupérer que le tronc commun du projet, le trunk. Voici la marche à suivre.

Dans Xcode, choisissez le menu SCM—Repositories, puis votre dépot Subversion dans la colonne de gauche. Dans le navigateur multicolonnes, choisissez le dossier de votre projet, puis le dossier trunk à l'intérieur de celui-ci. Enfin, cliquez sur l'outil Checkout de la barre d'outils. Choisissez l'emplacement de l'espace de travail de votre projet, nommez-le du nom de votre projet plutôt que la proposition trunk. Finissez l'opération en cliquant sur le bouton Checkout puis sur Open de la fenêtre modale suivante.

Il reste un tout petit détail d'importance : modifier les préférences du projet pour le lier au dépôt Subversion. Affichez les préférences du projet via le menu Project—Edit Project Settings, puis sélectionnez l'onglet General. Presque en bas de la fenêtre, il y a une liste déroulante intitulée SCM Repository: dont la valeur est None. Il suffit de changer cette valeur pour le nom du dépôt d'où vient le projet. Normalement il est indiqué avec un —Recommended à la fin.

Voilà ! vous pouvez commencer à travailler dans votre projet géré en contrôle de versions.

Enregistrer les modifications

La dernière opération, celle que vous utiliserez régulièrement, consiste à enregistrer les modifications au fur et à mesure de votre développement. Pour ma part, j'utilise le menu SCM—Commit Entire Project... qui ouvre une fenêtre dans laquelle je peux saisir le commentaire de commit. En général je décris de façon plus ou moins détaillée sur quoi ont porté les nouvelles modifications.

Récapitulons...

Voilà donc les diverses manipulations qui vous permettent d'utiliser Subversion dans Xcode. Je les reprends ici :

Maintenant, je vous laisse vous familiariser avec tout cela. Je vous invite à consulter la documentation de Subversion pour aller plus loin dans votre prise en main. Et bien sûr, les commentaires sont les bienvenus !

Commentaires

mouviciel

Le samedi 29 novembre 2008 à 15:26

Juste un petit mot pour vous dire qu'avec un soupçon de volonté, on peut utiliser d'autres systèmes de contrôle de version que les trois officiellement intégrés à Xcode. J'en veux pour exemple un article en anglais qui explique la façon de travailler avec Xcode et git. Vous trouverez le lien chez cocoa.fr.

Greensource

Le samedi 3 janvier 2009 à 11:12

Juste un gros merci pour ce tuto, c'est exactement ce que je recherchais. Il n'est peut être malheureusement pas assez "visible" via google car je l'ai découvert grâce à toi sur un forum ;)
Merci encore,
Greensource

Snoff

Le jeudi 19 avril 2012 à 17:19

Effectivement ton tuto est le meilleur que j'ai trouver sur le web et malheureusement il n'est pas aisé référencé sur google car je vient de le découvrir juste après avoir résolu mon problème après deux jours de test

En passant quelqu'un sait comment retourné à une version antérieur avec xcode ?

Ajoutez un commentaire

Les commentaires sont destinés à répondre en public à l'article visé et à ses commentaires déjà publiés. C'est pourquoi seul un pseudonyme vous est demandé ici. Si vous souhaitez échanger avec moi en privé, merci de me laisser un message via le menu contact en haut de la page.

Archive

Rubriques

Abonnement