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
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
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.