Primeros pasos con el control de versiones

Selección, instalación y configuración

Selección de un Sistema de Control de Versiones

Por supuesto, muchas organizaciones o proyectos ya tienen un sistema de control de versiones preferido o seleccionado, si este es su caso, simplemente salte a la instalación del cliente.

Hay una serie de cosas que se deben tener en cuenta al seleccionar el sistema de control de versiones que se va a utilizar, dado que no están ordenados, ya que todos tendrán diferentes prioridades:

  • Los costos oscilan entre casi nada y sumas enormes se desglosa en
  • Costos Iniciales (no recurrentes)
    • Server Software Initial Purchase price - ranges from zero to many thousands
    • Server hardware & operating provision costs
  • Tarifas de uso continuo (Servidor) (recurrente)
    • Any Server Software annual or monthly licence &/or maintenance fees - ranges from zero to many thousands
    • Possible server storage fees hosted services often have some sort of storage fees
    • For hosted solutions you may also be looking at CPU time charges, bandwidth charges, etc.
    • Administration & Maintenance costs some high end version control systems require multiple full time administrators
    • Per developer/seat setup charges only when adding new team member or platform
      • Client software purchase price - ranges from zero to thousands
      • Developer (re-)training
    • Per developer/seat ongoing charges
      • Client software annual renewal/maintainace fees - ranges from zero to thousands
      • Any client usage fees
      • Developer re-training after any major updates to the VCS or the procedures
  • Plataformas disponibles (Servidor) - qué plataforma(s) puede(n) actuar como su servidor si se requiere uno personalmente cuando me informan que el servidor solo se ejecuta en un SO específico, a veces en un paquete de servicios o plataforma de hardware hace sonar las alarmas
  • Plataformas disponibles (Cliente(s)) - ¿Qué plataforma o plataformas pueden usar sus desarrolladores? ¿Está limitado a un solo cliente? Nuevamente, una preferencia personal es para múltiples clientes en múltiples plataformas
  • Disponibilidad
  • Posible uso fuera de línea

Configuración del servidor VCS

Esto será específico para el VCS seleccionado anteriormente.

Configuración de los clientes de VCS

Esto será específico para los clientes de VCS que coincidan con el servidor anterior, pero existen algunos puntos en común:

¿Qué es el control de versiones y por qué usarlo?

Un sistema de control de versiones permite que un desarrollador o un equipo de desarrollo acceda esencialmente a una máquina del tiempo. Si el código fuente, la configuración, etc., que se usaron para construir un programa o sistema están bajo control de versiones, los desarrolladores pueden retroceder en el tiempo para recuperar la funcionalidad perdida, rastrear cómo se introdujeron los errores, ayudar a los usuarios de versiones anteriores del software. que, por una razón u otra, todavía no están listos o no pueden actualizarse a la última versión.

Las instancias más antiguas de control de versiones tomaban una instantánea del código fuente en un momento específico y las guardaban en un lugar seguro con una etiqueta, en algunos casos eran literalmente sorteos llenos de tarjetas perforadas.

Actualmente existen numerosos programas de control de versiones que simplifican esta tarea que se dividen en varias categorías distintas:

  • Soluciones de copia de seguridad simples no realmente control de versiones, pero a veces se afirma como tal
  • Seguimiento de cambios locales dentro de archivos como en MS-Word
  • Bloqueo de sistemas de control de versiones centralizados como SCCS, CVS, Perforce, etc.
  • Sistemas de control de versiones centralizados permisivos como SVN
  • Control de versiones distribuido, como git y mercurial

Todos los sistemas de control de versiones deberían permitirle:

  • Revertir el código fuente a un punto dado en el tiempo == infinito deshacer
  • Realizar un seguimiento de los cambios que se han publicado en el sistema
  • Actualice a una versión posterior de la herramienta sin perder ninguna información

La mayoría de los sistemas de control de versiones también incluyen:

  • Comparación de cambios
  • Rastrear quién hizo un cambio dado
  • Permisos sobre quién puede hacer cambios
  • Integración con seguimiento de errores.
  • Copia de seguridad fuera de la máquina, fuera del sitio o en línea de todo su trabajo comprometido lo que le da una sensación de calidez y, en el caso de las herramientas VCS distribuidas, cada desarrollador tiene una copia de seguridad completa de todo el historial del proyecto.

Muchas herramientas de control de versiones incluyen o proporcionan mecanismos para características adicionales como:

  • Culpar quién cambió por última vez qué línea en qué revisión
  • Cree, distribuya y aplique parches solo envíe sus cambios
  • Colaboración por correo electrónico
  • Verificación automática de archivos/cambios entrantes para garantizar que cumplan con las reglas dadas
  • Revisión y/o aprobación de código/cambio
  • Inserción automática del estado de la versión en archivos para incrustar en su programa
  • Versiones experimentales, específicas de características o específicas del cliente del código generalmente llamadas sucursales
  • Trabajar con herramientas de Integración Continua y/o Pruebas Continuas
  • Mecanismos de liberación y/o despliegue
  • Generación de notas de lanzamiento
  • Almacenamiento temporal de cambios que aún no ha terminado mientras cambia a otra versión/rama para hacer otra cosa.
  • Búsqueda binaria para permitir la ubicación de qué versión introdujo un error específico

Para concluir esta sección, la mayoría de los desarrolladores de código profesionales o serios que trabajan en cualquier cosa menos en el código más trivial se enamoran del control de versiones una vez que adquieren el hábito de usarlo. Poder decir, incluso años después, qué cambió exactamente entre la versión 1.3.1 y la versión 1.3.1.1 puede ser de gran ayuda. A personas como auditores les encantan los buenos sistemas y prácticas de control de versiones, ya que brindan capacidad de rastreo cuando se integran con un sistema de seguimiento de problemas, pudiendo decir “este problema se solucionó con estos cambios producidos por esta persona” o “este cambio se realizó en esta fecha para abordar este problema” los hace mucho más felices. Tener, posiblemente, varias copias de seguridad fuera de la máquina y/o fuera del sitio de todo su trabajo significa que si su máquina se rompe o su oficina se destruye, puede reanudar el trabajo en poco tiempo. Si está trabajando en proyectos de código abierto, es probable que VCS sea su principal herramienta de colaboración y revisión, tratar de trabajar sin uno hará que sus compañeros no lo tomen en serio, (github , bitbucket, etc. se basan en herramientas de control de versiones). Los usuarios de su programa final probablemente no notarán que está usando una herramienta de control de versiones, pero les encantará cuando pueda decir “ese problema se solucionó en la versión X.Y.Z. Si actualiza a esa, debería ver el desaparezca el problema”.