Question

Il me semble que le modèle centralisé de Subversion fonctionne mieux pour le développement d’applications Web. Vous avez une équipe d’ingénieurs travaillant actuellement sur le même code et libérant constamment.

D'autre part, le modèle distribué de Git est attrayant pour une application iPhone car 1) je n'ai pas besoin d'une connexion pour parcourir le référentiel 2) c'est beaucoup plus rapide 3) le développement sera partagé mais pas aussi souvent.

Désolé si je répondais à ma propre question et si je ne voulais pas susciter un débat, n'hésitez pas à donner des réponses en une ligne.

Était-ce utile?

La solution

Certainement git. J'ai appris deux nouvelles choses cette année: la programmation pour iPhone et git. Alors que la programmation sur iPhone m'a fait détester ma vie, git a amélioré la façon dont Je développe des logiciels. La ramification sans douleur a signifié que je peux faire une branche pour tout , sans rien dire au reste du monde, et quand Je suis complètement satisfait de cela, je peux le fusionner dans notre merveilleusement stable maître / coffre.

C’est génial, il n’ya pas de pression pour libérer tout ce qui n’est pas prêt et visible comme vous pouvez le localiser localement, il est plus facile de sculpter de petits commits utiles.

Je suis toujours indécis sur l'iPhone.

Autres conseils

Je voterais pour celui que vous avez configuré dans votre boutique.

Une chose que vous devez comprendre à propos du VCS distribué par opposition au VCS centralisé est qu’un distributeur distribué peut tout faire comme un centralisé. Avec git, vous pouvez avoir un seul référentiel public, la version faisant autorité du code, gérée de plusieurs façons. Par exemple, si tous les développeurs peuvent y accéder, il obtiendra tout ce que vous voulez d'un VCS centralisé, sauf avec tous les avantages supplémentaires de git et aucune des insuffisances de CVS / SVN.

Alors que Xcode a une intégration SVN, je trouve que son implémentation est extrêmement médiocre. Vous pouvez consulter (désolé pour le jeu de mots) l'excellent versions si vous souhaitez une alternative.

Cela dit, je suis essentiellement un magasin à personne (bien que j'utilise deux machines) et je trouve que git est beaucoup plus agréable à utiliser.

Je suis un homme dans le développement d’iPhone, et j’utilise Mercurial (très similaire à git). Mon facteur déterminant était simplement le fait que je voulais apprendre à utiliser un système de gestion de sources distribué.

La différence principale si vous êtes un one man shop est que la création et la fusion de code est beaucoup plus facile dans git / Mercurial. Une différence mineure est que les référentiels svn prennent beaucoup plus d'espace disque (mais sur un projet iPhone, cela ne devrait pas être un problème majeur). En dehors de cela, vous ne remarquerez probablement pas beaucoup de différence.

Voici mon conseil général sur le contrôle de source. La subversion est de loin mon outil préféré, et celui avec lequel j'ai le plus d'expérience. Cela dit, la première chose que je fais sur un poste de travail est de télécharger et d'installer SVK, ce qui vous donne un accès déconnecté aux référentiels de subversion (car je travaille principalement à partir d'un ordinateur portable, parfois dans un parc ou dans ma cour sans accès wifi).

Subversion + SVK vous offre la plupart des avantages de git ou mercurial ou bazar (bien que je les évalue aussi). Je pense que le développement futur de Subversion va ajouter des fonctionnalités SVK / git / Hg pour prendre en charge le cas d'utilisation DVCS.

Donc, je vous conseillerais de ne PAS déployer git si vous utilisez déjà subversion, et prenez plutôt SVK et continuez avec ça (en plus, il est assez mature, il existe depuis quelques années maintenant). L'inconvénient est qu'il peut parfois être lent (écrit en perl).

Télécharger des fichiers SVK

Le support Svn est intégré à Xcode. Vous pouvez installer un nouveau client manuellement.

Si personne ne vous oblige à utiliser svn, vous devriez probablement utiliser git, car git peut interagir avec svn (ce qui signifie que techniquement, vous pourriez utiliser git pendant que les personnes avec lesquelles vous travaillez utilisez svn; c'est probablement trop des problèmes cependant).

En ce qui concerne l’intégration XCode, git n’en a pas, mais il n’est pas trop difficile de le faire fonctionner avec quelques frappes de touche dans XCode. J'ai écrit des scripts qui le feront pour les commandes git les plus fréquemment utilisées et les ai placés dans des scripts utilisateur. Voici deux exemples:

initialisation de git

#!/bin/sh
# 
# This script initializes a git repository and adds all the elements 
# of the project directory to the repository


# Set the basic variables of the script.
project_directory=`osascript << APPLESCRIPT
tell application "Xcode"
    set mypath to the project directory of project 1
    set mypath to the POSIX path of mypath as string
end tell
APPLESCRIPT`  

cd $project_directory

# create the git project configuration files
cat << EOF > .gitignore
.gitignore
.DS_Store
.gitattributes
build/*
EOF

cat << EOF > .gitattributes
*.pbxproj -crlf -diff -merge
EOF 

/usr/local/bin/git init
/usr/local/bin/git add *

git add

#!/bin/sh
# 
# This script does a git adds a file of the user's choosing
# to the git repository.


# Set the basic variables of the script.
project_directory=`osascript << APPLESCRIPT
tell application "Xcode"
    set mypath to the project directory of project 1
    set mypath to the POSIX path of mypath as string
end tell
APPLESCRIPT`  

files_to_add=`%%%{PBXUtilityScriptsPath}%%%/AskUserForExistingFileDialog "Add files"`

cd $project_directory

/usr/local/bin/git add $files_to_add

Vous pouvez voir ici un motif qui vous permettra d’écrire rapidement les autres. À l'intérieur du " scripts utilisateur " dialogue, vous pouvez affecter des séquences de touches aux commandes. Je trouve que dans l’utilisation quotidienne, j’ai rarement besoin de passer en ligne de commande pour utiliser git.

Je ne peux pas vraiment vous donner de réponse claire car je n’utilise pas CVS ou Subversion depuis un certain temps - mais j’ai utilisé des projets Git avec d’autres développeurs iPhone et cela fonctionne assez bien.

Le seul danger potentiel est que vous devez parfois résoudre des conflits de fusion dans le projet XCode si plusieurs personnes ajoutent de nouveaux fichiers - mais je penserais que SVN aurait des problèmes similaires.

Si vous utilisez git, github.com fonctionne très bien en tant que référentiel. Il contient une excellente documentation permettant de travailler avec Git sur Mac (vous pouvez simplement visiter cette partie du site pour la configurer).

Comment mettre à niveau le client svn dans XCode? Je l'avais déjà fait dans le passé pour passer de 1,4 à 1,5 mais c'était fastidieux, difficile, non documenté et glitch. Depuis, j'ai essayé de faire marche arrière (ce qui a cassé mon serveur Apache) et je ne peux plus l'utiliser du tout. C’est après la mise à niveau vers le dernier XCode, censé prendre en charge la version 1.5 de manière native.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top