¿Qué es una buena alternativa no distribuida a la subversión que tiene una excelente ramificación y soporte de fusión?

¡Estoy harto y cansado de rastrear manualmente mis sucursales y combinarlas en mi repository! Es demasiado propenso a errores. En un mundo en el que todo el mundo parece tener la idea de networkingucir la duplicación y automatizar todo, la ramificación / fusión de subversión parece sobrada de los años 80. ¿Cuál es una buena alternativa a la subversión que tiene una excelente ramificación y soporte de fusión sin agregar la complejidad de un paradigma SCM distribuido? Idealmente sería gratis, pero si tengo que desembolsar algo de dinero, me inclinaría si fuera lo suficientemente bueno.

¿Has actualizado a Subversion 1.5? Incluye seguimiento de fusión automatizado. Esto puede abordar su problema. Parece que ya está familiarizado con la herramienta en sí y es gratis. Por lo tanto, si actualiza su solución actual a 1.5, casi no tendrá curva de aprendizaje ni costo cero, además no tendrá que soportar el dolor de trasladar su código existente a un nuevo sistema de control de código fuente.

¿Has analizado el control de versiones distribuidas, como Git? Cada "salida" es esencialmente una twig … es una manera bastante diferente de pensar sobre el control de la fuente.

Git es gratuito, creado por Linus Torvalds y utilizado para Linux (entre muchos otros proyectos, por supuesto).

Perforce es una herramienta excelente, pero más allá de 2 usuarios te costará, ya que está dirigido a profesionales. Lo usamos con un esquema de ramificación bastante pesado (1 twig por característica durante el desarrollo principal) y funciona bien. Algo así como la ramificación de "Spider web" utilizada por Microsoft (que usaba una versión anterior modificada de Perforce), pero ahora no puedo encontrar la historia en línea.

También estaba harto de estas limitaciones en versiones anteriores de Subversion. Sin embargo, nadie más en mi empresa utiliza la bifurcación y la fusión. Cada uno de ellos, cuando probaba una nueva característica, obtenía otro pago, hack-hack-hack y se deshacía de él si era malo: se comprometía cuando era bueno. A veces cometieron algo malo;)

Así que comencé a usar git + svn. Significado: Tengo svn checkout y en este directory he comenzado git. Ahora tengo una rápida fusión y ramificación, y no interrumpo a ninguna otra. Si necesito probar la nueva característica X, simplemente ramifique / revise / piratee-piratee. Si ahora necesito tomar alguna actualización crucial de nuestro repository SVN: git stash, git checkout master, svn update, git commit -a, git checkout feature-X, git rebase, git stash apply (todo esto porque git-svn no trabajar en Windows).

Parece una gran cantidad de operaciones, pero son rápidas. Quiero decir realmente rápido. Y dame la flexibilidad que necesito (mira mi artículo en git + visual studio ).

Creo que Bazaar puede hacer cosas similares y podría ser mejor en una cosa: puede soportar fácilmente el desarrollo no distribuido y basado en repositorys centrales .

Cualquiera de las soluciones distribuidas. Git, mercurial etc. Mi preference sería git.

Vine de una tienda de Perforce a una tienda de Subversion y me perdí el gran apoyo de bifurcaciones y fusiones que tiene Perforce. Entonces, Perforce sería mi primera recomendación, pero luego cuesta dinero :).

Subversion 1.5 parece prometedor para su soporte de seguimiento de fusión, pero está marcado como fundamental y no parece que tendrá un mínimo de compatibilidad de fusión que estoy dispuesto a aceptar (es decir, similar a Perforce) en el corto ploop.

Por lo tanto, me estoy inclinando hacia un VCS distribuido, específicamente Bazar:

  1. La ramificación y la fusión funcionan muy bien y de la manera en que espero
  2. Se puede usar con un flujo de trabajo centralizado
  3. Admite twigs de Subversion, copys de trabajo y repositorys . Esto significa que mi equipo puede usar Bazar dentro de una organización más grande que usa Subversion y todavía compartir código con ellos.

Deberías echarle un vistazo a Accurev. Apunta y hace clic en la creación de nuevas secuencias (como twigs, pero mejor IMO), y todo el concepto de código que fluye a través de las streams hace que la fusión sea una tarea mucho less dolorosa y frecuente. Es muy simple de administrar, tiene una licencia gratuita para 3 usuarios y tiene excelentes herramientas de visualización integradas.

git

Me he enamorado de eso.

¿Alguna vez se preguntó por qué tiene tantas operaciones de sucursal / fusión? ¿Hay alguna forma de simplificar su process de desarrollo?

Subversion, en mi humilde opinión, es una buena aplicación del principio KISS (Keep it simple, stupid). Traducción: Según mi experiencia, obtendrás un impulso de productividad mucho mayor al agilizar tu process de desarrollo que al get una herramienta más compleja.

He usado Clearcase mucho. Siempre que realice sus fusiones con frecuencia, puede ser bastante sencillo y también es posible tener trabajos de fusión ejecutándose en segundo plano. Debes intervenir si hay un conflicto de fusión.

Sin embargo, es costoso y puede ser difícil encontrar administradores expertos de Clearcase.

Perforce es gratis para hasta 2 usuarios.

No estoy 100% seguro de lo que espera que pueda / deba automatizar, pero forzosamente es de muy alta calidad. Puede crear y mantener sucursales fácilmente y puede fusionarse fácilmente. Es bastante fácil elegir cambios específicos que haya realizado en una twig y fusionarlos en otra twig con un alto grado de automation.

Una cosa que aún no se ha mencionado es que es perfectamente posible usar git de la misma manera centralizada a la que estás acostumbrado con Subversion . Realmente es una excelente pieza de software.

Plastic SCM tiene que ver con la ramificación y la fusión … es más fácil. Verifique su GUI y compárela con las otras alternativas.

git – http://git.or.cz/ (soy bastante aficionado a git, great @ branching y desarrollo distribuido) – http://github.com/ es un gran ejemplo de trabajo.

Git , Mercurial, Bazar, Darcs

Probablemente me llame la atención por esto, pero si no buscas un producto gratuito, vale la pena echarle un vistazo al Servidor MS Team Foundation. A diferencia de otros productos de MS que seguirán sin nombre, el control de origen es sólido y completamente funcional. Combine eso con la integración IDE, el motor automatizado de compilation / testing y la funcionalidad de administración del trabajo, y es bastante asombroso. Por supuesto, está dirigido a empresas y tiene un precio acorde.

Nota: No me molestaría con esto si no se desarrolla principalmente en Visual Studio.

Esto se enmarca en términos de alternativas al CVS, en lugar de a SVN, pero no importa: enumera varias alternativas, incluidas otras no distribuidas. http://better-scm.berlios.de/alternatives/

Si bien las alternativas a la subversión pueden ser agradables, la subversión con lápiz de labios puede funcionar bien. Aquí hay una reseña de interfaces para subversión que se ejecutan en Mac: http://www.geocities.com/~karlvonl/blog/2006/03/daddy-needs-new-subversion-gui.html

Bazar, por los creadores de Ubuntu.

http://bazaar-vcs.org/

¿Por qué elegir Bazar?

http://bazaar-vcs.org/BzrWhy

Simplemente agregando a DarenW: para Windows hay un producto de server Subversion realmente agradable que es gratis y hace que la vida sea un sueño: Servidor VisualSVN . Esto empaqueta la última versión de Subversion en un único instalador de MSI y agrega una console de administración muy útil.

¿Qué crees que es complejo sobre DVCS como GIT? Es más simple en algunos aspectos: sin cliente / server, sin repository en un lugar con el directory de trabajo en otro lugar, la administración del usuario no está incorporada (use ssh si lo necesita). Como dijo Jim Puls, puede usar DVCS como no distribuido si lo desea. Utilizo GIT para proyectos individuales, incluso aquellos que duran solo unas pocas semanas. No hay nada exactamente igual a Tortoise, pero gitk, qgit y git-gui son mejores para esas funciones que las que he visto con SVN. Solía ​​preferir las guias, pero ahora soy bastante aficionado a la command-line de git, pero echa un vistazo a easygit para algunas improvisaciones.