Pregunta

A mí me parece que el modelo centralizado de Subversion funciona mejor para el desarrollo de aplicaciones web, donde tienes un equipo de ingenieros trabajando actualmente en la misma base de código y lanzando constantemente.

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

Lo siento si respondí mi propia pregunta y no me refiero a agitar un debate, siéntase libre de dar respuestas de una sola línea.

¿Fue útil?

Solución

Definitivamente git. Aprendí dos cosas nuevas este año: programación de iPhone y git. Mientras que la programación de iPhone me ha hecho odiar mi vida, git ha mejorado la forma Desarrollo software La ramificación indolora ha significado que puedo haga una rama para todo , sin decirle al resto del mundo, y cuándo Estoy completamente satisfecho con eso, puedo fusionarlo nuevamente en nuestro maravillosamente estable maestro / tronco.

Es genial, no hay presión para liberar nada que no esté listo y viendo como puede registrarse localmente, es más fácil esculpir pequeños y útiles compromisos.

Todavía estoy indeciso sobre lo del iPhone.

Otros consejos

Votaría por el que haya configurado en su tienda.

Una cosa que debe tener en cuenta acerca de VCS distribuido frente a centralizado es que un distribuido puede hacer todo lo que puede hacer uno centralizado. Con git, puede tener un único repositorio público, la versión autorizada del código, administrado de varias maneras; por ejemplo, si todos los desarrolladores pueden impulsarlo, obtiene todo lo que desea 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, considero que es una implementación extremadamente pobre. Puede consultar (perdón por el juego de palabras) las excelentes Versiones si desea una alternativa.

Dicho esto, 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 cuando se trata del 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 fuentes distribuidas.

La principal diferencia si es una tienda individual es que la ramificación y fusión de códigos es mucho más fácil en git / Mercurial. Una pequeña diferencia es que los repositorios svn ocupan mucho más espacio en disco (pero en un proyecto de iPhone, es muy probable que esto no sea un problema importante). Aparte de eso, no es probable que note tanta diferencia.

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

Subversion + SVK le brinda la mayoría de los beneficios de git o mercurial o bazar (aunque también los estoy evaluando). Creo que el desarrollo futuro de Subversion agregará capacidades SVK / git / Hg para admitir el caso de uso de DVCS.

Por lo tanto, recomendaría NO implementar git si ya está usando Subversion, y en su lugar tome SVK y continúe con eso (además es bastante maduro, ha existido durante algunos años). Lo malo es que a veces puede ser lento (escrito en perl).

Descargar SVK

El soporte Svn está integrado 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 que, técnicamente, podrías usar git mientras las personas con las que estás trabajando usan svn; eso probablemente sea demasiado) problemas sin embargo).

En cuanto a la integración de XCode, git no tiene ninguno, pero no es demasiado difícil hacer que git funcione usando algunas teclas en XCode. Escribí algunos scripts que lo harán para los comandos git más utilizados y los coloqué en los 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 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

Puede ver un patrón aquí que le permitirá escribir rápidamente los otros. Dentro de los "scripts de usuario" diálogo, puede asignar secuencias de teclas a los comandos. Encuentro que en el uso diario rara vez necesito ir a la línea de comando para usar git.

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

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

Si usa git, github.com funciona muy bien como repositorio, y tienen una excelente documentación para trabajar con Git en Mac (puede visitar esa parte del sitio para configurarlo).

¿Cómo se actualiza el cliente svn en XCode? He hecho esto en el pasado para pasar de 1.4 a 1.5, pero fue tedioso, difícil, no documentado y con fallas. Desde entonces he intentado hacer una copia de seguridad de mi pirateo (que rompió mi servidor Apache) y ahora no puedo usarlo en absoluto. Esto es después de actualizar al último XCode que se supone que admite 1.5 de forma nativa.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top