it-swarm-es.com

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

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?

41
Fishtoaster

Mercurial

Debido a su capacidad sofisticada para bifurcar y combinar 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.

81
epotter

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- enviando 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.

72
Gaurav

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 Push, 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 presionar a la pantalla 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 Linux man, 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 ya está. 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 agradable

24
TheLQ

La siguiente cita de Q4TD más o menos lo resume para mí:

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

- Tor Norbye, El Java Posse Podcast

Además, hgsubversion es un buen cliente de Subversion para Linux (donde usualmente uso la línea de comando, a diferencia de Windows donde usualmente uso TortoiseSVN). La mayor ventaja: no .svn subcarpeta en cada carpeta, solo un .hg en 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 IMO.

En pocas palabras, esto es Mercurial:

alt text

y este es Git:

alt text

Y afirmo que Mercurial hará todo lo que la mayoría de los desarrolladores necesitarán 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 programación se ha vuelto loca con lenguajes como Ruby y Python, en parte, por su concisión y elegancia, mientras que Git se siente como un camello que fue 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 a propósito Tweet 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".

22
Evan

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 que DVCS que elijas (mi favorito 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), yo todavía me resulta más fácil de usar (sin mencionar mucho más rendimiento debido al local almacenamiento en caché) que cualquiera de los CVCS que he usado.

14
Jörg W Mittag

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.

11
Walter

No diría lo mejor, pero 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.

7
Maniero

Team Foundation Server

Porque:

  1. Es un bueno, 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.
5
Ryan Hayes

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 hace que mi vida sea mucho más difícil, realmente 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.

4
brettmjohnson

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.

2
Tom A

SCCS .

O, si no ha estado viviendo una cueva durante los últimos 38 años, CSSC .

En serio, mi compañía está usando 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.

1
Geoffrey Zheng

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

Esto fue cuando estaba aprendiendo a programar en la escuela secundaria, y el único compilador de C++ realmente gratuito que tuve fue Macintosh Programming Workbench, que guardaba en un disco Zip y aparecía 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. Se abrió 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 la documentación que pude descubrir, 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.

RCS - Sistema de control de revisiones

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

0
Jé Queue

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.

0
crosenblum

No ClearCase, al menos para un sistema Unix/Linux (quizás con Windows el instalador es más fácil). Para mí fue 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.

0
Chance