2009-01-10 10 views
21

Estoy desarrollando una aplicación para Mac como un esfuerzo de equipo pequeño (yo + otra persona). Estamos ubicados en diferentes ciudades, y hemos empezado a ver la necesidad de una gestión de control de fuente sólida.¿Qué sistema SCM para Xcode?

Ninguno de nosotros tiene experiencia con esto, y los dos somos relativamente nuevos en Cocoa/Obj-C/Xcode (pero tenemos conocimiento de C).

¿Alguien tiene alguna recomendación sobre qué sistema de SCM elegir? Entiendo que mucha gente usa Subversion, que también es compatible con Xcode 3.1. ¿Alguien tiene experiencia con el uso de Subversion a través de Xcode? ¿O es una mejor opción elegir una alternativa GUI independiente, como las versiones?

Agradecido por cualquier aporte sobre esto.

Gregor Tomasevic, Suecia

Actualizar/experiencias personales: Desde este puesto, hemos intentado Versiones y Cornerstone (ambos de los cuales son SVN GUI-clientes), así como Xcodes soporte integrado para SVN . No estábamos particularmente satisfechos con las Versiones, que parecían tener algunos problemas con la asignación de archivos/archivos de compilación no versionados. El soporte SVN incorporado en Xcode funciona bastante bien, aunque probablemente tenga limitaciones con las que aún no nos hemos encontrado. Cornerstone es simple de usar y potente, y no parece sufrir los problemas que encontramos con las versiones.

Hasta ahora, hemos intentado confirmar, actualizar el repositorio, revisar las últimas/versiones anteriores de nuestros archivos y hemos trabajado un poco con la comparación de archivos. Podría ser un juego de pelota completamente diferente una vez que comiences a trabajar extensamente con la ramificación, un área que nos han dicho que estos clientes de GUI pueden tener algunas debilidades.

Por lo que vale (y con solo días de evaluación) Cornerstone parece ser una alternativa algo mejor, aunque para SCM más simple, Xcode también funciona bien.

Gracias por todos los comentarios.

Respuesta

6

No se puede equivocar al usar Subversion.

Si, como a mí, no le gusta demasiado la integración de SVN de Xcode, siempre puede optar por utilizar las herramientas de línea de comandos, o una de las varias aplicaciones de GUI como Versiones, CornerStone o SvnX. La mayoría de estas herramientas funcionan juntas muy bien, por lo que no necesariamente estás vinculado a la herramienta con la que comienzas.

Yo personalmente hago la mayor parte de mi trabajo con las versiones, y uso las herramientas de línea de comandos con las mismas copias de trabajo de vez en cuando.

Si se siente cómodo trabajando con herramientas de línea de comandos exclusivamente hasta que alguien cree una buena aplicación GUI, git es una opción bastante viable también.

divulgación: Soy una de las personas que trabajan en versiones, por lo que podría ser un poco sesgada;)

+1

¿Utiliza versiones? Hay una sorpresa! ;-) – Abizern

+9

Un paradigma en sí mismo no representa un gran flujo de trabajo. El mero hecho de que pueda elegir entre el cliente de línea de comando, Cornerstone, Versions, SvnX, etc. le da a SVN una ventaja muy tangible. –

+0

@foljs: ¿así que los ingenieros de software del mundo real tienen un siglo de experiencia con SCM centralizado? ;-) –

1

Si va por la subversión, he oído decir cosas buenas sobre Springloops. También codigo junto con algunos amigos de una manera similar y usamos Github. Git es una experiencia maravillosa. No uso ninguna GUI, ya que soy mucho más eficiente con un intérprete de comandos de shell. Pero, por supuesto, me gustaría que Xcode tuviera soporte para repositorios Git.

6

El soporte de Subversion de Xcode es bastante bueno. El 90% de las actividades de SVN que realizo son fácilmente realizables desde Xcode. Por las otras cosas, acabo de abrir Terminal.

Hay un par de cosas en su aplicación cliente SVN que son molestas:

  • El código que comprueba para ver qué archivos locales se han modificado parece funcionar con un temporizador de fondo, y es bastante latente. En ocasiones, Xcode tarda 5 minutos en mostrar un archivo modificado. Lo mismo es aún más exagerado w/r/t modificaciones a distancia.
  • Algunas veces cuando cambia el nombre o elimina un archivo que no está bajo control de fuente, aparecerá un diálogo que le preguntará "¿Desea [cambiar el nombre/eliminar] también este archivo en SVN?" Y las opciones son "Sí" o "Cancelar". Eliges Sí por desesperación solo para recibir un merecido error SVN.

En general, lo recomendaría.

20

Xcode solo es compatible con Subversion, Perforce y CVS. Sin embargo, también hay sistemas de control de versiones distribuidos, como Mercurial, Bazaar y Git. No tienen GUI nativas de Mac, pero aún debes considerarlas. Personalmente, me encanta gestionar mis proyectos en repositorios de Mercurial.

[Agregado 2011-03-10] Xcode 4 agrega compatibilidad para Git. Varios de nosotros hemos presentado solicitudes para el apoyo de Mercurial; usted debería, también, si lo desea.

+2

He oído (pero no probado todavía) de gitX (http://gitx.frim.nl/) para una interfaz gráfica de usuario git. – mouviciel

+3

También está Murky (https://bitbucket.org/snej/murky/) para Mercurial. –

+0

GitX es realmente bueno, y Murky también es decente. Ambos tienen sus propios aspectos de la interfaz de usuario, pero son buenas herramientas, ambos. – RyanWilcox

3

Subversion es la solución de control de fuente de OS X tradicional, en Leopard es compatible con Xcode y OS X, sin mencionar las aplicaciones GUI de terceros (algunas de las cuales son muy ingeniosas). Sin embargo, a pesar de todo esto, muchos desarrolladores independientes de OS X han cambiado a Git en el último año o dos. Como desarrollador único, puedo decir que Git resultó ser una muy buena solución para mí, y junto con Github es una gran solución para un pequeño esfuerzo de equipo.

5

Advertencia: Si simplemente le dice a XCode que agregue un proyecto a un repositorio dándole el directorio de nivel superior, agregará el directorio de compilación al repositorio, lo que por supuesto es algo terrible de hacer.

Para evitar esto, debe mover el directorio de compilación a otra ubicación para que XCode no intente importarlo o agregar manualmente las carpetas discretas de un proyecto, una por una.

+0

Simplemente agregue el directorio de nivel superior, luego elimine el directorio de compilación del repositorio. Es molesto, pero es bastante fácil de recorrer. – kubi

+1

Creo el proyecto, lo hago completamente limpio (elimino los directorios de construcción), luego hago mi primer commit (add o lo que sea). Más tarde, cuando se crea el directorio de compilación, svn simplemente lo ignora (coloca un "al lado") porque nunca lo agregué. –

0

Mercurial (como GIT) se "distribuye" y tal vez considerado como más moderno y-y- viene de svn (pero menos establecido). Si quiere registro automático usando mercurial, se puede añadir la línea:

cometer hg -m "Xcode automático cometer"

como parte de un "Ejecutar script" etapa de la construcción de XCode, como se encuentra en : Proyecto > Nueva fase de construcción> Nuevo script Ejecutar fase de construcción

+6

Ooh, un mal consejo. Controlar cada vez que el código se genera es apestoso; checkins estará limitado a archivos individuales (la agrupación de archivos da una pista natural sobre el significado del checkin), ¡además de que no vale la pena guardar todos los cambios de código que se generan! Finalmente, terminará con miles de checkins, todos con la misma entrada de registro, por lo que es difícil encontrar un cambio específico en el futuro. -1 en espíritu, aunque no me siento lo suficientemente malo como para menospreciarlo, después de todo, usted me recomendó Hg. –

+0

Estoy de acuerdo en que es una historia muy complicada, pero si para proyectos pequeños me resulta más conveniente hacer esto y al menos asegurar que puedo dar marcha atrás según sea necesario. Si realmente quieres algo más limpio entonces, por supuesto, es checkins manuales y/o puntos de ramificación con nombre. – Greg

14

Hay una bonita interfaz gráfica de Mercurial en Mac llamada MachG: http://jasonfharris.com/machg/

es gratuito y muy agradable en mi humilde opinión.

+3

El paisaje ha cambiado desde que se publicó esta pregunta por primera vez, y aunque es genial que Apple esté esforzándose más en la integración de SCM con Xcode4, MacHG aún supera a cualquier otro cliente SCM visual que haya visto hasta la fecha: Xcode4 Dev Preview 2 included-hands abajo. Así que, aunque Gregor probablemente se sienta afianzado con svn por ahora, cualquier recién llegado debería probar la combinación de Mercurial (es decir, hg) + MacHg + http://bitbucket.org (si necesita un equivalente a github). – clozach

+0

¡Seconded! También he estado experimentando con el control de versiones distribuidas y recientemente descubrí MacHG. ¡Es tan bueno, lo extraño cuando estoy trabajando en Windows! (Y eso es incluso con TortoiseHG.) –

2

Si está interesado en usar Mercurial en OS X, pruebe SourceTree, no es gratis, pero tiene un precio competitivo y tiene una sensación de Mac OS muy pulida. Lo he estado usando para proyectos personales durante los últimos meses y lo encuentro intuitivo y razonablemente robusto.

Está disponible a través de Mac App Store y es compatible con Git y Mercurial. Tienen un sitio web en http://www.sourcetreeapp.com/ con más información.

+1

Ha sido gratis desde que Atlassian lo compró. (Han mencionado algunas veces que esto es "por un tiempo limitado", pero no he visto ninguna mención de una fecha específica en la que ese tiempo se agotará). –

Cuestiones relacionadas