vendredi 10 février 2012

Version Control est votre ami

La plupart des développeurs de nouveaux, surtout ceux qui n'ont pas des intentions sérieuses de devenir un programmeur professionnel, pensent généralement des logiciel de contrôle de version comme étant quelque chose qu'ils n'ont pas besoin. Heck, j'ai résisté à l'utiliser pendant une longue période, même après la programmation est devenue mon gagne-pain parce que sur la plupart de mes projets, j'ai été le seul développeur. La simultanéité est tout simplement pas un problème avec un développeur, non?

Eh bien, oui, c'est vrai. Mais, le contrôle de version est toujours intéressant d'utiliser même si vous êtes un développeur unique. Mettre vos projets sous contrôle de version vous donne la possibilité de «défaire» le temps passé votre dernière ouverture de Xcode. Il garde la trace de ce que votre code a ressemblait au fil du temps, et vous donne un niveau supplémentaire de sauvegarde. Accidentellement jetez votre projet à la poubelle et il vide? Pas de soucis, juste le check-out une nouvelle version. (Note: contrôle de version n'est pas un substitut pour un plan de sauvegarde!)

Et, tout ce que vous devez utiliser le contrôle de version est déjà sur votre disque dur, et Xcode sait tout sur le contrôle de version, donc il n'est pas plus compliqué à utiliser. Marchons à travers la mise d'un projet sous contrôle de source, allons-nous?

Note: Je connais beaucoup de gens aiment git. Bien que je ne suis pas personnellement, certaines fonctionnalités de git sont vraiment super. Mais, pour un seul développeur de projets, git ne fournit pas de réels avantages, et vous perdez l'intégration de Xcode. En conséquence, je suis coller à la subversion de ce tutoriel.

Choisir un emplacement de référentiel


Tous les systèmes de contrôle de source stockent leurs données dans ce qu'on appelle un «référentiel». La première décision que vous devez faire avant d'utiliser le contrôle de version est de savoir où mettre votre dépôt subversion. Je choisis de mettre des mines sur un disque dur externe, car il me donne un niveau supplémentaire de redondance de sauvegarde. Mon code source de travail est toujours sur mon MacBook Pro disque dur interne. J'ai un disque dur externe séparée pour les sauvegardes nocturnes, et un second disque dur externe que j'utilise pour mes référentiels de code et quelques autres choses (comme mon iTunes & bibliothèques iPhoto). Cela signifie que mon projet est sur trois différents périphériques physiques, ce qui signifie que je suis beaucoup moins-susceptibles de subir une perte catastrophique. Je pouvais (et le plan d'un jour) rendre les choses encore mieux par la sauvegarde à un emplacement distant.

Vous n'avez pas nécessairement besoin d'avoir votre référentiel sur un disque dur séparé, cependant. Vous pouvez le mettre à droite de votre principal, le disque dur interne, et vous obtiendrez toujours des avantages. La meilleure option, à bien des égards, est d'utiliser un dépôt subversion à distance, cependant la mise en place l'une de ces travaux est beaucoup plus que un local afin que nous allons coller avec des référentiels de fichiers local pour ce tutoriel. Il n'y a aucune différence dans l'aide d'un référentiel local ou à distance, autre que le format de l'URL que vous utilisez, donc après cela, vous devriez être capable de mettre en place à l'utilisation de Subversion basé sur des services comme Google Code.

Si vous allez avoir besoin d'accéder au code source à partir de plus d'un compte, créer un répertoire dans / Users / Shared / subversion est un bon choix pour la tenue de votre référentiel.

Référentiels peut contenir plusieurs projets, bien que de nombreux développeurs préfèrent avoir un référentiel distinct pour chaque projet. Le choix est vôtre.

Création du référentiel


Création du référentiel est très facile. Ouvrez Terminal.app, naviguez vers le répertoire où vous voulez créer le référentiel, et svnadmin tapez créer [nom du projet]. Une fois que vous faites cela, vous devez vous assurer que toutes les personnes qui ont besoin d'accéder au référentiel avoir lu, écrire et exécuter des privilèges sur elle. Donc, si vous vouliez créer un référentiel appelé HelloWorld dans / Users / Shared / subversion, vous devrez exécuter les commandes suivantes:

cd /Users/Shared
mkdir subversion
cd subversion
mkdir HelloWorld
svnadmin create HelloWorld
chmod -R 777 HelloWorld

Notez que vous pouvez remplacer quelque chose comme chmod-R 770 HelloWorld si vous êtes la seule personne qui ait jamais aller à accéder au référentiel.

Mise en place des répertoires standard de Subversion


Bien qu'il n'est pas nécessaire ou forcée, il ya une généralement acceptées "droit chemin" de la mise en place d'un dépôt Subversion. Par défaut, un dépôt Subversion a trois répertoires:

  • trunk - Où tout le code source est stockée

  • branches - Une branche est une version spécifique de son code source. Ce ne sont que des copies (en fait, plus comme des liens symboliques ou des alias) pour des versions spécifiques du code source dans le coffre. Ainsi, vous pouvez avoir deux branches représentant la version de développement actuelle et la version actuelle, ou vous pourriez avoir des différents pour chaque version dev.

  • tags - Les tags sont exactement comme les branches, autant que Subversion est contrôlée - ils sont des instantanés d'une version donnée de votre code source. Les tags sont souvent utilisées pour des versions spécifiques, de sorte que vous pourriez avoir un répertoire sous balises appelé Release-1.0 qui contient une copie du code qui a été utilisé pour créer la première version fournie de votre demande


En tant que développeur unique, vous ne pouvez pas utiliser des branches ou des étiquettes lorsque vous commencez à utiliser le contrôle de version. C'est toujours une bonne idée de mettre en place ces répertoires standard dans le cas où vous décidez que vous voulez que la fonctionnalité dans le futur. Aussi, si jamais vous décidez d'ouvrir-source de votre application et la rendre disponible via Google Code ou SourceForge, d'autres développeurs vont s'attendre à ces répertoires standard.

Pour créer les répertoires, vous n'avez pas utiliser le répertoire mkdir standard, mais vous utilisez une commande similaire émis par l'outil svn en ligne de commande. Pour créer le répertoire tags dans notre projet HelloWorld ci-dessus, vous devrez exécuter la commande suivante:

svn mkdir file:///Users/Shared/Subversion/HelloWorld/trunk file:///Users/Shared/Subversion/HelloWorld/branch file:///Users/Shared/Subversion/HelloWorld/tag

Après avoir tapé cela, il va vous invite pour un commentaire. Vous pouvez laisser quelque chose de vide, ou un type comme "la mise en place des répertoires de subversion standard». Par défaut, la subversion t sera probablement utiliser vi ou emacs pour solliciter les commentaires de votre part. Voici une petite astuce: si vous êtes un utilisateur de Textmate comme moi, réglez la variable d'environnement SVN_EDITOR à la valeur maté-w dans votre profil bash (les utilisateurs de bash) ou cshrc (les utilisateurs de tcsh) et il vous invite pour le commenter. Textmate utilisant au lieu d'un éditeur de ligne de commande. Vous pouvez également définir la variable d'environnement EDITOR à la même valeur et qui causera plusieurs autres programmes Unix standards à utiliser pour l'édition de texte TextMate, plutôt que l'un des éditeurs Unix standard.

Une fois que vous tapez votre commentaire, enregistrez et quittez l'éditeur (ou fermer la fenêtre si vous êtes dans TextMate), il va ajouter les trois répertoires de votre référentiel.

Raconter Xcode sur le référentiel


Ensuite, le lancement Xcode et sélectionnez Preferences de la Xcode menu. Lorsque la fenêtre apparaît, faites défiler la fenêtre du haut tout le chemin à droite. Le deuxième élément dernière est SCM. SMC est synonyme de «gestion de la configuration du logiciel», et est un amateur terme pour le contrôle de version. Cliquez sur cette icône et vous obtiendrez une fenêtre qui ressemble à ceci:



Cliquez sur la petite icône dans le coin inférieur gauche pour ajouter un référentiel. Vous serez invité à entrer un nom et de préciser ce que SCM (contrôle de version) du système que vous utilisez. Le nom ici n'a pas à correspondre au nom que vous avez utilisé dans votre référentiel. Sélectionnez Subversion que votre système SCM, et tapez "Bonjour le monde" pour le nom.


Hit retour, et il va créer un nouveau référentiel. Configurez ce en tapant l'URL suivante dans le champ URL (il va extraire le reste des champs dont il a besoin de l'URL):

file:///Users/Shared/subversion/HelloWorld

Après vous faites cela, votre fenêtre devrait ressembler à ceci:



Assurez-vous que vous voyez le petit point vert et le mot «authentifié» ci-dessous les champs de texte. C'est votre indication qu'il trouve le référentiel. Si vous ne voyez pas cela, vérifiez l'URL pour vous assurer de ne pas vous tromper dans quelque chose.

Vous pouvez maintenant cliquer sur le bouton OK et fermez la fenêtre des préférences. Voyons maintenant importer un projet existant dans le contrôle de version. Si vous voulez jouer à la maison, créez une nouvelle application iPhone de la Voir application basée sur modèle et l'appeler "Bonjour le monde". Vous n'avez pas besoin de faire des changements, mais quand vous avez terminé, ne fermez la fenêtre du projet Xcode.

Importation d'un projet Xcode dans le référentiel


Toujours dans Xcode, sélectionnez Repositories de la SCM menu. Il devrait faire apparaître une fenêtre qui ressemble à ceci:


Cliquez sur le dossier appelé trunk, Puis sélectionnez le Import bouton de la barre d'outils. Recherchez et sélectionnez "Bonjour le monde" dossier du projet.


Maintenant que votre projet est sous contrôle de source, mais le projet dans son emplacement d'origine ne le sait pas. Nous avons besoin de ce qu'on appelle une «copie de travail" du code. Une copie de travail n'a fichiers invisibles qui le relient au référentiel. Alors, allez glisser le projet initial à la poubelle. Ouais, je suis sérieux. Allez jeter. Une fois que vous avez fait cela, sélectionnez Bonjour tout le monde under trunk dans la fenêtre de dépôt de Xcode, et appuyez sur la Checkout bouton dans la barre d'outils. Il vous invite pour un emplacement. Sélectionnez où vous voulez le projet et cliquez sur le Checkout bouton. Après qu'il l'enregistre, il vous invite à ouvrir le projet:


Select Ouvrez World.xcodeproj Bonjour et Xcode va ouvrir le projet, qui est maintenant sous contrôle de source.

Pas tout à fait Done Yet


De Xcode Project menu, sélectionnez Paramètres du projet .... Cherchez un menu contextuel dans la partie inférieure appelée SMC référentiel. Cliquez sur ce et sélectionnez Bonjour tout le monde (Subversion) - Recommandé.


Une fois que vous avez fait cela, une nouvelle colonne apparaît dans votre projet Groupes & panneau des fichiers, Et votre projet est prêt à être travaillé. Cela nouvelle colonne vous indique l'état du fichier il est à côté de. Si cette colonne à côté d'un fichier spécifique est vide, alors que le fichier n'a pas été modifié depuis sa dernière vérification po Si elle a point d'interrogation, le fichier doit être ajouté au référentiel. Si elle a un M, alors que le fichier a été modifié depuis la dernière check-in. Si elle a un côté de A à elle, il sera ajouté au référentiel prochaine fois que vous vérifiez vos changements.

Lorsque vous ajoutez des fichiers à votre projet, vous pouvez les sélectionner et de choisir Ajouter au référentiel de la SCM menu. Pour valider vos changements au référentiel (alias "les check-in"), sélectionnez Valider les modifications ... de la SCM menu. Si vous décidez que vous n'aimez pas les changements que vous avez fait, vous pouvez sélectionner Supprimer les modifications ... qui sera rollback votre projet pour correspondre à la dernière version dans le référentiel.

Il ya aussi d'autres options dans le SCM menu. Vous pouvez comparer les différentes versions, mise à jour vers une version spécifique, et de regarder des annotations pour des révisions différentes. Une couverture complète des fonctionnalités de Subversion est au-delà de la portée de cet article, mais il ya un grand livre gratuit qui couvre tous les aspects de l'utilisation de Subversion pour le contrôle de version Vous pouvez l'obtenir here.

Aucun commentaire: