Cuando se trata de desarrollar para el iPhone, ¿debería usar Git o Subversion?

Me parece que el model centralizado de subversión funciona mejor para el desarrollo de aplicaciones web donde tienes un equipo de ingenieros trabajando actualmente en la misma base de códigos y lanzando constantemente.

Por otro lado, el model distribuido de Git es atractivo para una aplicación de iPhone porque 1) no necesito una connection para explorar el repository 2) es mucho más rápido 3) el desarrollo se compartirá pero no con la frecuencia.

Perdón si respondí mi propia pregunta y no me refiero a un debate, no dude en dar respuestas de una sola línea.

Definitivamente git. Aprendí dos cosas nuevas este año: progtwigción de iPhone y git. Si bien la progtwigción de iPhone me ha hecho odiar mi vida, git ha mejorado la forma en que desarrollo el software. La ramificación indolora ha significado que puedo hacer una ramificación para todo , sin contarle al rest del mundo, y cuando estoy completamente satisfecho con ella puedo fusionarla de nuevo en nuestro maestro / tronco maravillosamente estable.

Es genial, no hay presión para lanzar nada que no esté listo y, dado que puedes verificarlo localmente, es más fácil esculpir compromisos pequeños y útiles.

Todavía estoy indeciso sobre lo del iPhone.

Yo votaría por cualquiera que haya configurado en su tienda.

Una cosa que debe tener en count acerca de los VCS distribuidos frente a los centralizados es que uno distribuido puede hacer todo de manera centralizada. Con git, puede tener un repository público único, la versión autorizada del código, administrado de muchas maneras; por ejemplo, si todos los desarrolladores pueden presionarlo, obtendrá todo lo que desee sobre un VCS centralizado, excepto con todos los beneficios adicionales de git y ninguna de las deficiencias de CVS / SVN.

Si bien Xcode tiene integración SVN, creo que es una implementación extremadamente pobre. Puede consultar (lo siento por el juego de palabras) las excelentes versiones si desea una alternativa.

Habiendo dicho eso, básicamente soy una tienda de un solo hombre (aunque uso dos máquinas) y encuentro que git es mucho más agradable de usar.

Soy una tienda de un solo hombre en lo que respecta al desarrollo de iPhone, y uso Mercurial (que es muy, muy similar a git). Mi factor decisivo fue simplemente que quería aprender a usar un sistema de administración de fonts distribuidas.

La principal diferencia si usted es una tienda de un solo hombre es que el código de bifurcación y fusión es mucho más fácil en git / Mercurial. Una pequeña diferencia es que los repositorys svn ocupan mucho más espacio en disco (pero en un proyecto de iPhone, no es terriblemente probable que sea un problema importante). Aparte de eso, no es probable que note tanta diferencia.

Aquí está mi consejo general sobre el control de la fuente. Subversion es, con mucho, mi herramienta favorita, y la que tengo más experiencia con. Dicho esto, lo primero que hago en cualquier estación de trabajo es download e instalar SVK, que te da acceso desconectado a repositorys de subversión (ya que trabajo pnetworkingominantemente desde una computadora portátil, a veces en un parque o en mi patio trasero sin acceso wifi).

Subversion + SVK te da la mayoría de los beneficios de git o mercurial o bazaar (aunque también los estoy evaluando). Creo que el desarrollo futuro de Subversion va a agregar capacidades SVK / git / Hg para soportar el caso de uso de DVCS.

Así que le aconsejo que NO implemente git si ya está utilizando subversión, y en lugar de eso agarre SVK y continúe con eso (además, es bastante maduro, ya hace algunos años que funciona). Lo malo es que a veces puede ser lento (escrito en perl).

Descargar SVK

La compatibilidad con Svn está integrada en Xcode. Puede instalar un cliente más nuevo manualmente.

Si no hay nadie que te obligue a usar svn, entonces probablemente deberías usar git, ya que git puede interoperar con svn (lo que significa, técnicamente, podrías usar git mientras las personas con las que estás trabajando usan svn; eso es probablemente demasiado problema) .

En cuanto a la integración de XCode, git no tiene ninguno pero no es demasiado difícil hacer funcionar git usando algunas teclas en XCode. Escribí algunas secuencias de commands que lo harían para los commands de git usados ​​más frecuentemente y los coloqué en scripts de usuario. Aquí hay dos ejemplos:

git initialize

#!/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 agregar

 #!/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 

Aquí puede ver un patrón que le permitirá escribir rápidamente los demás. Dentro del dialog "scripts de usuario", puede asignar secuencias de teclas a los commands. Encuentro que en el uso diario raramente necesito ir a la línea de command para usar git.

Realmente no puedo darle una respuesta clara porque no he usado CVS o Subversion por algún time, pero he usado proyectos de Git con otros desarrolladores de iPhone y funciona bastante bien.

El único peligro potencial es que a veces debe resolver conflictos de combinación en el proyecto XCode si más de una persona agrega files nuevos, pero creo que SVN tendría problemas similares.

Si usas git, github.com funciona muy bien como repository, y tienen una gran cantidad de documentation para trabajar con Git en la Mac (solo puedes visitar esa parte del sitio para configurarlo).

¿Cómo se actualiza el cliente svn en XCode? Lo hice en el pasado para pasar de 1.4 a 1.5, pero fue tedioso, difícil, no documentado y con problemas. Desde entonces he tratado de hacer retroceder mi hack (que rompió mi server Apache) y ahora no puedo usarlo en absoluto. Esto es después de actualizar a la última XCode que se supone que es compatible con 1.5 de forma nativa.