GIT COMO SISTEMA DISTRIBUIDO DE CONTROL DE VERSIONES

Ver el tema anterior Ver el tema siguiente Ir abajo

GIT COMO SISTEMA DISTRIBUIDO DE CONTROL DE VERSIONES

Mensaje por brayan_mayta el Jue Nov 02, 2017 6:50 pm

GIT ES EL SISTEMA DE CONTROL DE VERSIONES MÁS POPULAR


Hay quienes suelen copiar sus proyectos a otros directorios como estrategia para mantener respaldos del progreso, pero otros utilizan soluciones más inteligentes y menos propensas a errores y pérdidas de datos, ellos usan sistemas de control de versiones.
Los sistemas de control de versiones son programas que tienen como objetivo controlar los cambios en el desarrollo de cualquier tipo de software, permitiendo conocer el estado actual de un proyecto, los cambios que se le han realizado a cualquiera de sus piezas, las personas que intervinieron en ellos, etc.




DISTRIBUIDO, NO CENTRALIZADO
La mayoría de los sistemas de control de versiones utilizan un servidor centralizado para guardar todos los cambios y actualizaciones. Esta característica es maravillosa porque permite que personas en diferentes partes del mundo puedan trabajar sobre un mismo proyecto, sin embargo está fuertemente atada a la conexión a Internet para funcionar, de otra manera los cambios nunca podrán reflejarse en el servidor central.
Git se presenta como un sistema distribuido, en el que todos los nodos manejan la información en su totalidad y por lo tanto pueden actuar de cliente o servidor en cualquier momento, es decir, se elimina el concepto de “centralizado”. Esto se lo logra gracias a que cada vez que sincronizas los cambios con el repositorio remoto Git, te guarda una copia entera de los datos con toda la estructura y los archivos necesarios. Así ya no es necesario salir a Internet para consultar los cambios históricos sobre un archivo o para ver quién fue la última persona que lo editó, todo se hace directamente sobre tu copia local y luego, cuando lo consideres oportuno, puedes enviar esos cambios hacia el repositorio remoto.
Diagrama de funcionamiento basico

 



FOTOGRAFÍAS, NO DIFERENCIAS
Los sistemas de control de versiones más populares almacenan sus datos como un conjunto de diferencias respecto a la versión original de un archivo, en otras palabras, van guardando solamente una lista de cambios a lo largo del tiempo sobre la versión inicial.
Git replantea esta metodología y se acerca más a lo que sería el funcionamiento de un sistema de archivos, guardando a lo largo del tiempo una fotografía nueva que encierra el estado actual del archivo con todos sus cambios. Sin embargo, Git es bastante inteligente porque cuando un archivo no cambia, en lugar de guardar la misma fotografía varias veces, guarda una referencia a esa fotografía. De esta forma se optimizan los recursos del sistema.




COMPRUEBA, COMPRUEBA, COMPRUEBA
Git comprueba todo, así que es imposible que un archivo se corrompa o se pierda sin que lo sepa. Estás verificaciones se hacen mediante una suma de comprobación (checksum) conocida como SHA-1 y están integradas en lo más profundo de su ser. Los cambios, los archivos, casi todo es guardado en Git no por nombre, sino por la suma de comprobación de sus contenidos.
ES RÁPIDO (Y FURIOSO)
Como mencionamos más arriba, Git te permite trabajar todo localmente gracias a que es un sistema distribuido. No necesitas salir a Internet para consultar los cambios históricos y mucho menos para confirmar los cambios más recientes que has realizado, todo se realiza contra tu base de datos local. Esto permite que puedas trabajar en el tren camino a casa o mientas cruzas el Atlántico en un avión, además agiliza todas las operaciones y permite que cosas el branching, tan costosas en otros sistemas, con Git sean cuestión de milisegundos.
AÑADIR PERO NO BORRAR
Otro de los principios fundamentales de Git es el de no remover información. Cuando introduces un cambio en tu proyecto simplemente añade más información al repositorio, lo que permite que sea muy difícil estropear algo por error o que no puedas deshacer esas modificaciones. Como todos los sistemas de control de versiones, con Git puedes perder información que aún no hayas confirmado, pero una vez hecho este pasó, todo quedará guardado y podrás deshacerlo con toda seguridad.
De alguna manera Git ha revolucionado el mundo del desarrollo de software. Si bien presenta un cambio de paradigma respecto a las soluciones más comunes, sus prestaciones valen la pena el intento. Además, es Software Libre distribuido bajo los términos de la Licencia Pública General GNU versión 2. 

brayan_mayta

Mensajes : 15
Fecha de inscripción : 21/07/2017

Ver perfil de usuario

Volver arriba Ir abajo

Re: GIT COMO SISTEMA DISTRIBUIDO DE CONTROL DE VERSIONES

Mensaje por Cesar_Rodriguez el Jue Nov 02, 2017 9:47 pm

¿Qué es GIT ó GITHUB?, ¿Es lo mismo?, ¿Cuál es su utilidad?


"No trabajes en caliente" Era la frase que muchos administradores de sistemas dicen cuando es necesario tocar el código de un proyecto directamente en el FTP, hacer esto es un riesgo grande ya que puedes dejar a tu cliente sin servicios por estar manipulando 'interiores' mientras la web está siendo visitada. "¿Existe BackUp?" Otra de las preguntas que siempre debe cuestionarse a la hora de desarrollar, saber que existen unos backups cada cierto periodo de todo el sistema tranquiliza, pero si se trabaja en caliente estos backups no se guardan a menos de que bajes el archivo a tu ordenador, "Pero, ¿Qué has tocado?" Es molesto cuando tu trabajo deja de funcionar y no sabes el porque, ni quien lo modifico, ni cuando ni que linea de código o archivo.

¿Qué es Git?

Es un software de control de versiones diseñado por Linus Torvalds, pensando en la eficiencia y la confiabilidad del mantenimiento de versiones de aplicaciones cuando estas tienen un gran número de archivos de código fuente. (Wikipedia)

Git es un sistema distribuido de control de código fuente o SCM (en inglés Source Code Management). “Código fuente” pueden ser muchas cosas:
- Ficheros HTML / CSS / Javascript
- Ficheros PHP
- Ficheros de configuración
- Documentación

¿Qué Aporta?

- Auditoría del código: saber quién ha tocado qué y cuándo
- Control sobre cómo ha cambiado nuestro proyecto con el paso del tiempo
- Volver hacia atrás de una forma rápida
- Control de versiones a través de etiquetas: versión 1.0, versión 1.0.1, versión 1.1, etc. Sabremos exactamente que había en cada una de ellas y las diferencias entre cualquiera de ellas dos
- Seguridad: todas las estructuras internas de datos están firmadas con SHA1. No se puede cambiar el código sin que nos enteremos
- Mejora nuestra capacidad de trabajar en equipo
- Merging y branching extremadamente eficientes

Y ¿Qué es Github?

Que git sea distribuido quiere decir que está preparado para poder trabajar en equipos distribuidos de forma eficiente. Imagínemos que los desarrolladores estan en diferentes continentes ¿Cómo realizamos la coordinación? ¿Cómo saber quién modifico qué?.

Este problema git lo resuelve con herramientas un poco complicadas de configurar si no se tiene conocimientos adecuados (Servidores SSH, claves públicas y privadas, etc). Un administrador de sistemas con su propio servidor, no tardarías mucho en hacerlo. En caso contrario, Github facilita toda la infraestructura para trabajar en equipos distribuidos a través de una interfaz web de manera cómoda.

¿Usar github si se trabaja sólo?

Se lo puede utilizar, por una sencilla razón, el tener una copia de tu código fuente en github significa tienes un backup de todo el proyecto completo. Ese backup incluye no sólo el código que existe ahora sino también de todo el historial de modificaciones que el código ha sufrido desde el primer día. Esta copia se puede recuperar en cualquier momento y continuar trabajando desde cualquier ordenador como sin nada.

[Tienes que estar registrado y conectado para ver este vínculo]


Cesar_Rodriguez

Mensajes : 15
Fecha de inscripción : 21/07/2017

Ver perfil de usuario

Volver arriba Ir abajo

Re: GIT COMO SISTEMA DISTRIBUIDO DE CONTROL DE VERSIONES

Mensaje por Yhoselin_Huchani el Jue Nov 02, 2017 10:32 pm

Sistema de control de versiones.

Software que administra el acceso a un conjunto de ficheros, y mantiene un historial de cambios realizados. El control de versiones es útil para guardar cualquier documento que cambie con frecuencia, como código fuente, documentación o ficheros de configuración.

Características
Un sistema de control de versiones debe proporcionar:
* Mecanismo de almacenamiento de los elementos que deba gestionar.
* Posibilidad de realizar cambios sobre los elementos almacenados.
* Registro histórico de las acciones realizadas con cada elemento o conjunto de elementos.

Clasificación
Los sistemas de control de versiones se pueden clasifica en 2 grandes grupos:

*Centralizados
En un sistema de control de versiones centralizado todos nuestros fuentes y sus versiones están almacenados en un único directorio (llamado repositorio de fuentes) de un ordenador (un servidor). Todos los desarrolladores que quieran trabajar con esos fuentes, deben pedirle al sistema de control de versiones una copia local para trabajar. En ella realizan todos sus cambios y cuando están listos y funcionando, le dicen al sistema de control de versiones que guarde los fuentes modificados como una nueva versión.Algunos ejemplos son CVS y subversión.

*Distribuidos
En un sistema de control de versiones distribuido no hay un repositorio central. Todos los desarrolladores tienen su propia copia del repositorio, con todas las versiones y toda la historia. Por supuesto, según van desarrollando y haciendo cambios, sus fuentes y versiones van siendo distintas unas de otras. Sin embargo, los sistemas de control de versiones distribuidos permiten que en cualquier momento dos desarrolladores cualesquiera puedan "sincronizar" sus repositorios. Si uno de los desarrolladores ha tocado determinados fuentes y el otro no, los modificados se convierten en la versión más moderna.Ejemplos:Git y Mercurial.

Yhoselin_Huchani

Mensajes : 13
Fecha de inscripción : 22/07/2017

Ver perfil de usuario

Volver arriba Ir abajo

Git en entornos distribuidos - Flujos de trabajo distribuidos

Mensaje por Cristian_Altamirano_49153 el Vie Nov 03, 2017 8:17 am

Flujos de trabajo distribuidos
Al contrario de otros Sistemas Centralizados de Control de Versiones, (CVCSs, Centralized Version Control Systems), la naturaleza distribuida de Git permite mucha más flexibilidad en la manera de colaborar en proyectos. En los sistemas centralizados, cada desarrollador es un nodo de trabajo; trabajando todos ellos, en pie de igualdad, sobre un mismo repositorio central. En Git, en cambio, cada desarrollador es potencialmente tanto un nodo como un repositorio --es decir, cada desarrollador puede tanto contribuir a otros repositorios, como servir de repositorio público sobre el que otros desarrolladores pueden basar su trabajo y contribuir a él--. Esto abre un enorme rango de posibles formas de trabajo en tu proyecto y/o en tu equipo. Aquí vamos a revisar algunos de los paradigmas más comunes diseñados para sacar ventaja a esta gran flexibilidad. Vamos a repasar las fortalezas y posibles debilidades de cada paradigma. En tu trabajo, podrás elegir solo uno concreto, o podrás mezclar escogiendo funcionalidades concretas de cada uno.

Flujo de trabajo centralizado
En los sistemas centralizados, tenemos una única forma de trabajar. Un repositorio o punto central guarda el código fuente; y todo el mundo sincroniza su trabajo con él. Unos cuantos desarrolladores son nodos de trabajo --consumidores de dicho repositorio-- y se sincronizan con dicho punto central.

Esto significa que, si dos desarrolladores clonan desde el punto central, y ambos hacen cambios; tan solo el primero de ellos en enviar sus cambios de vuelta lo podrá hacer limpiamente. El segundo desarrollador deberá fusionar previamente su trabajo con el del primero, antes de enviarlo, para evitar el sobreescribir los cambios del primero. Este concepto es también válido en Git, tanto como en Subversion (o cualquier otro CVCS), y puede ser perfectamente utilizado en Git.

Si tienes un equipo pequeño o te sientes confortable con un flujo de trabajo centralizado, puedes continuar usando esa forma de trabajo con Git. Solo necesitas disponer un repositorio único, y dar acceso en envio (push) a todo tu equipo. Git se encargará de evitar el que se sobreescriban unos a otros. Si uno de los desarrolladores clona, hace cambios y luego intenta enviarlos; y otro desarrollador ha enviado otros cambios durante ese tiempo; el servidor rechazará los cambios del segundo desarrollador. El sistema le avisará de que está intentando enviar (push) cambios no directos (non-fast-forward changes), y de que no podrá hacerlo hasta que recupere (fetch) y fusione (merge) los cambios preexistentes. Esta forma de trabajar es atractiva para mucha gente, por ser el paradigma con el que están familiarizados y se sienten confortables.

Cristian_Altamirano_49153

Mensajes : 16
Fecha de inscripción : 22/07/2017

Ver perfil de usuario

Volver arriba Ir abajo

Re: GIT COMO SISTEMA DISTRIBUIDO DE CONTROL DE VERSIONES

Mensaje por luis_balboa_9189411 el Vie Nov 03, 2017 9:17 am


luis_balboa_9189411

Mensajes : 10
Fecha de inscripción : 23/07/2017

Ver perfil de usuario

Volver arriba Ir abajo

Re: GIT COMO SISTEMA DISTRIBUIDO DE CONTROL DE VERSIONES

Mensaje por RomerEyzaguirre_5123247 el Vie Nov 03, 2017 9:37 am

¿Qué es GitLab? GitLab es un proyecto de software libre de la compañía del mismo nombre que está programado en Ruby que, quizá siendo un poco simplista, podríamos decir que es simplemente un frontend de Git. No es solo un frontend web de Git y, por este nombre, lo primero que nos puede venir a la cabeza son estos antiguos frontends web que había, que solo nos permitían ver los ficheros y sus últimos cambios. Sin embargo, GitLab es una suite completa que nos permite gestionar, administrar, crear y conectar nuestros repositorios con diferentes aplicaciones y hacer todo tipo de integraciones con ellas. No solo incluye estos módulos para revisar los ficheros sino que además, con facilidad, podemos revisar diffs, de una manera muy visual, de todos nuestros commits, y ver dónde se producen los cambios. Podemos crear y gestionar merge requests, comentar sobre ellos y hacerlo de manera colaborativa. Podemos revisar toda la red de cambios de nuestro repositorio, viendo cómo se despliegan las ramas y a quién corresponde la responsabilidad de cada una de ellas. Incluye un completo sistema de integración continua que cubre todas las fases, desde el test hasta el despliegue y que además es compatible con Docker, tanto como para correr todos los tests en el ambiente que nosotros queramos como para crear máquinas Docker dentro del registro de contenedores que provee GitLab. Y no solo eso, sino que, si nos ponemos a configurar en profundidad, podremos integrar Mattermost, que es una aplicación también de la empresa de GitLab que es bastante parecida a estas herramientas de colaboración tan famosas, como Slack, y que nos permiten, con los mismos usuarios e integrado en todo el entorno de GitLab, colaborar, chatear y recibir y enviar mensajes con integraciones a aplicaciones externas. Como veis, GitLab es una plataforma bastante grande, tiene muchas integraciones, y es una herramienta ideal tanto para desarrolladores como para administradores de sistemas.

RomerEyzaguirre_5123247

Mensajes : 17
Fecha de inscripción : 23/07/2017

Ver perfil de usuario

Volver arriba Ir abajo

Ventajas y Desventajas de utilizar GIT

Mensaje por Mauricio_Limachi el Vie Nov 03, 2017 10:06 am

Ventajas


Compartición selectiva :
El desarrollo de la aplicación serán únicamente de uno, logrando decidir qué parte de nuestro proyecto compartimos y con quién, restringiendo a que sólo pueda verlo, que tenga la posibilidad de añadir notas, comentarios o que pueda añadir cambios. No todo tiene porque ser público.

Velocidad :
Muchas empresas deciden implementar GIT como servicio local en su infraestructura física, por lo tanto el control de versiones se realizaría dentro de la propia red con la consiguiente ganancia en velocidad de acceso y escritura, así como eliminando el requisito de contar con una conexión a internet obligatoria.

Ramificación :
Hablamos de la ramificación en una entrada anterior , y como se ofrece un amplio abanico de posibilidades a la hora de realizar cambios en la estructura principal, pudiendo crear diferentes ramas sobre las que aplicar nuestras modificaciones en entornos aislados de la línea principal de desarrollo.

Convergencia :
Si en la creación de una rama del proyecto encontramos que uno de los cambios incluidos se integra tal y como deseamos, sin presentar conflictos con las diferentes partes de nuestra aplicación, podremos incluir o hacer converger dicha ramificación con el desarrollo principal de forma sencilla y segura, contando así con una nueva versión o revisión de nuestro proyecto lista para ser distribuida, compartida y liberada.

Sandbox :
Esta sería una ventaja de una ventaja, ya que las ramificaciones nos preparan un entorno aislado de pruebas sobre el desarrollo de la línea central de nuestra app. Los cambios realizados en una de las ramas del proyecto no tendrán consecuencias para los usuarios que actualmente usen o accedan a la versión sin modificar o principal. Muy útil si lo que vamos a hacer es incluir servicios que antes no existían en nuestra aplicación y esto pudiese poner en peligro la estabilidad de otros componentes.

Flujo de trabajo adaptable :
En el sector de los controladores de versiones encontraremos diferentes formas para gestionar el flujo de desarrollo de la aplicación, destacando entre éstos los modelos centralizados y los modelos de libre configuración. Con esto encontramos que trabajemos como trabajemos encontraremos un control de versiones que se adapte a nosotros o nuestra empresa, haciendo uso desde un simple sistema jerárquico hasta un ligeramente más complejo sistema centralizado.  
Coste :
Obviamente podremos encontrar software de control de versiones que nos ofrezcan las mismas o similares características que nos otorga Git o BitBucket entre otros, pero lo que será complejo es que alguna de estas alternativas sea gratuita. Los sistemas de hosting pueden llegar a presentar algún coste, pero entrará en nuestro juicio contemplar si realizar una pequeña inversión en infraestructura online, adquirir una costosa solución similar a los ejemplos ya citados. Poniéndonos en la piel de un empresario, creo que cuanto más consigamos ahorrar a la empresa mejor para la empresa.

Desventaja


Aprendizaje :
Es algo por lo que tendremos que pasar cada vez que queramos incluir alguna nueva tecnología en un flujo de trabajo ya establecido. Deberemos formar al equipo de desarrollo o a aquellas personas a las que tendremos que dar acceso a nuestro trabajo en el servicio de control de versiones; para evitar así posibles errores en la realización de cambios.
Afortunadamente, la desventaja presentada tiene fácil solución con el curso de Git, GitHub y GitLab guiados por profesionales con amplia experiencia en cada rama de enseñanza, siempre orientada a la formación de cara al mercado laboral actual.


Mauricio_Limachi

Mensajes : 9
Fecha de inscripción : 21/07/2017

Ver perfil de usuario

Volver arriba Ir abajo

SVN vs. Git: una comparación directa

Mensaje por Elvis_Cahuaya el Vie Nov 03, 2017 10:09 am

.



Última edición por Elvis_Cahuaya el Vie Nov 03, 2017 10:34 am, editado 4 veces

Elvis_Cahuaya

Mensajes : 17
Fecha de inscripción : 21/07/2017

Ver perfil de usuario

Volver arriba Ir abajo

SVN vs. Git: una comparación directa

Mensaje por Elvis_Cahuaya el Vie Nov 03, 2017 10:29 am

SVN vs. Git: una comparación directa

Aunque muchos usuarios se preguntan cuál de los dos programas de control de versiones es mejor, no existe una respuesta general. La elección del sistema de control de versiones más adecuado para uno u otro proyecto dependerá de tus objetivos específicos. Ambos sistemas difieren en su estructura y en el proceso de trabajo resultante. La siguiente tabla resume sus principales diferencias:

[th][/th][th]SVN[/th][th]Git[/th]
Control de versionesCentralizadaDistribuida
RepositorioUn repositorio central donde se generan copias de trabajoCopias locales del repositorio en las que se trabaja directamente
Autorización de accesoDependiendo de la ruta de accesoPara la totalidad del directorio
Seguimiento de cambiosBasado en archivosBasado en contenido
Historial de cambiosSolo en el repositorio completo, las copias de trabajo incluyen únicamente la versión más recienteTanto el repositorio como las copias de trabajo individuales incluyen el historial completo
Conectividad de redCon cada accesoSolo necesario para la sincronización

Elvis_Cahuaya

Mensajes : 17
Fecha de inscripción : 21/07/2017

Ver perfil de usuario

Volver arriba Ir abajo

Re: GIT COMO SISTEMA DISTRIBUIDO DE CONTROL DE VERSIONES

Mensaje por Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba

- Temas similares

 
Permisos de este foro:
No puedes responder a temas en este foro.