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
Contenidos
● ¿Qué es una forja de software?
● Forjas
● Control de versiones de código fuente
● Git
● Servicios más avanzados
¿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
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
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)
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)
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
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
– ...
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, ...
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
¿Cómo funciona?
Cc-by Wikimedia Commons
Crear repositorio local
● A) Crear repositorio local y añadir la URL
remota
– git init
– git remote add origin URL
● B) Clonar repositorio remoto directamente (más
fácil)
– git clone URL
CC-BY Jurvetson
https://www.flickr.com/photos/jurvets
on/3327872958
Lo primero que deberíamos crear
● LICENSE
● README
● .gitignore
PULL: Bajarse cambios remotos
● git pull
● git pull origin master
● git pull origin rama_concreta
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”
PUSH: Subir al repositorio remoto
● git push
Cc-by Wikipedia Commons
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
Me voy por las ramas
● Creamos rama
– git branch nueva­rama
● Nos movemos a la rama
– git checkout nueva­rama
● ¿Ande estoy?
– git branch
● Unimos ramas
– git merge la­otra
https://www.flickr.com/photos/fwolf/3389188179
CC-BY-SA-NC
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.
Agradecimientos
● Presentación: El Zen de Git
http://www.psicobyte.com/info/descargas
Gracias por la atención
¿Preguntas?

Introducción al desarrollo de software en comunidad con forja de software y git

  • 1.
    Manuel Palomo Duarte PabloGarcí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é esuna forja de software? ● Forjas ● Control de versiones de código fuente ● Git ● Servicios más avanzados
  • 3.
    ¿Qué es unaforja 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 versionesde 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 versionesde 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 versionesde 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 quevienen 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 decontrol 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
  • 11.
  • 12.
    Crear repositorio local ●A) Crear repositorio local y añadir la URL remota – git init – git remote add origin URL ● B) Clonar repositorio remoto directamente (más fácil) – git clone URL CC-BY Jurvetson https://www.flickr.com/photos/jurvets on/3327872958
  • 13.
    Lo primero quedeberíamos crear ● LICENSE ● README ● .gitignore
  • 14.
    PULL: Bajarse cambiosremotos ● git pull ● git pull origin master ● git pull origin rama_concreta
  • 15.
    COMMIT: Añadir cambiosal 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 alrepositorio remoto ● git push Cc-by Wikipedia Commons
  • 17.
    OH NOES! ● Alguienha 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 porlas ramas ● Creamos rama – git branch nueva­rama ● Nos movemos a la rama – git checkout nueva­rama ● ¿Ande estoy? – git branch ● Unimos ramas – git merge la­otra https://www.flickr.com/photos/fwolf/3389188179 CC-BY-SA-NC
  • 19.
    Cosas guays deGithub ● 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.
  • 20.
    Agradecimientos ● Presentación: ElZen de Git http://www.psicobyte.com/info/descargas
  • 21.
    Gracias por laatención ¿Preguntas?