Presentación "Introducción al desarrollo de software en comunidad con forja de software y git" impartida por Manuel Palomo y Pablo García en la Escuela Superior de Ingeniería de la Universidad de Cádiz a petición de la Game Development Association of the University of Cádiz
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
Introducción al desarrollo de software en comunidad con forja de software y git
1. Manuel Palomo Duarte
Pablo García Sánchez
Departamento de Ing. Informática
Introducción al desarrollo de software en
comunidad con forja de software y git
2. Contenidos
● ¿Qué es una forja de software?
● Forjas
● Control de versiones de código fuente
● Git
● Servicios más avanzados
3. ¿Qué es una forja de software?
● La Forja es una web (pública) que ofrece
facilidades para el desarrollo de software (libre):
– Clasificación y estadísticas del proyecto
– Repositorio de control de versiones de código
(navegable y comparable)
– Listas de correo
– Foros, noticias (RSS), wikis, notificaciones
– Publicación de binarios y documentos
– Gestión de tareas y errores con tickets
● Desarrollo eficiente, transparencia y visibilidad
4. Forjas de software
● Forja de código
– https://github.com
– https://bitbucket.org
– https://forja.cica.es
– ...
● Y hay muchas más, cada una con sus ventajas
e inconvenientes:
– https://en.wikipedia.org/wiki/Comparison_of_source_code_hosting_facilities
● Veamos un ejemplo de proyecto: Prepack
● https://github.com/facebook/prepack
5. Control de versiones de código
fuente
● Probablemente la función más destacada de
una forja es la de ofrecer un control de
versiones de código fuente, que:
– Mantiene copias de todas las versiones del código
fuente en el servidor con sus autores
– Permite recuperar versiones anteriores y
compararlas con otras recientes (diff/tkdiff)
– Funde las aportaciones de varios usuarios :-O
– Permite establecer determinados flujos de trabajo
– Genera estadísticas (con http://gource.io, GitStats,
etc)
6. Control de versiones de código
fuente
● Todo empezó con CVS (1986)
● Después llegó SVN, “CVS done right”
● Y el que se ha implantado masivamente en los
últimos años es git
– Permite hacer lo mismo que SVN
● Mucha gente es lo único que usa de git ;)
– También permite la gestión distribuida
● Existen otras alternativas: Bazaar, etc
● Disponible desde línea de comandos, entorno
gráfico (Tortoise) o integrados en IDE (Eclipse)
7. Control de versiones de código
fuente
● Actualmente Github es un estándar “de facto”
para demostrar al mundo (comunidad,
empresas, etc) tus habilidades como
desarrollador
– No se busca que todo lo que haya sea bueno:
todos hemos empezado desde abajo
– Sí que se vaya aprendiendo
● Y que lo que sea inestable se etiquete como tal
● Ejemplo:
– https://github.com/saltares
8. Servicios más avanzados
● Hay servicios más avanzados:
– Gestores de (determinados binarios) para sistemas
de control de versiones
– Integración con otras herramientas
– Testing continuo
– ...
9. Para los que vienen de DropBox
● La forja es “como la nube de DropBox”
– Pero montada en condiciones para programadores
● Para gestionar (mandar, recibir, etc) código se
usa un control de versiones (git, svn, etc) que
la forja soporte
– Hay forja soportan varios: bitbucket admite git y svn
● Pero en cada proyecto sólo puede usar uno
● Programas en tu equipo como siempre:
– Eclipse, emacs, codeblocks, ...
10. Git
● Sistema de control de versiones
● Distribuido
● Usa línea de comandos
● Creado por y para Linux
● Permite el despliegue de aplicaciones e
integración continua
Wikipedia Commons CC
15. COMMIT: Añadir cambios al
repositorio local
1) ¿Cómo está el tema?
– git status
2) On your marks! Indicar qué ficheros van a entrar en el commit (a
diferencia de otros gestores, que siempre guardan cualquier
cambio)
– git add FICHERO #(OJOCUIDAO CON ESTO!)
– git rm FICHERO
– git mv FICHERO LOQUESEA
● 3) ¡Pa entro!
– git commit m “He cambiado tal cosa”
– git commit am “He cambiado tal cosa, pero subo todos
los modificados sin pensar”
16. PUSH: Subir al repositorio remoto
● git push
Cc-by Wikipedia Commons
17. OH NOES!
● Alguien ha hecho cambios antes que yo!
● Si es en ficheros distintos
– git pull
– No hay problema
– git push
● Si hemos tocado el mismo fichero
– git pull
– MERGE EN EL FICHERO!
– Se arregla el fichero si hace falta
– git commit am “Juntando to”
– git push
● Oh Shit git! ohshitgit.com
CC-BY Donny Ray Jones
https://www.flickr.com/photos/d
onnieray/11865356303
18. Me voy por las ramas
● Creamos rama
– git branch nuevarama
● Nos movemos a la rama
– git checkout nuevarama
● ¿Ande estoy?
– git branch
● Unimos ramas
– git merge laotra
https://www.flickr.com/photos/fwolf/3389188179
CC-BY-SA-NC
19. Cosas guays de Github
● Fork: copiarme un repo a mi cuenta para no
molestar al dueño
● Pull Request: solicitar al dueño que meta mis
cambios en su repo
● Issues: Tareas pendientes. Pueden vincularse
a commits para cerrarlos o citarlos.
● Claves ssh: evitar meter usuario y contraseña.