Git
De Wikipedia, la enciclopedia libre
Git es un software de sistema de control de versiones diseñado por Linus Torvalds, pensando en la eficiencia y confiabilidad de mantenimiento de versiones de aplicaciones con una enorme cantidad de archivos de código fuente.
El diseño de Git se basó en BitKeeper y en Monotone.[1] [2] En principio, Git se pensó como un motor de bajo nivel que otros pudieran usar para escribir front end como Cogito o StGIT.[3] Sin embargo, Git se ha convertido desde entonces un sistema de control de versiones con funcionalidad plena.[4] Hay algunos proyectos de mucha relevancia que ya usan Git, en particular, el grupo de programación del núcleo del sistema operativo Linux.
Tabla de contenidos |
[editar] Características
El diseño de Git resulta de la experiencia del diseñador de Linux, Linus Torvalds, manteniendo una enorme cantidad de código distribuida y gestionada por mucha gente, que incide en numerosos detalles de rendimiento, y de la necesidad de rapidez en una primera implementación.
Entre las características más relevantes (no necesariamente positivas) se encuentran:
- Fuerte incidencia en la no linealidad de los cambios, por ende rapidez en la gestión de ramificaciones y mezclado de diferentes versiones.
- Gestión distribuida. Los cambios se importan como ramificaciones, y pueden ser mezcladas en la manera en que lo hace una ramificación del almacenamiento en local.
- Los almacenes de información pueden publicarse por HTTP, FTP, SSH, rsync o mediante un protocolo nativo, aparte de ser posible emular CVS.
- Gestión eficiente de proyectos grandes, dada la rapidez de gestión de diferencias entre archivos, entre otras mejoras de optimización de velocidad de ejecución.
- Todas las versiones previas a un cambio determinado, implican la notificación de un cambio posterior en cualquiera de ellas a ese cambio (denominado autenticación criptográfica de historial). Esto existía en Monotone.
- Resulta algo más caro trabajar con ficheros concretos frente a proyectos, eso diferencia el trabajo frente a CVS, que trabaja en base a cambios de fichero, pero mejora el trabajo con afectaciones de código que concurren en operaciones similares en varios archivos.
- Los renombrados se trabajan en base a similitudes entre ficheros, aparte de nombres de ficheros, pero no se hacen marcas explícitas de cambios de nombre en base a supuestos nombres únicos de nodos de sistema de ficheros, lo que evita posibles, y posiblemente desastrosas, coincidencias de ficheros diferentes en un único nombre.
- Realmacenamiento periódico en paquetes (ficheros). Esto es relativamente eficiente para escritura de cambios y relativamente ineficiente para lectura si el reempaquetado (en base a diferencias) no ocurre cada cierto tiempo.
[editar] Véase también
- Sistema de versiones concurrente, CVS.
- Subversion, SVN.
- BitKeeper.
- Perforce.
- Rational ClearCase.
- Plastic SCM.
[editar] Referencias
- ↑ Linus Torvalds (2006-05-05). Re: [ANNOUNCE] Git wiki. Referencias de los antecesores de Git
- ↑ LKML: Linus Torvalds: Re: Kernel SCM saga
- ↑ Linus Torvalds (2005-04-08). Re: Kernel SCM saga.
- ↑ Linus Torvalds (2006-03-23). Re: Errors GITtifying GCC and Binutils.