Actualizado el 21 de Marzo del 2018 (Publicado el 6 de Febrero del 2018)
393 visualizaciones desde el 6 de Febrero del 2018
1,3 MB
50 paginas
Creado hace 11a (24/11/2012)
git: Control de versiones estilo Linus
Horst H. von Brand
Departamento de Inform´atica
Universidad T´ecnica Federico Santa Mar´ıa
24 de noviembre de 2012
Control de versiones
Sistema de control de versiones para Linux
Plomer´ıa y porcelana
Algunos comandos
Resumen
Visi´on general
Control de versiones
Sistema de control de versiones para Linux
Plomer´ıa y porcelana
Algunos comandos
H H v Brand
git: SCM `a la Linus
Control de versiones
Sistema de control de versiones para Linux
Plomer´ıa y porcelana
Algunos comandos
Resumen
Definici´on
Modelos
El modelo de desarrollo de Linux
Definici´on de SCM
(cid:73) Software Configuration Management (SCM) es el conjunto de
actividades relacionadas con la administraci´on de versiones de
software
(cid:73) Muchos productos se encuentran en versiones diferentes en
diversos sitios. Desarrolladores tienen versiones en prueba.
(cid:73) Es una actividad vital en el desarrollo de todo proyecto.
H H v Brand
git: SCM `a la Linus
Control de versiones
Sistema de control de versiones para Linux
Plomer´ıa y porcelana
Algunos comandos
Resumen
Definici´on
Modelos
El modelo de desarrollo de Linux
Operaciones de SCM
(cid:73) Modificar
(cid:73) Checkout
(cid:73) Editar
(cid:73) Agregar, borrar, eliminar, mover
(cid:73) Commit
(cid:73) Deshacer modificaciones anteriores
(cid:73) Informaci´on
(cid:73) Estado actual
(cid:73) Estad´ısticas
(cid:73) Diferencias
(cid:73) Historia/Arqueolog´ıa
(cid:73) Manejo de tags
(cid:73) Manejo de ramas (branches): Crear, destruir, merge, tomar
cambios, . . .
H H v Brand
git: SCM `a la Linus
Control de versiones
Sistema de control de versiones para Linux
Plomer´ıa y porcelana
Algunos comandos
Resumen
Definici´on
Modelos
El modelo de desarrollo de Linux
Modelos de SCM
Centralizado: Todo se registra en un repositorio central. Se baja
una versi´on, se modifica, se ajusta localmente por
cambios en el intertanto y se sube.
Distribuido: Cada desarrollador tiene un repositorio propio.
Maneja sus propias versiones, intercambia
modificaciones con los dem´as.
Un sistema distribuido puede manejarse en forma centralizada, en
la pr´actica no se usan realmente todos contra todos. No fuerzan
una organizaci´on particular.
Los sistemas distribuidos son c´omodos para uso personal. Dado
que est´an pensados para interacci´on directa con el repositorio, es
simple usarlos en forma puramente local.
H H v Brand
git: SCM `a la Linus
Control de versiones
Sistema de control de versiones para Linux
Plomer´ıa y porcelana
Algunos comandos
Resumen
Definici´on
Modelos
El modelo de desarrollo de Linux
Modelo centralizado
H H v Brand
git: SCM `a la Linus
Control de versiones
Sistema de control de versiones para Linux
Plomer´ıa y porcelana
Algunos comandos
Resumen
Definici´on
Modelos
El modelo de desarrollo de Linux
Modelo distribuido
H H v Brand
git: SCM `a la Linus
Control de versiones
Sistema de control de versiones para Linux
Plomer´ıa y porcelana
Algunos comandos
Resumen
Definici´on
Modelos
El modelo de desarrollo de Linux
¿Sirve la descentralizaci´on?
(cid:73) Micro-commits no intrusivos
(cid:73) Manejo de ramas privadas
(cid:73) Operaci´on desconectada
(cid:73) No hay un ´unico punto de falla
(cid:73) Respaldos son triviales
H H v Brand
git: SCM `a la Linus
Control de versiones
Sistema de control de versiones para Linux
Plomer´ıa y porcelana
Algunos comandos
Resumen
Definici´on
Modelos
El modelo de desarrollo de Linux
El modelo de desarrollo de Linux
(cid:73) El n´ucleo es grande (3.6 es 15 680 036 l´ıneas de c´odigo) y
complejo
(cid:73) Son muchos desarrolladores independientes (entre 2005 y
2011, m´as de 7 800 desarrolladores de casi 800 compa˜n´ıas
participaron, alrededor de 1/3 con un ´unico parche)
(cid:73) El tr´afico de parches es gigantesco (10 247 parches en los 71
d´ıas entre 3.5 y 3.6, es un parche cada 10 minutos)
(cid:73) Hay un centenar de ´arboles para subsistemas, por los que la
mayor´ıa de los parches pasa camino a la versi´on “oficial”
(cid:73) Hay ´arboles de versiones estables que integran s´olo cambios
simples de poco riesgo y correcci´on de errores
(cid:73) Las distribuciones toman cambios selectivamente
Linux es marca registrada de Linus Torvalds
H H v Brand
git: SCM `a la Linus
Control de versiones
Sistema de control de versiones para Linux
Plomer´ıa y porcelana
Algunos comandos
Resumen
Definici´on
Modelos
El modelo de desarrollo de Linux
El modelo de desarrollo de Linux
(cid:73) Los desarrolladores se organizan en una jerarqu´ıa informal:
Linus a la cabeza, lugartenientes de Linus, responsables por
grandes subsistemas, . . .
(cid:73) Hay m´ultiples ramas: Versiones experimentales para
arquitecturas espec´ıficas, versiones estables (base de
distribuciones “enterprise”), ´areas completas como manejo de
redes o desarrollo de WiFi, drivers individuales, colecciones de
parches en prueba, . . .
H H v Brand
git: SCM `a la Linus
Control de versiones
Sistema de control de versiones para Linux
Plomer´ıa y porcelana
Algunos comandos
Resumen
Definici´on
Modelos
El modelo de desarrollo de Linux
Requisitos de SCM para Linux
(cid:73) Sistema distribuido (son muchas l´ıneas de desarrollo)
(cid:73) Gran rendimiento (ingresar cientos de parches por minuto)
(cid:73) No dar una posici´on especial al “due˜no del repositorio
maestro”
(cid:73) El compromiso de master.kernel.org mostr´o que no estar
atado a un repositorio fijo (Linus mantuvo una copia temporal
de Linux en git://github.com/torvalds/linux.git) es
vital.
H H v Brand
git: SCM `a la Linus
Control de versiones
Sistema de control de versiones para Linux
Plomer´ıa y porcelana
Algunos comandos
Resumen
GIT – The stupid content tracker
GIT – The stupid content tracker
“git” can mean anything, depending on your mood:
(cid:73) Random three-letter combination that is pronounceable, and
not actually used by any common Unix command. The fact
that it is a mispronunciation of “get” may or may not be
relevant
(cid:73) Stupid. Contemptible and despicable. Simple. Take your pick
from the dictionary of slang.
(cid:73) “Global information tracker”: You’re in a good mood, and it
actually works for you. Angels sing, and a light suddenly fills
the room.
(cid:73) “Goddamn idiotic truckload of sh*t”: When it breaks
H H v Brand
git: SCM `a la Linus
Control de versiones
Sistema de control de versiones para Linux
Plomer´ıa y porcelana
Algunos comandos
Resumen
GIT – The stupid content tracker
GIT – The stupid content tracker
I’m an egotistical bastard, so I name all my projects after myself.
First Linux, now git.
– Linus Torvalds
[En el slang brit´anico, “git” es “pig headed, think they are always
correct, argumentative”]
H H v Brand
git: SCM `a la Linus
Control de versiones
Sistema de control de versiones para Linux
Plomer´ıa y porcelana
Algunos comandos
Resumen
GIT – The stupid content tracker
GIT mejora. . .
Inicialmente, git era exclusivamente para uso de expertos en
arcanos mayores. En la serie 1.5 se hicieron grandes esfuerzos por
hacer que git fuera m´as f´acil de usar. El esfuerzo sigue, aunque
ahora se ha concentrado en la interacci´on con otros repositorios.
And then realize that nothing is perfect. Git is just *closer* to
perfect than any other SCM out there
– Linus Torvalds
H H v Brand
git: SCM `a la Linus
Control de versiones
Sistema de control de versiones para Linux
Plomer´ıa y porcelana
Algunos comandos
Resumen
GIT – The stupid content tracker
Control de versiones – ´Area de trabajo
(cid:73) Directorios y archivos
H H v Brand
git: SCM `a la Linus
Control de versiones
Sistema de control de versiones para Linux
Plomer´ıa y porcelana
Algunos comandos
Resumen
GIT – The stupid content tracker
Control de versiones – Repositorio
(cid:73) Objeto: Contenido de un archivo
H H v Brand
git: SCM `a la Linus
Control de versiones
Sistema de control de versiones para Linux
Plomer´ıa y porcelana
Algunos comandos
Resumen
GIT – The stupid content tracker
Control de versiones – Repositorio
(cid:73) Objeto: Contenido de un archivo
(cid:73) Commit: Contenidos de archivos y
metadatos
H H v Brand
git: SCM `a la Linus
Control de versiones
Sistema de control de versiones para Linux
Plomer´ıa y porcelana
Algunos comandos
Resumen
GIT – The stupid content tracker
Control de versiones – Repositorio
(cid:73) Objeto: Contenido de un archivo
(cid:73) Commit: Contenidos de archivos y
metadatos
(cid:73) Relaci´on entre commits:
Referencias a sus predecesores
H H v Brand
git: SCM `a la Linus
Control de versiones
Sistema de control de versiones para Linux
Plomer´ıa y porcelana
Algunos comandos
Resumen
GIT – The stupid content tracker
Control de versiones – Repositorio
(cid:73) Objeto: Contenido de un archivo
(cid:73) Commit: Contenidos de archivos y
metadatos
(cid:73) Relaci´on entre commits:
Referencias a sus predecesores
(cid:73) Tags: R´otulos en puntos de la
historia
H H v Brand
git: SCM `a la Linus
Control de versiones
Sistema de control de versiones para Linux
Plomer´ıa y porcelana
Algunos comandos
Resumen
GIT – The stupid content tracker
Control de versiones – Repositorio
(cid:73) Objeto: Contenido de un archivo
(cid:73) Commit: Contenidos de archivos y
metadatos
(cid:73) Relaci´on entre commits:
Referencias a sus predecesores
(cid:73) Tags: R´otulos en puntos de la
historia
(cid:73) Ramas: Punteros a commits
H H v Brand
git: SCM `a la Linus
Control de versiones
Sistema de control de versiones para Linux
Plomer´ıa y porcelana
Algunos comandos
Resumen
GIT – The stupid content tracker
Control de versiones – Relaci´on con ´area de trabajo
(cid:73) Ramas
H H v Brand
git: SCM `a la Linus
Control de versiones
Sistema de control de versiones para Linux
Plomer´ıa y porcelana
Algunos comandos
Resumen
GIT – The stupid content tracker
Control de versiones – Relaci´on con ´area de trabajo
(cid:73) Ramas
(cid:73) HEAD apunta a una rama
H H v Brand
git: SCM `a la Linus
Control de versiones
Sistema de cont
Comentarios de: git: Control de versiones estilo Linus (0)
No hay comentarios