Este documento presenta una introducción a Mercurial (Hg), un sistema de control de versiones distribuido (DVCS). Explica conceptos básicos como trabajar localmente sin conexión, realizar commits, revertir cambios y ver el estado. También cubre tópicos como crear y clonar repositorios, hacer cambios y compartirlos mediante pull y push, y trabajar en equipo usando branches y merges. Por último, menciona recursos adicionales para aprender más sobre Hg.
Esta es una breve introducción a git y gitHub. En ella se tratan muchos temas de manera conceptual y no detallada, y se omiten algunos temas importantes; pero es más que suficiente para empezar a trabajar con git y a partir de aquí ampliar esta introducción.
La razón de utilizar eclipse para la presentación, es que sea más fácil de entender los conceptos de git, para dejar la base para después empezar a trabajar con git en consola.
Aquí está un manual un poco más detallado, que permitirá empezar a trabajar con git, utilizando GitHub como servidor git: http://es.slideshare.net/MiguelAscanioGmez/manual-y-git-github
Sistema que permite registrar los cambios en un archivo o conjunto de archivos con el tiempo para poder verificar versiones especificas mas adelante. Para diseñadores web o programadores en general es una de las herramientas mas considerables a utilizar.
Esta es una breve introducción a git y gitHub. En ella se tratan muchos temas de manera conceptual y no detallada, y se omiten algunos temas importantes; pero es más que suficiente para empezar a trabajar con git y a partir de aquí ampliar esta introducción.
La razón de utilizar eclipse para la presentación, es que sea más fácil de entender los conceptos de git, para dejar la base para después empezar a trabajar con git en consola.
Aquí está un manual un poco más detallado, que permitirá empezar a trabajar con git, utilizando GitHub como servidor git: http://es.slideshare.net/MiguelAscanioGmez/manual-y-git-github
Sistema que permite registrar los cambios en un archivo o conjunto de archivos con el tiempo para poder verificar versiones especificas mas adelante. Para diseñadores web o programadores en general es una de las herramientas mas considerables a utilizar.
"Introducción a Docker".
Global Mentor Day UPM. Noviembre 2016.
Ángel Barrera, Ingeniero de Software en BEEVA.
Encuéntranos en www.beeva.com y labs.beeva.com
Docker: la revolución en virtualizaciónMarcelo Ochoa
Durante el último año la evolución de proyectos como LXC concluyo en el mundialmente reconocido proyecto Docker, un sistema de virtualización open source ultra delgado que permite optimizar por medio de la automatización vía scripts la provisión de ambientes para desarrollo, test y producción.
Entre las principales ventajas de este ambiente de virtualización podemos encontrar:
– Nativo en Linux, sin requerimientos de virtualización hardware, cero impacto en la performance
– Definición/Creación del entorno vía scripts
– Ultra liviano, se pueden correr hasta 2048 maquinas virtuales con un servidor Web en un simple micro-computador Raspberry PI
– Disponible en otras plataformas como Windows/Solaris
Guía de Referencia de Git, Herramientas y Clientes Windows, ideal para programadores que quieran inicarse en el control de sus proyectos bajo control de versiones distribuidos
Introduction to Docker. A brief description about Docker: architecture, what is Docker for, how do I start using Docker, what I need, docker ecosystem...
It was exposed in first meetup Cloud Computer Meetup Spain (http://www.meetup.com/Cloud-Computing-Spain/)
Docker is an open platform that enables developers and administrators to build images, ship, and run distributed applications in a loosely isolated environment called a container. This approach enables efficient application lifecycle management between development, QA, and production environments.
Una introducción al uso de Sistemas de Control de Versiones (SCV) como parte de las "Buenas Prácticas de Programación".
Se discuten los conceptos básicos, flujos de trabajo usuales, y al final, se muestran ejemplos de uso de Bazaar como SCV.
Docker y Kubernetes por partida doble. Sábado 19 con dos charlas sobre Docker y Kubernetes impartidas por Adrián García Casas y Javier Provecho respectivamente en la Agencia de Innovación de Valladolid
Workshop de introducción a docker, desde lo más básico hasta un dockerfile de producción no muy sofisticado.
Incluye link a un repositorio para seguir un ejercicio a lo largo de la presentación
Solapas principales Ver(solapa activa) Editar Gestionar present...Software Guru
Docker es un sistema de virtualización de servicios que nos permite aislar aplicaciones o sistemas operativos completos de una manera muy eficiente ya que no se dedican recursos de cómputo a emular el hardware como se hace con los hipervisores tradicionales como KVM, VirtualBox o VMWare.
En es plática vamos a analizar que es Docker, como funciona, un vistazo a la tecnología que lo compone y algunos casos de uso.
Casi todos los desarrolladores, han oído hablar de Docker en mayor o menor medida,pero no tantos han podido ponerlo en práctica.
Hacemos un repaso de los conceptos principales relacionados con docker, aplicando los casos de uso típicos con contenedores, siempre desde la perspectiva del programador.
* Docker como herramienta de ayuda a la programación
* Docker como sistema de empaquetado de nuestras apps.
* Docker como entorno de despliegue (docker-compose).
Talk given on BalCCon 2013 by Vlatko Kosturjak: Wonderful world of (distributed) SCM or VCS. Ripping and extracting useful info from CVS, Subversion (SVN) and GIT repositories publicly exposed on the web.
"Introducción a Docker".
Global Mentor Day UPM. Noviembre 2016.
Ángel Barrera, Ingeniero de Software en BEEVA.
Encuéntranos en www.beeva.com y labs.beeva.com
Docker: la revolución en virtualizaciónMarcelo Ochoa
Durante el último año la evolución de proyectos como LXC concluyo en el mundialmente reconocido proyecto Docker, un sistema de virtualización open source ultra delgado que permite optimizar por medio de la automatización vía scripts la provisión de ambientes para desarrollo, test y producción.
Entre las principales ventajas de este ambiente de virtualización podemos encontrar:
– Nativo en Linux, sin requerimientos de virtualización hardware, cero impacto en la performance
– Definición/Creación del entorno vía scripts
– Ultra liviano, se pueden correr hasta 2048 maquinas virtuales con un servidor Web en un simple micro-computador Raspberry PI
– Disponible en otras plataformas como Windows/Solaris
Guía de Referencia de Git, Herramientas y Clientes Windows, ideal para programadores que quieran inicarse en el control de sus proyectos bajo control de versiones distribuidos
Introduction to Docker. A brief description about Docker: architecture, what is Docker for, how do I start using Docker, what I need, docker ecosystem...
It was exposed in first meetup Cloud Computer Meetup Spain (http://www.meetup.com/Cloud-Computing-Spain/)
Docker is an open platform that enables developers and administrators to build images, ship, and run distributed applications in a loosely isolated environment called a container. This approach enables efficient application lifecycle management between development, QA, and production environments.
Una introducción al uso de Sistemas de Control de Versiones (SCV) como parte de las "Buenas Prácticas de Programación".
Se discuten los conceptos básicos, flujos de trabajo usuales, y al final, se muestran ejemplos de uso de Bazaar como SCV.
Docker y Kubernetes por partida doble. Sábado 19 con dos charlas sobre Docker y Kubernetes impartidas por Adrián García Casas y Javier Provecho respectivamente en la Agencia de Innovación de Valladolid
Workshop de introducción a docker, desde lo más básico hasta un dockerfile de producción no muy sofisticado.
Incluye link a un repositorio para seguir un ejercicio a lo largo de la presentación
Solapas principales Ver(solapa activa) Editar Gestionar present...Software Guru
Docker es un sistema de virtualización de servicios que nos permite aislar aplicaciones o sistemas operativos completos de una manera muy eficiente ya que no se dedican recursos de cómputo a emular el hardware como se hace con los hipervisores tradicionales como KVM, VirtualBox o VMWare.
En es plática vamos a analizar que es Docker, como funciona, un vistazo a la tecnología que lo compone y algunos casos de uso.
Casi todos los desarrolladores, han oído hablar de Docker en mayor o menor medida,pero no tantos han podido ponerlo en práctica.
Hacemos un repaso de los conceptos principales relacionados con docker, aplicando los casos de uso típicos con contenedores, siempre desde la perspectiva del programador.
* Docker como herramienta de ayuda a la programación
* Docker como sistema de empaquetado de nuestras apps.
* Docker como entorno de despliegue (docker-compose).
Talk given on BalCCon 2013 by Vlatko Kosturjak: Wonderful world of (distributed) SCM or VCS. Ripping and extracting useful info from CVS, Subversion (SVN) and GIT repositories publicly exposed on the web.
Curso de Posicionamiento y Marketing de buscadores: SEO, SEM y AnalíticaIEBSchool
Presentación del Curso de Posicionamiento y Marketing de buscadores: SEO, SEM y Analítica de IEBS, la Escuela de Negocios de la Innovación y los Emprendedores.
Más info: http://www.iebschool.com/programas/curso-posicionamiento-marketing-buscadores-seo-sem-analitica-web/
Ultragreen- depuración biológica membranas planas de ultrafiltracionDegrémont
Garantiza un agua de calidad superior a las normas más exigentes, incluso encaso de fuertes variaciones estacionales. Utiliza membrans planas de ultrafiltración. Recomendado para instalaciones de hasta 100.000 HE
Taller Git que impartimos Francisco Gortázar (@fgortazar) y Micael Gallego (@micael_gallego) en la Escuela Técnica Superior de Ingeniería Informática de la URJC.
Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients. AND IT'S TRUE!
In this talk given at JBCNConf 2015 in Barcelona, we will see how we use Netty at Trovit since 2013, what brought to us and how it opened our minds. We will share tips that helped us to learn more about Netty, some performance tricks and all things that worked for us.
Google Guava - Core libraries for Java & AndroidJordi Gerona
Talk at GDG DevFest Barcelona 2013.
The Guava project contains several of Google's core libraries that we rely on in our Java-based projects: collections, caching, primitives support, concurrency libraries, common annotations, string processing, I/O, and so forth.
2. roadmap svn to hg Conceptos Trabajo en equipo Cosas que hay que saber Resources Q & A #seedrockethg http://bitbucket.org/jordi9/gtug-unit-testing http://slideshare.net/giro9
3. svn to hg... por qué? escribes código perfecto a la primera? si! (mientes) no... tenemos un problema... tu código lo recibe todo el mundo cuando lo subes. dónde está el problema? subes código erróneo y te vas tarde un viernes no lo subes hasta que estás seguro que todo está bien puedes estar semanas sin "aprovecharte" del vcs! en mercurial todos los cambios son locales, por eso se conoce como un DVCS
4. svn to hg... más diferencias svn Cada commit = Foto de como estaba el sistema de ficheros en ese momento (revision - lineal) hg Cada commit = Listado de cambios preciso de cada revisión (changeset - SHA-1) svn merge? revi 1 - rev 2 - branch - rev 3... imposible hacer merge! en los DVCS se hace un gran trabajo en saber que ha pasado en cada cambio control de ficheros... o directorios? svn controla los ficheros y directorios por separado, mientra que para hg es todo un conjunto.
5. hello hg hg init / crear un repositorio $ hg init y... ya está? si! tenemos un repositorio creado. mercurial guarda su metadata en el directorio .hg hg add / añadir ficheros al repo $ echo foo > foo.txt $ hg add Por defecto se añaden todos los ficheros
6. empezemos a trabajar hg commit / hacer commit $ hg commit #abre editor $ hg commit -m "Your commit message here" acabamos de hacer un commit en nuestro repo local y privado podemos hacer tantos commits como queramos! nadie te echará bronca por romper el build en local ;) hg revert / vamos a hacer más cambios $ echo bar >> foo.txt # imaginar muchos más cambios # ... # uupppps! no era lo que se pedía $ hg revert --all
7. más operaciones hg status / que ha pasado mientras editaba $ echo bar >> foo.txt $ hg status M = Modified ? = Desconocido (hg add si lo queremos controlar) ! = Un fichero que debería estar, ya no está... ugh R = Fichero quitado del repo hg remove / eliminar un fichero $ echo bar > bar.txt $ hg add $ rm bar.txt $ hg st M foo.txt ! bar.txt $ hg remove bar.txt Hay que avisar a mercurial cuando se borra un fichero, y así lo quita del repositorio. La mayoría de IDEs lo hacen automáticamente
8. y un poco de historial y config hg log / el historial de cambios $ hg log hg glog / el historial en forma de arbol $ hg glog primero hay que activar la extensión Mercurial utiliza un fichero de configuración 1 por repo / user / install en unix ~/.hgrc en win C:rogram Filesercurialercurial.ini añadir lo siguiente: [extensions] hgext.graphlog = 1 http://www.selenic.com/mercurial/hgrc.5.html
10. repositorio "central" en los DVCS (como hg) no hay un repositorio autoritario todos los cambios, branches, tags, son operaciones locales en un DVCS puedes trabajar sin tener que pasar por ningún servidor centralizado en un VCS tradicional, todo debe pasar por servidor aun así, si que suele haber un repo común, que solo ejerce de canal para compartir el trabajo. no tiene ningún tipo de autoridad se suele hablar de repo local y repo remoto o central
11. como montar un repo central hg serve / iniciar el servidor $ hg serve # built in web server, running on http://localhost:8000/ ya está! Cualquiera puede compartir su repo y en la vida real...utilizar BitBucket! http://bitbucket.org/ by Atlassian Gratuíto para 5 usuarios, repos infinitos, muy barato luego. Wiki, issues y sobretodo... rápido. o si no... utilizar google code, que también da soporte a hg!
12. bajarse un proyecto hg clone / clonar un repo $ hg clone https://bitbucket.org/jordi9/gtug-unit-testing unit-testing vamos a arreglar un bug y compartirlo $ mvn test [INFO] ------------------------- [INFO] BUILD FAILURE [INFO] ------------------------- $ vim DatabaseTest.java $ mvn test [INFO] ------------------------- [INFO] BUILD SUCCESS [INFO] ------------------------- $ hg commit -m "Fixed bug for maven: empty test" $ hg push
13. actualizar un proyecto hg pull / bajarse los cambios $ hg pull ahora solo nos hemos bajado los cambios, pero el working directory no ha cambiado... hg update / actualizar el working directory con el pull $ hg update pull + update, lo que casi siempre haremos $ hg pull -u hg incoming | outgoing vemos los cambios que hay respecto al repo central... "lo que se bajará, y lo que se subirá"
14. varios usuarios trabajando... alguien cambia un fichero que nosotros también hemos modificado $ vim StringsTest.java # Añadimos un cambio otherUser$ eclipse StringsTest.java # Añade otro cambio y lo sube vamos a subir nuestros cambios $ hg commit -m "Added stupid logging" $ hg push abort: push creates new remote heads on branch 'default'! (you should pull and merge or use push -f to force) no utilizar el -f (force) en el mismo branch! si lo hacemos nuestros cambios no lo verán el resto hasta que...
15. juntar el trabajo / merge cuando hay cambios remotos desde nuestro último pull, hay que juntarlos hg merge / a juntar cambios $ hg pull #primero hay que bajar los cambios added 1 changesets with 1 changes to 1 files (+1 heads) (run 'hg heads' to see heads, 'hg merge' to merge ) $ hg merge 0 files updated, 1 files merged, 0 files removed, 0 files unresolved (branch merge, don't forget to commit ) $ hg commit -m "Merged with HASH"
16. workflow típico cuando reanudamos nuestro trabajo $ hg pull -u # work work work... $ hg commit # keep track of your changes and keep going! # work work work... cuando ya estamos listos para compartir nuestro trabajo $ hg pull $ hg merge $ mvn install # o el sistema que utilicéis para comprobar que todo está bien $ hg commit (el merge) $ hg push
18. branches trunk (svn) = master (git) = default (hg) En mercurial el branch por defecto se llama default svn users: no existe la típica estructura de trunk / branches / tags hg branch / ver en que branch estamos $ hg branch hg branch / crear una named branch $ hg branch newfeature # parece que no hagamos nada.. pero a partir ahora # todos los commits se harán en este branch $ hg ci -m "started feature branch"
19. como trabajar con branches / releases clone way... o branch way (power user) hacemos cambios en el branch newfeature $ hg branch newfeature $ echo "foo" > foo.txt $ hg ci -A -m "Added foo file" $ hg push pushing to https://bitbucket.org/jordi9/gtug-unit-testing searching for changes abort: push creates new remote branches: new! (use ' hg push --new-branch ' to create new remote branches) mercurial te hace ser explicito cuando creas un branch remoto, por si te has olvidado de hacer merge antes...
20. creando un branch remoto hg push --new-branch / branch remoto $ hg push --new-branch $ hg log # en algunos editores utilizar -f (force), aquí si se puede utilizar ahora podemos ir cambiando entre un branch stable y otro de pruebas hg branches / ver que banches existen $ hg branches hg update branchname / cambiar de branch $ hg update newfeature y juntar los cambios cuando queramos con merge $ hg merge newfeature
21. branches best practices branches trabajar en default (o en alguna "feature" branch) y utilizar un branch stable para todo el código que esté live utilizar branches para "experimentos" largos o releases cuando hacemos merge... hay que pensar "estoy en el branch X, hago merge con Y, y sigo trabajando con X" eg: estamos desarrollando newfeature y necesitamos traer cambios de stable $ hg up newfeature $ hg merge stable $ hg ci -m "Using last stable version on newfeature" # keep working cerrar named branch $ hg up newfeature $ hg ci -m "Closed branch" --close-branch
22. branches best practices++ cerrar named branches $ hg up newfeature $ hg ci -m "Closed branch" --close-branch $ hg up default $ hg merge newfeature $ hg ci -m "Merged new feature into default" ahora ya tenemos la nueva feature en default, y el branch no aparece en hg branches
23. tags funcionan con el mismo propósito que los otros (D)VCS: "acordarnos" de un changeset en concreto... suele coincidir con la versión de la aplicación. tip tag por defecto (y que no se puede borrar) que nos indica cual es el último head en nuestro repo. eg: si hacemos un pull sin update, es muy posible que ya no estemos en el tip hg tag / crear un tag $ hg tag version-1.0.0 hg tag g/ listado de tags en nuestro repo $ hg tags
24. .hgignore para ignorar ficheros se configura por repo en el fichero .hgignore, que tiene que estar en la raiz del repo (al lado de donde está la carpeta .hg) como ignorar una carpeta, o un fichero... funciona con expresiones regulares $ vim .hgignore # espacio en blanco! syntax: regexp build syntax: regexp ^.*/target$
25. hgrc configuración del repo / user / instalación. es posible que lo tengamos que crear debe estar en la carpeta .hg que está en la raiz del repo de donde se hace el pull / push? hay que definir el path default. si el repo se ha empezado con clone, ya está puesto por defecto $ vim .hg/hgrc [paths] default = https://bitbucket.org/jordi9/gtug-unit-testing unit-testing como guardo mi user / pass? $ vim .hg/hgrc [auth] repo.prefix = bitbucket.org repo.username = jordi9 repo.password = foobar
26. y muchísimas más opciones! hg rebase / cambiar el parent de un changeset útil para tener una historia más lineal hg strip / hacer desaparecer un commit útil para ir hacia atrás sin dejar rastro IDEs & tools soporte para la mayoría de IDEs: eclipse, netbeans, intellij idea... tortoiseHg muy recomendable utilizarlos, sobretodo para resolver conflictos
27. resources tutorial básico un gran inicio / www.hginit.com libro mercurial: the definitive guide gratis / hgbook.red-bean.com cheat sheets usage / bit.ly/hgsheet quick start / bit.ly/hgquick comparación con git by Google, cuando decidió hg en vez de git / bit.ly/hgvsgit