Alan Boglioli
Federico Brest
Hernán Noli
Malena Casas
Matías Martinez
Pablo Diaz
SourceForge es una central de desarrollos de software que controla y gestiona varios proyectos de software libre y actúa como un repositorio de código fuente.
SourceForge.net es hospedado por VA Software y corre en
una versión del software SourceForge.
Source Forge gestiona a través de proyectos repositorios SVN, Hg (mercurial) y Git.
Cada usuario puede crear sus proyectos y repositorios de forma gratuita.
Estos proyectos suelen ser open source (código libre y abierto), en los cuales podemos participar, descargar el código, mejorar el código, enviar informes de errores, solicitar cambios, étc.
Tiene una estructura similar a un sistema de archivos. La diferencia está en que se puede acceder a distintas versiones de los archivos y operar con estas versiones. Es decir: Es un sistema de ficheros con versionado.
Existe también la posibilidad de crear ramas de ramas o de mezclarlas entre ellas, complicando así el grafo generado.
Hay que tener en cuenta que, durante la mezcla de código, es posible que el algoritmo de mezclado falle, así que es buena idea combinar estas técnicas con robustas baterías de pruebas.
Los repositorios pueden lanzar acciones automáticas cuando se producen ciertos eventos. Por ejemplo, podrían enviarnos un e-mail cuando una rama se mezcla con la rama principal, o comprobar que el código cumple ciertos criterios de calidad.
Existe la opción de tener repositorios remotos réplica. Esto significa que podemos sincronizar nuestros cambios contra una de estas réplicas y ésta se sincronizará tarde o temprano con otra de las réplicas.
La sincronización entre repositorios puede ser manual o automática, y puede dar lugar a un flujo de trabajo distinto según se necesite.
$ hg [comando] [parámetros]
$ hg help
$ hg add .
$ hg commit -m "Mensaje..."
$ hg branches
$ hg push
$ hg pull
Ramas
Último commit que modificó el archivo
Archivos mostrados en forma de directorio
Etiquetas
$ hg log
$ hg clone [url-de-repositorio] [nombre-de-la-carpeta]
$ hg merge # Mezclar cambios
Nuevo archivo y nueva funcionalidad
Es una interfaz gráfica y una serie de aplicaciones para el sistema distribuído de control de versiones Mercurial.
Incluye extensiones para Gnome/Nautilus para GNU/Linux y herramientas de línea de comandos.
Text
Text
http://tortoisehg.bitbucket.org/
Clonar un repositorio
Clonar un repositorio
Repositorio clonado
Commit
Nuevo archivo
Agregar un archivo
Nuevo Commit
Barra de íconos de fácil acceso
Repositorio remoto
Servidor de integración continua, gratuito, open-source y actualmente uno de los más empleados para esta función.
Desarrollado bajo el lenguaje Java.
Corre en un servidor que es un contenedor de servlets, como Apache Tomcat.
Soporta herramientas de control de versiones como CVS,Subversion, Git, Mercurial, Perforce y Clearcase y puede ejecutar proyectos basados en Apache Ant y Apache Maven, así como scripts de shell y programas batch de Windows.
Basado en el proyecto Hudson, creado por Kohsuke Kawaguchi (Sun).
Años más tarde Oracle compra Sun, y la comunidad de Hudson decide renombrar el proyecto a Jenkins y migrar el código a Github .
No obstante, Oracle sigue manteniendo y trabajando en Hudson.
Antes de empezar debemos asegurarnos de que tenemos las dependencias de Java instaladas. En caso de que no sea así las instalaremos mediante:
sudo apt-get install openjdk-7-jre and openjdk-7-jdk
Usamos como fuente los repositorios de Jenkins para asegurarnos de que estamos instalando la última versión disponible.
*Por defecto Jenkins escucha en el puerto 8080.
# Agregar llave de repositorio
wget -q -O - http://pkg.jenkins-ci.org/debian/jenkins-ci.org.key \
| sudo apt-key add -
# Agregar repositorios de jenkins a las fuentes
sudo sh -c 'echo deb http://pkg.jenkins-ci.org/debian binary/ > \
/etc/apt/sources.list.d/jenkins.list'
# Actualización de base de datos de repositorios e instalación
sudo apt-get update
sudo apt-get install jenkins
Acceder a la configuración global de seguridad delservidor de Jenkins (http://servidor/jenkins/configureSecurity/)
Marcar la casilla 'Activar seguridad'.
En Seguridad marcar 'Usar base de datos de Jenkins ' y 'Permitir que los usuarios se registren'.
Seleccionar la 'Configuración de seguridad' como autorización y dentro de ella le damos permiso de lectura al usuario Anónimo.
En textbox de abajo ingresar nombre de usuario que vaya a ser administrador y dar click en el botón de añadir. Aparecerá en la matriz una nueva fila para este usuario para la cual se deberá marcar todas las casillas
Guardar.
Ejecutar:
acceder a la URL de nuestro servidor de Jenkins y clickear "Registrarse" o "Crear cuenta". (Verificar que el nombre de usuario coincide con el que ingresado para poder asignar los permisos).
sudo service jenkins start
Existen multitud de plugins que permiten cambiar el comportamiento de Jenkins o añadir nueva funcionalidad.
Los más usados (mayo 2016)
Javadoc
Añade soporte Javadoc a Jenkins. Esta funcionalidad solía ser una parte del núcleo, pero a partir de Jenkins 1.431, se separó en diferentes plugins.
Mailer
Permite configurar las notificaciones de correo electrónico con los resultados de los builds. Para ello se debe configurar el servidor de correo. Jenkins enviará un correo electrónico a los destinatarios cuando se produce un cierto acontecimiento importante:
1. Todo build fallido
2. Un build exitoso después de uno fallido
3. Un build inestable después de uno exitoso
4. A menos que se configure, cada build inestable provoca un nuevo mail
External-monitor-job
Añade la posibilidad de controlar el resultado de los trabajos
realizados externamente.
Credentials
Permite almacenar credenciales en Jenkins. Proporciona una
API estándar para otros plugins para almacenar y recuperar
diferentes tipos de credenciales.
Características visibles de usuario:
- Pantalla de "Administrar credenciales" en la pantalla "Administrar
Jenkins". Permite administrar el sistema y las credenciales globales.
- Si está utilizando la seguridad Jenkins, cuando se va a "Usuarios" / su nombre de usuario / "Configuración", verá la opción para administrar las credenciales personales.
- En cualquier lugar donde se necesitan esas credenciales, hay una lista desplegable de las credenciales apropiadas disponibles para seleccionar.
- Cuando llegue el momento de cambiar la contraseña, sólo la cambia una vez.
Ssh-slaves
Permite administrar los esclavos que se ejecutan en
máquinas * nix a través de SSH. Añade un nuevo
tipo de método de lanzamiento de esclavos. Este
método de lanzamiento:
- Abre una conexión SSH al host especificado como el
nombre de usuario especificado.
- Comprueba la versión por defecto de Java para ese usuario.
- [No se ha implementado todavía] Si la versión por defecto
no es compatible con slave.jar de Jenkins, trata de encontrar
una versión de Java que lo sea.
- Una vez que se cuenta con una versión adecuada de Java, copia la última slave.jar a través de SFTP.
- Inicia el proceso de esclavo.
"hg branches" sin argumentos muestra las branches locales y resalta la que estás revisando.
Una buena práctica es hacer commits por cambios lógicamente separados.
Los commits son "entradas de un libro de registro", siempre que se haya realizado un cambio que vale la pena señalar, grabalo en un commit.
Una opción popularmente aceptada es permitir a cualquiera commitear localmente las veces que desee, pero antes de hacer push a los commits locales, deben ajustarlos.
En general, si se hace push para actualizar el branch que no tiene hecho un checked out en un repositorio remoto, los archivos del árbol de trabajo no se actualizarán.
Esto es por precaución, para evitar conflictos entre los cambios que hace el push y los otros en el arbol de trabajo.
Si se esta seguro de lo que se hace, pueden hacer “hg reset –hard” en el lugar deseado para hacer push. Se perderan TODOS los cambios hechos en ese lugar, reseteando el arbol de trabajo a la version mas nueva que se hizo push.
El comando "hg blame" permite rastrear rápidamente quien hizo un cambio específico a un archivo. Desde el repositorio local uno puede ejecutar ese comando con el parámetro –L especificando qué líneas te interesan.
Para un historial local, uno puede utilizar el comando "hg log" para ver una lista del historial de commits para un branch local en la línea de comandos. También se puede utilizar la herramienta gráfica gitk para ver el historial de una branch local.
Significa que el usuario se encuentra ubicado en en una HEAD separada y puede ser que pierda commits
Unas definiciones breves:
Fetch: Descargar (nuevos) objectos y la head de otro repositorio.
Pull: Hace Fetch, y luego merge lo que se ha descargado con el desarrollo actual
HEAD: Significa “cuál es mi punto en el repositorio actual”
En el caso de que el Head se refiera a commit no es a la punta de cualquier branch. Esto se llama una "cabeza separada" (detached head).