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?
version-control
Fishtoaster
fuente
fuente
Respuestas:
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.
fuente
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.
fuente
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
fuente
La siguiente cita de Q4TD lo resume bastante bien para mí:
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
.svn
subcarpetas en cada carpeta, solo una.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 en mi opinión.
En pocas palabras, esto es Mercurial:
y este es Git:
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:
fuente
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.
fuente
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.
fuente
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.
fuente
Team Foundation Server
Porque:
fuente
He usado una multitud de sistemas de control de versiones en mi larga historia:
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:
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.
fuente
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.
fuente
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.
fuente
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.
fuente
RCS - Sistema de control de revisiones
La codificación en solitario es muy fácil.
fuente
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.
fuente
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.
fuente