¿Qué sistema de control de fuente?

Necesito desesperadamente control de fuente para administrar proyectos entre más de un desarrollador.

Hace mucho time utilicé Visual Source Safe y funcionó bastante bien.

¿Qué sustitutos gratuitos pueden recomendarse? Tengo los siguientes requisitos básicos:

  • Necesito alojar el repository en mi propio server.
  • No quiero un desorder extra dentro de mis files fuente, como lo hace CVS.
  • Necesito un check in / check out adecuado, para que nadie pueda cambiar un module hasta que lo vuelva a registrar.
  • No quiero / necesito fusión / ramificación de código fuente.

Usamos Delphi para desarrollo web, muchos files HTML, imágenes, files SQL, etc.

¿Alguna recomendación?

Siempre recomendaré la subversión con Visual SVN para software de server y Tortoise SVN para los clientes. Puede consultar files de forma exclusiva, para que nadie más pueda editarlos, aunque ese no es el comportamiento pnetworkingeterminado. El único "desorder" que agrega es una carpeta oculta .svn en cada directory que está bajo control de versión.

Git o Mercurial .

  • ambos están distribuidos y son rápidos (cada repository puede actuar como 'server')
  • sin desorder extra solo un directory .git o .hg
  • puede pull cambios de fonts confiables o verificadas

Si insistes en que no haya demasiada confusión y también en libertad, tienes opciones limitadas. Si eres de código abierto, puedes tener una copy gratuita de forzosa. Sin desorder. SVN tiene desorder como CVS: un directory .something en cada directory. git y hg solo tienen un directory de desorder por clon.

Si insistes por completo en un model de pago, tienes que renunciar a algo. P4 lo hará, pero ninguno de los otros lo hará muy bien. La mayoría de la gente está más preocupada estos días por permitir una operación desconectada que con un concepto de locking. incluso svn lock solo evita el checkin, no comienza a modificarse.

Hay otros sistemas más oscuros por ahí (por ejemplo, el arco) que puede mirar.

Desanimo el enfoque de checkout / checkin. Un sistema de control de versiones decente debería poder combinar los cambios. Esto le proporciona muchas opciones: CVS, SVN y Git.

En cuanto a "desorder" en sus files de origen: no considero desorder de directorys de repository (por ej., .svn o .git ), ya que esto le permite copyr la estructura del repository.

Sin embargo, en SVN (no estoy seguro acerca de Git) puede bloquear / desbloquear un file, básicamente imitando el checkout / checkin de VSS.

Es posible que desee investigar Team Coherence ( http://www.teamcoherence.com ). No crea carpetas especiales y tiene un Delphi doblado. Por ejemplo, agrupa los files .pas y .dfm de forma pnetworkingeterminada. La ayuda es excelente. Ahora también es gratis para una sola licencia. Lo he estado utilizando durante años después de usar CVS y FreeVCS.

Debe leer un poco y aprender un poco antes de consignarse usted y sus compañeros desarrolladores para vivir en la era oscura del control de versiones.

Visual Source Safe y el model de locking del control de versión están muertos. La mayoría de las personas han avanzado. Aquellos que no lo han hecho suelen temer (o detestar) la idea de ramificarse y fusionarse. Una vez que vean que la bifurcación y la fusión pueden ser más fáciles y más efectivas, pueden moverse hacia adelante y hacia arriba en un nuevo mundo de opciones de control de versiones.

Hágase algunas de estas preguntas:

  1. ¿Me gustaría separar el acto de crear una nueva function del acto de infligirla a otros desarrolladores y al producto final (mi website en vivo)? Si es así, entonces necesito twigs. Una twig = Sin control de versión efectiva.

  2. ¿He preguntado a los otros desarrolladores que trabajarán conmigo, qué prácticas encuentran efectiva en proyectos de múltiples desarrolladores, y están de acuerdo conmigo en que los lockings son el path a seguir, o estoy reforzando unilateralmente mi forma de trabajar con ellos? (Puedes tener foo.pas por hoy, pero intenta que se registre antes de las 3 p.m. porque necesito hacer un cambio en la barra de methods dentro de foo.pas, más tarde hoy).

  3. Si declaro que quiero asegurarme de que los desarrolladores "eviten usar versiones antiguas" ¿tengo razones para eso aparte de que odio o temo fusionarme? ¿No podemos pensar en alguna forma de evitar "usar versiones antiguas"? Además, ¿no podemos pensar en alguna razón cuando el uso de versiones antiguas podría ser exactamente lo que tiene que hacer? Si utilizó una herramienta sin locking como Subversion, ¿por qué no decir "actualice antes de comprometerse"? Entonces nunca tendrá que fusionarse, pero si alguien desea trabajar con una versión no cambiante de las fonts mientras desarrolla la function y luego desea fusionarse, y usted nunca tiene que fusionarse, puede insistir en que su trabajo hacerse con el locking (usando la subversión) pero permitir a otros la libertad de usar un flujo de trabajo que resuelva sus problemas, en lugar de los tuyos.

  4. Supongamos (como dijiste en los comentarios anteriores) que alguien está eliminando algo que estás creando. ¿No sería agradable ver una list completa de sus cambios y decir "Me gustaría que esos cambios se hayan ido, sin eliminar otros cambios realizados por otras personas"? Esto se conoce como trabajar con "sets de cambios" y es una característica key de DVCS como Mercurial (hg) y Git. De hecho, la capacidad de evitar que otras personas modifiquen SU ​​repository local de cualquier manera, pero haciendo cambios, que luego puede revisar, y aceptar o no aceptar, siempre será mejor para crear coinheritance en su copy (maestra) del repository que cualquier model de locking localizado y centralizado puede ser.

W

La Bóveda de SourceGear es gratuita para 1 usuario, y le proporciona operaciones de check-in / checkout y merge-style. También funciona sin desorder. Lo he usado por un time y funciona de maravilla. La transición desde SourceSafe es especialmente fácil, y la integración con IDEs como Visual Studio o Eclipse es muy buena.

Hmm, define "desorder": en mi opinión, un directory oculto por carpeta no es desorderado, francamente no ha sido un problema en absoluto (como reference, 7 años del primer CVS y luego Subversion y antes de ese VSS y algo distribuido el nombre del cual me escapa).

Subversion es excelente y la installation es casi trivial con el server VisualSVN y el uso es directo con Tortoise como cliente. El locking de files es una opción, no es buena en la instancia general, pero está ahí para files binarys si lo necesita. Esta es probablemente la coincidencia más cercana a sus criterios y me gusta. Mucho.

Para uso personal, estoy jugando con Mercurial, pero no lo suficiente como para decir que funciona (y, por supuesto, como la mayoría de los DVCS, no cumple con los criterios de "locking"). DVCS es diferente y tiene algunos problemas.

Si tiene dinero, vale la pena echarle un vistazo a Vault ( http://www.sourcegear.com ), especialmente si usó y le gustó VSS desde que comenzó como un VSS "mejor", aunque ha evolucionado un poco. Vale la pena visitar Sourcegear solo para leer las ideas de Erik Sink sobre el control de versiones.

En cuanto al rest, aunque simpatizo con el deseo de no (tener que) fusionar cosas, escribir labeldo y bifurcar es más o less lo mismo que decir "No necesito control de versiones", resulta que no es así. el caso.

Nadie está recomendando Bazar, así que aquí estoy, lo uso en mi trabajo diario con los proyectos de Delphi. Tiene un visor de diferencias que oscila, y eso, al less para mí, marca la diferencia con los otros repositorys similares a svn.

No lo he usado durante muchos años, pero creo que Jedi VCS cumple con todos sus criterios con la ventaja añadida de que está escrito en Delphi y tiene algunos conocimientos integrados cuando se trata de manejar files dfm.

Estamos utilizando Fossil para la administración del código fuente de nuestros progtwigs Delphi. Es muy fácil de usar (si te gusta el enfoque de la command-line KISS), y hay una interfaz interna basada en web. No se necesita installation, ya que solo se puede ejecutar un ejecutable. Es perfectamente multiplataforma: puede tener su propio repository en su máquina Windows, luego clonar / sincronizarlo en cualquier otro server, ejecutándose en Windows o Linux.

Puede ver nuestro repository de progtwigs Open Source Delphi alojados por Fossil en nuestro website . Para el trabajo interno, he descubierto que Fossil usa poco ancho de banda (mucho less que CVS o SVN), y es capaz de sincronizar grandes proyectos en un blitz, incluso a través de una connection ADSL o 3G.

Estas son algunas características únicas, incluidas en Fossil (sin componentes de terceros para configurar):

  • Seguimiento de errores y Wiki
  • Interfaz web
  • Sincronización automática
  • Autocontenido
  • Simple Networking – Fossil usa el viejo y simple HTTP
  • CGI habilitado: no se requiere ningún server para usar fósiles.
  • Robusto y confiable

Yo recomendaría Plastic SCM: http://www.plasticscm.com/

  • el mejor (?) soporte de fusión y bifurcación!
  • pero también puedes usar single branch + checkout exclusivo (también conocido como lock)
  • GUI muy agradable y práctica
  • liberar hasta 15 usuarios
  • muy buen soporte (¡dentro de un día, principalmente en una hora!)
  • muy moderno, automático de fusión y ramificación, distribuido, etc.
  • Complemento de Delphi disponible: http://code.google.com/p/plastic4delphi/