¿Cuáles son sus sistemas de control de versiones favoritos? [cerrado]

41

Esta es más una pregunta de discusión que un intento real de determinar el "mejor", ya que eso varía claramente según las necesidades de la organización. Tengo más curiosidad sobre los argumentos a favor de los diferentes sistemas en todas las categorías (centralizado frente a distribuido, abierto frente a propietario, etc.).

Entonces, ¿cuál crees que es el mejor sistema de control de versiones?

Fishtoaster
fuente
1
en.wikipedia.org/wiki/Comparison_of_revision_control_software es una excelente tabla de comparación para exactamente esto. Pregunta de discusión ... wiki de la comunidad?
Chris
44
El primero que publica el nombre, obtiene el representante ... Esto debería ser wiki comunitario.
takeshin
No noté que esto ya es un wiki de la comunidad .
tomas

Respuestas:

81

Mercurial

Debido a su capacidad sofisticada para bifurcar y fusionar código, es lo mejor que he usado. Todo el paradigma DVCS tiene mucho sentido. No he usado Git, pero supongo que también califica.

2 revoluciones
fuente
Tengo que probar Mercurial algún tiempo desde que ya he intentado 2 de la gran 3. Y como Google Código soporta ...
TheLQ
2
Mercurial es dulce si estás usando Netbeans. La integración IDE es perfecta.
Seun Osewa
44
Prefiero Mercurial simplemente porque TortoiseHg es más maduro que TortoiseGit :-) (toda la experiencia en Windows también es mucho mejor en Mercurial)
Dean Harding
+1, sugiero hacer Mercurial audaz y más grande (como lo hizo Gaurav en su respuesta)
Tim Post
Mercurial es muy dulce. Mi equipo y yo lo hemos estado usando durante aproximadamente 2 meses y es un soplo de aire fresco en comparación con SVN.
Gary Willoughby
72

Git

Git es fantástico, y lo recomendaría especialmente a cualquiera que trabaje en proyectos de código abierto: es mucho más fácil contribuir con un pequeño cambio único a un proyecto en Git, especialmente si está alojado en GitHub, de lo que se trata con e- enviar parches por correo con SVN.

Una gran advertencia para los usuarios de Windows: las herramientas de Windows de Git, aunque definitivamente son utilizables, no están a la altura. Cuando me vi obligado a usar Windows por un tiempo, probé la interfaz de Windows de Mercurial con una herramienta de integración Hg-Git para poder usar mis repositorios de Git, y descubrí que era mucho más fácil de usar.

Gaurav
fuente
55
Creo que es importante decir que git es difícil. Realmente me encanta, pero no es algo que puedas usar para aprenderlo en un par de días. Tienes que usarlo por un tiempo y enojarte hasta que cambies de opinión ... ;-)
Khelben
1
@Khelben: hay algo de verdad en eso, sí. Sin embargo, también parece tener la mayor cantidad de literatura / artículos / tutoriales dedicados a la red. Regularmente encuentro libros de Git, Mercurial, no tanto (usando Mercurial aquí como contraste, ya que es en muchos aspectos similar a Git). No puedo decir si eso es bueno o malo, pero parece que la gente lo está usando.
Rook
2
msysgit se puede usar en Windows.
1
Supongo que git, Mercurial, etc. son bastante buenos, pero elegí git principalmente porque auf GitHub. GitHub se siente mejor que sitios comparables y muchos proyectos importantes están alojados allí. GitHub reduce la barrera para contribuir mucho al código abierto.
LennyProgrammers
2
Mercurial NO NECESITA un libro.
Warren P
24

Advertencia: desde esta publicación he encontrado Mercurial y me encanta mucho mejor que SVN. Entonces, esta publicación está un poco desactualizada con los comentarios de Pro SVN y el anti-DVCS general, pero el material anti-git sigue siendo relevante


Soy fanático de SVN sobre Git.

¿Por qué? Porque SVN fue mucho más fácil para un desarrollador único o un equipo pequeño, y git (específicamente msysgit) me dejó con un mal sabor de boca.

Cuando estaba haciendo una pasantía en una pequeña tienda, me presentaron a git en Windows. Inmediatamente me di cuenta de la cantidad de trabajo que tomó para que funcione con Github. Primero, tuve que generar una clave privada ssh, pegar la clave pública en Github, luego mostrar el concurso y abrir mi clave privada cada vez que quería presionar, lo cual fue extremadamente molesto.

Y nunca me gustó realmente que estaba bajando todo el repositorio. Admitiré que nunca trabajé con nada enorme, pero me daría miedo descargar el repositorio de KDE en Git si todo el repositorio y sus revisiones están en mi HD.

Luego estaba el proceso confuso para hacer un compromiso. TMK, primero tuve que "poner en escena" todos los archivos que quería comprometer (lo cual apestaba cuando tenías muchos archivos, me tomó un tiempo encontrar el comando manual para organizar todo), luego hacer el compromiso, luego empujar a la página principal repositorio (¿por qué es una operación separada?)

También tenía los datos de confirmación no muy útiles (!). Oh mira, esto es commit 14f74433245ae17aeeaa parte del árbol 2167a4934d0a4a7db0de y padre d7042abb4821d3faf600. ¿Qué demonios significa eso? Debería poder resolver las cosas bastante rápido y no tener que consultar alguna documentación extraña.

Hablando de documentación, al menos cuando la estaba usando, parecía que todo estaba en formato de archivo man de Linux, IE confuso e inútil para mí. Raramente pude encontrar mucha ayuda en los documentos y simplemente recurrí a google.

Y con commits, lo único que no me gustó fue la falta de números de versión. Ahora sé que esto se debe al diseño de git, pero cualquier software necesita un número de versión. Todavía recuerdo las confirmaciones de marcador que aparecerían diciendo "Versión modificada a 1.8.6" o algo similar, pero aún no se podían hacer números de compilación. Para mí, tener la versión 1.8.6.5164 (la última parte es el número de revisión) me dice mucho más que simplemente 1.8.6 y una nota que dice que algo menor cambió, pruébalo

Obteniendo software específico, el programa base en Windows es msysgit, que es una interfaz terrible. Me bloqueó varias veces, tenía una interfaz horrible y la integración de CLI-GUI era dudosa en el mejor de los casos. Los adictos a la línea de comando a mi alrededor odiaban la interfaz gráfica aún más.


Ahora veamos SVN. Y como estoy en Windows y tengo una cuenta de Google, específicamente TortoiseSVN y Google Code.

Primero, complete la integración de shell para hacer todo en el repositorio (y para ustedes, Linux, RabbitVCS hace lo mismo), no se necesita una GUI principal. Obtener un repositorio es fácil como pagar, no se necesita SSH (no recuerdo si Github requirió SSH para extracción), y no hay repositorio completo + todas las confirmaciones pasadas en su HD.

Comprometerse es extremadamente fácil, principalmente porque no se requiere SSH o puesta en escena. Simplemente marque todos los archivos que desee utilizando la muy útil opción Seleccionar todo que en mi versión de msysgit no estaba disponible, escriba un mensaje de confirmación y presione confirmar. Luego, Google Code le solicita su información de inicio de sesión (que la mayoría de los clientes almacena), y listo. Simple, fácil y sin SSH

Números de versión? Con un código fácil, puede agregar un número de versión y un número de confirmación a todos los pagos, lo que facilita mucho las cosas. También obtiene números de versión utilizables que realmente muestran un cambio, por ejemplo, 1.8.6.5165 es más reciente que 1.8.6.5164.

¿Documentación? Bueno, es difícil de decir. Tortuga está documentada, pero en realidad no me he referido a la documentación oficial en tanto tiempo que no puedo juzgar. Leer una simple guía de introducción fue suficiente para mí.

La fusión es algo más que no puedo comparar. Tuve que hacerlo una vez en Git cuando alguien más cometió un cambio en un archivo en el que estaba trabajando, pero nunca en SVN.


¿Cuál recomendaría? Bueno, en equipos grandes, git tiene sus ventajas, principalmente en su ciclo de desarrollo no lineal. En otro proyecto, vi a 4 programadores comenzar en ramas separadas, luego fusionar todo el código de maneras muy extrañas que de alguna manera se transformaron en la rama maestra final. Github y msysgit tenían una herramienta de visualización realmente agradable para todo el proyecto que realmente me gustó.

Para proyectos de desarrollador único o equipo pequeño, SVN sería el mejor ya que la mayoría de las características de Gits no se usan y solo obtienes sus partes negativas. La simplicidad es algo tan bueno

TheLQ
fuente
66
La fusión con SVN es bastante arriesgada (en comparación con git). Esa es una cosa que es importante tener en cuenta en cualquier comparación.
Khelben
55
¿Por qué necesita "mostrar el concurso" cada vez? Es un agente clave. Solo tiene que abrirlo una vez, cuando inicie sesión en su máquina. Agregas tu clave y listo . (Y puede hacerlo aún más fácil si asocia su archivo de claves con el concurso y lo agrega a su carpeta de inicio. Inicie sesión, aparece con el cuadro de diálogo que le solicita su frase de contraseña.)
Frank Shearar
3
@Thorbjoern @Frank Shearer: Creo que el hecho mismo de que estás diciendo "puedes hacer esto, o puedes hacer eso, y no tener esos problemas" resalta el punto: esas son soluciones a un problema o un problema. No es un problema con algunos otros VCS '.
Steven Evers
44
Esta respuesta me parece una gran cantidad de quejas y gemidos por algo que el cartel claramente no se tomó el tiempo para entender. He pasado mucho tiempo en git y svn, tanto en linux como en windows, y testificaré que git es muy superior a svn, en concepto, modelo de datos, comprensibilidad y utilidad.
gahooa
44
@TheLQ No. No es "tu mentalidad de Linux" en absoluto. Es algo simple de configurar, está bien documentado, PuTTY es un excelente conjunto de aplicaciones de Windows que hace que las cosas sean realmente muy simples de usar. Y realmente debería estar encriptando su transferencia de código, si está trabajando a través de cualquier red pública. Y es insultante para los usuarios de Windows asumir que son demasiado estúpidos para aprender a usar las herramientas que deberían estar usando. No le estoy pidiendo a la gente que bombardee cosas. Les pido que cifren su información importante.
Frank Shearar
22

La siguiente cita de Q4TD lo resume bastante bien para mí:

“Me encantó Git hasta que lo probé. Ahora amo a Mercurial.

        - Tor Norbye, el podcast de Java Posse

Además, hgsubversion es un cliente de subversión bastante bueno para Linux (donde usualmente uso la línea de comandos, a diferencia de Windows donde usualmente uso TortoiseSVN). La mayor ventaja: no hay .svnsubcarpetas en cada carpeta, solo una .hgen el nivel superior.

Actualización: en respuesta a la solicitud de Alex en los comentarios de "decir más sobre por qué git no funcionó para usted y cómo Mercurial funcionó mejor":

No diría que Git no funciona para mí, pero Murcurial funciona mejor en mi opinión.

En pocas palabras, esto es Mercurial:

texto alternativo

y este es Git:

texto alternativo

Y afirmo que Mercurial hará todo lo que la mayoría de los desarrolladores tendrán que hacer, sin tener que buscar el manual para descubrir cómo hacer las cosas cotidianas.

Es cierto que solo he usado Git de vez en cuando, pero la comunidad de programadores ha estado pasando por alto lenguajes como Ruby y Python, en parte, por su concisión y elegancia, mientras que Git se siente como un camello diseñado por un comité de camellos.

Bah, ahora mira lo que has hecho? Hay despotricar por todo el lugar. Avanzar, nada que ver ... nada que ver ...

Actualización 2: Y otro tuit a propósito que acabo de encontrar:

"Git se vuelve más fácil una vez que se tiene la idea básica de que las ramas son endofunctores homeomórficos que mapean submanifolds de un espacio de Hilbert".

Evan
fuente
¿Alguna vez has probado RabbitVCS?
TheLQ
No, pero uso KDE, no Gnome, por lo que no me conviene de todos modos. Ocasionalmente usaré un cliente SVN gráfico en Linux, pero solo realmente cuando haga algo un tanto esotérico como explorar un repositorio o comparar revisiones anteriores. No para el simple agregar / eliminar / confirmar / registrar cosas. La línea de comando es más rápida.
Evan
2
¿Podría decir más sobre por qué git no funcionó para usted y cómo Mercurial funcionó mejor? Eso sería bastante interesante de leer.
Alex Feinman
Estoy bastante seguro de que a la representación de Git le falta una navaja de afeitar recta de 6 "de largo ...
Tim Post
2
@Tim: rebase? Probablemente esté del otro lado.
Alan Pearce
14

No tengo un solo "mejor" sistema de control de versiones, sino un mejor paradigma de VCS.

He utilizado múltiples sistemas de control de versiones centralizados y múltiples sistemas de control de versiones distribuidos. Y puedo decir sin dudar que nadie debería infligirse un CVCS sobre sí mismos.

No me importa qué DVCS elijas (mi favorito en particular es Git), pero hazte un favor y usa un DVCS. Por un lado: serás mucho más flexible. Los DVCS pueden emular trivialmente un flujo de trabajo CVCS (simplemente nunca bifurcan el repositorio y tratan sus repositorios locales solo como un chache en lugar de un tenedor independiente), mientras que lo contrario es imposible. Y aunque lógicamente, hacer esta emulación debería llevar algo de sobrecarga (y de hecho lo hace), todavía me resulta más fácil de usar (sin mencionar mucho más rendimiento debido al almacenamiento en caché local) que cualquiera de los CVCS que he usado.

Jörg W Mittag
fuente
3
Esta es una respuesta genial. No hay ningún "mejor" VCS, pero estoy totalmente de acuerdo en que uno debería estar usando un DVCS.
Nick Hodges
Convierta el mío en un DVCS, pero sostenga los endofunctores homeomórficos que mapean submanifolds de un espacio de Hilbert, por favor. Ergo, Mercurial.
Warren P
11

No puedo decir que he encontrado el mejor software de control de versiones, pero puedo decirle que se mantenga alejado de VSS y MKS. Ambos son perros que deben evitarse a toda costa.

Walter
fuente
7

No diría lo mejor, pero uno con características y conceptos muy interesantes.

Fossil es un proyecto distribuido de control de versiones, seguimiento de errores y wiki construido en la base de datos SQLite como repositorio.

Maniero
fuente
5

Team Foundation Server

Porque:

  1. Es un buen y sólido VCS . (No lo consideraría el mejor de ninguna manera, pero tiene buenos extras).
  2. Su seguimiento integrado de tareas y errores que se integra en Visual Studio me ayuda a mantenerme enfocado y saber en qué debo trabajar en un solo lugar (aplicar automáticamente un registro a un error o tarea y cerrarlo es bastante bueno, aunque puedes obtenga complementos para otros sistemas / eclipse / etc. para hacer esto).
  3. Integra tareas / seguimiento de errores / proyectos directamente en Project Server, por lo que rara vez tengo que mantener actualizados los planes de proyecto u hojas de tiempo. Las actualizaciones del Proyecto en Project Server se filtran automáticamente como tareas en TFS y en Visual Studio para que yo las vea automáticamente.
Ryan Hayes
fuente
2
Tengo curiosidad por saber cómo se sintió al restringir su flujo de trabajo a Visual Studio exclusivamente para casi todo el trabajo de desarrollo. Además, ¿tuvo que hacer alguna de las configuraciones de infraestructura para TFS? Mi experiencia fue opuesta a la suya de esta manera: # 1: VCS no era fácil de usar, a menudo era escaso y el mismo Satanás creó el modo fuera de línea. # 2 La tarea incorporada y el seguimiento de errores fue engorroso en comparación con otras herramientas, por lo que el # 3 fue irrelevante para nosotros y creó un trabajo duplicado. Lo he usado 3 veces diferentes ahora con los mismos malos resultados cada vez.
Jordan
1. Estoy de acuerdo con el modo fuera de línea chupando Sin embargo, no he tenido muchos problemas en línea, pero siempre estoy conectado. Muchos de los controles VCS, especialmente con la reasignación de carpetas, están realmente ocultos en los menús. ¿Es ese el problema que tienes? 2. Definitivamente es más engorroso, pero ahorra trabajo en general para mi equipo integrado con el servidor de Project. 3. ¿Cómo crea trabajo duplicado? ¿Está duplicando las tareas en el servidor de proyectos y TFS? Hay un complemento de código abierto para 2007 y una versión beta para 2010 que les permite sincronizarse entre sí.
Ryan Hayes
1
Me constriñó a VS, pero somos una tienda totalmente .NET. Sin embargo, uso TFS con mis proyectos Java en casa. Pruebe SVNBridge en svnbridge.codeplex.com que le permite usar Tortoise con TFS. Si usa Tortoise (como la mayoría de los usuarios de Java, ruby, non-.net), debería ayudarlo con su flujo de trabajo en otros proyectos.
Ryan Hayes
4

He usado una multitud de sistemas de control de versiones en mi larga historia:

  • RPPT - (Rollos de cinta de papel perforado). En una caja de zapatos. No estoy bromeando.
  • PVCS - (Sistema de control de versiones Polytron). El primer VCS real que utilicé.
  • SCCS: hace mucho tiempo, no recuerdo nada excepcionalmente bueno o malo al respecto.
  • RCS: como otros han señalado, preferiría chupar bolas de burro sudorosas.
  • CVS: solo fue un dolor cuando se usó con más de 2 programadores. mejor característica: rcs2cvs.
  • VSS: funciona, excepto los martes, cuando corrompe todo su repositorio.
  • Perforce: cuesta más que mi auto. El VCS en sí mismo es aceptable, pero los tipos de TI tontos que controlan todos los aspectos del uso nunca lo aterrizarán en mi lista de "preferidos".
  • SVN: bifurcar y fusionar es una perra, pero en general es mejor que cualquiera de las anteriores. No tan bueno con muchos pequeños cambios pendientes en espera de revisión.
  • Mercurial: me gusta la poca experiencia que tengo con ella. Podría intentarlo en mi próximo proyecto.
  • Git: nunca tuve la oportunidad de usarlo.

Aunque una pareja eran horrores, la mayoría estaban "bien". No se interpusieron en mi camino. Mientras una herramienta no haga mi vida mucho más difícil , no me importa.

Lo real es comprender las fortalezas y debilidades de cada uno. Comprender el entorno objetivo:

  • distribuido o local
  • equipo pequeño o grande
  • servicio vcs alojado o no
  • fácil integración en otras herramientas

Joel también salió con una observación importante: aprenda la herramienta y su verdadero modelo de uso. Luchó poderosamente tratando de hacer que Mercurial se comportara como Subversion.

revs brettmjohnson
fuente
1
Si solo el comentario sobre VSS fuera una broma ... evítalo como la peste.
DevSolo
Ah, PVCS, los recuerdos que trae de vuelta :) Qué basura fue esa.
Henry
Esa lista me recordó el lenguaje basado en "pegarse un tiro en el pie". +1
Orbling
Sí recuerdo cosas malas sobre SCCS, pero en general era utilizable. Recuerdo haber intentado hacer un trabajo simultáneo en archivos con SCCS y otros programadores, y es por eso que me enamoré de CVS cuando lo vi.
David Thornley
Visual SourceSafe, un VCS especialmente para programadores que quieren sacarse los ojos con cucharas.
Mark Booth
2

Un sistema más nuevo que utilizamos en mi oficina es Plastic SCM (http://www.plasticscm.com/). Funciona muy bien para nuestro pequeño equipo y nos brinda un gran control sobre todos los aspectos de la administración de fuentes.

Tom A
fuente
1

SCCS .

O, si no has vivido una cueva durante los últimos 38 años, CSSC .

En serio, mi empresa está utilizando TeamWare , que es una especie de pseudo DVCS basado en SCCS.

No, no estoy bromeando.

Sun cambió a mercurial de TeamWare hace solo unos años. Ahora deberías entender por qué Java parecía moverse tan lento.

Geoffrey Zheng
fuente
1

MPW: Bueno, realmente no puedo darle una revisión a pesar de mis esfuerzos.

Esto fue cuando estaba aprendiendo programación en la escuela secundaria, y el único compilador de C ++ realmente gratuito que tuve fue Macintosh Programming Workbench, que guardé en un disco zip y puse en cualquier Performa disponible en el laboratorio.

MPW vino con docenas de herramientas (ninguna de las cuales fue reeditada, que era una descarga por separado), y una de ellas era una utilidad de control de versiones. Apareció una pequeña ventana con una sola línea de texto, y tenía que arrastrar y soltar sus proyectos o archivos en él. No tenía documentación que pudiera descubrir, algo inusual considerando que todo lo demás parecía tener excelentes documentos, por lo que nunca pensé cómo usarlo.

Ese fue mi primer roce con VC, y el último durante mucho tiempo. Ahora uso git para todo.

SingleNegationElimination
fuente
¡Proyector! En un trabajo a tiempo parcial durante la universidad utilicé una versión (engañada) de eso. Buenos tiempos.
RyanWilcox
0

RCS - Sistema de control de revisiones

La codificación en solitario es muy fácil.

Jé Queue
fuente
Estás bromeando, ¿verdad Xepoch? Por favor, dios bromee.
Marc W
Ustedes me están haciendo reír. En realidad, yo uso RCS pero SOLO para mis sitios web personales, etc. Estaba bromeando a medias sobre su uso para un desarrollo importante, PERO lo he visto exclusivamente (en lugar de CVS) en sistemas Unix de desarrollo compartido. Honestamente, no tuvimos ningún problema con eso, pero NO se presta a nada más que a una sola función de servidor.
Jé Queue
1
@Xepoch, es mejor que aprendas Git o Mercurial: DCVS funciona muy bien para el desarrollo en solitario.
Fishtoaster
1
¿Sabes qué es lo realmente bueno de RCS? Puede colocar todos sus archivos RCS, v en una estructura de directorio adecuada y tiene un repositorio CVS casi listo para funcionar. Hay muchas herramientas para convertir de CVS a cualquier sistema moderno que desee, como Mercurial.
David Thornley
@Xepoch, la facilidad con la que hacer copias de seguridad de las vcs distribuidas es inmejorable.
0

No ClearCase, al menos para un sistema Unix / Linux (quizás con Windows el instalador es más fácil). Me resultó más fácil aprender una nueva herramienta, Perforce, en lugar de actualizar nuestro servidor ClearCase.

Actualmente uso Perforce en el trabajo y me gusta, pero no tengo idea de si es el mejor. Configurar el entorno de línea de comandos y el servidor Perforce es un poco incómodo, pero usar Visual Client es bastante fácil. Me gusta pensar que a los usuarios les resulta bastante fácil realizar tareas cotidianas; es solo que la configuración inicial requiere algo de trabajo.

Oportunidad
fuente
0

He usado Visual SourceSafe y lo odié, pero fue mejor que nada, pero no por mucho. Durante los últimos dos años, usé algo llamado QCVS por Qumasoft.com escrito, propiedad y respaldado por Jim Voris el programador. GUI simple, precio barato, buen soporte.

Solo hace el trabajo.

crosenblum
fuente