apuntes:documentacion
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionLast revisionBoth sides next revision | ||
apuntes:documentacion [2018/02/13 17:28] – [Ejercicios] Santiago Faci | apuntes:documentacion [2018/02/19 12:08] – [Ejercicios] Santiago Faci | ||
---|---|---|---|
Line 4: | Line 4: | ||
=== GitHub === | === GitHub === | ||
+ | |||
+ | {{github.jpg? | ||
+ | |||
+ | [[http:// | ||
+ | |||
+ | Actualmente es la plataforma de alojamiento de código fuente más utilizada (alrededor de 20 millones de usuarios la utilizan) y es especialmente conocida en la comunidad de software libre puesto que un gran número de proyectos de licencias alrededor de este tipo de software se alojan en esta plataforma. | ||
+ | |||
+ | Actualmente //GitHub// ofrece alojamiento y funcionalidades gratuitas para repositorios públicos (orientados al uso de proyectos de software libre) pero paganado es posible conseguir repositorios privados. | ||
=== Bitbucket === | === Bitbucket === | ||
- | ==== Sistemas de control de versiones: Git ==== | + | {{bitbucket.png? |
+ | |||
+ | [[http:// | ||
+ | |||
+ | Actualmente // | ||
+ | |||
+ | === Fichero README.md === | ||
+ | |||
+ | Es un fichero, que podemos escribir en síntaxis // | ||
+ | * Título del proyecto | ||
+ | * Descripción del proyecto | ||
+ | * Requisitos para la instalación | ||
+ | * Guía rápida de instalación (y si hay más documentación se enlaza aqui, por ejemplo a la Wiki del proyecto) | ||
+ | * Enlace a la web (si la hay) | ||
+ | * Información sobre los autores del proyecto | ||
+ | |||
+ | Hay que tener en cuenta la importancia de este fichero ya que es la primera descripción que un usuario encontrará cuando acceda a nuestro repositorio | ||
+ | |||
+ | < | ||
+ | {{ bitbucket_readme.png }} | ||
+ | < | ||
+ | |||
+ | === Gestor de incidencias === | ||
+ | |||
+ | El gestor de incidencias (// | ||
+ | |||
+ | Lo más importante a la hora de registrar una incidencia es asignarle un título y descripción para que sea fácil de encontrar y reproducir por quién tenga que resolverla (incluso aunque sea uno mismo, no siempre se pueden resolver las incidencias en el momento de encontrarlas y más tarde quizás olvidemos algún detalle). Menos importante pero interesante será definir la inmportancia de la //issue// (ayudará a priorizar) y el tipo de incidencia: | ||
+ | * **bug**: Un fallo que se ha localizado en el código | ||
+ | * **enhancement**: | ||
+ | * **proposal**: | ||
+ | * **task**: Una tarea que debe realizarse. No tiene porque ir asociada a ningún problema o bug de código | ||
+ | |||
+ | También podemos adjuntar algún fichero, como por ejemplo capturas que ayuden a detectar o comprender mejor el problema. | ||
+ | |||
+ | Por último, la incidencia puede ser directamente asignada a un usuario (incluso a uno mismo). En caso de que no se sepa quién debe realizarla se puede dejar en blanco esperando que el responsable decida quién la tiene que corregir. | ||
+ | |||
+ | < | ||
+ | {{ bitbucket_issues1.png }} | ||
+ | < | ||
+ | |||
+ | La vista de incidencias tiene filtros automáticos que permiten localizar las incidencias rapidamente por su estado. | ||
+ | |||
+ | < | ||
+ | {{ bitbucket_issues2.jpg }} | ||
+ | < | ||
+ | |||
+ | Además, el gestor de incidencias de Bitbucket permite realizar ciertas gestiones sobre las mismas utilizando una serie de comandos que directamente pueden ser aplicados cuando se realizan los //commit// sobre el código con el comando //git//. Una lista de los comandos y opciones disponibles se puede encontrar [[https:// | ||
+ | |||
+ | Por ejemplo, si tenemos una incidencia abierta con el número #13 que hace referencia a un //bug// en cierta parte del código, cuando resolvamos el error y nos dispongamos a hacer el //commit// que soluciona dicho problema, podemos ejecutar ese comando de la siguiente forma: | ||
+ | |||
+ | <code bash> | ||
+ | santi@zenbook: | ||
+ | </ | ||
+ | |||
+ | De esta forma, la incidencia con el número #13 será automáticamente marcada como resuelta sin que tengamos que acceder con el navegador al gestor de incidencias y resolverla manualmente a través de la web. Además, el mensaje del //commit// quedará asociado como mensaje de resolución de dicha incidencia. | ||
+ | |||
+ | === Wiki === | ||
+ | |||
+ | Siempe que creemos por primera vez un repositorio en Bitbucket tendremos la oportunidad de decidir si queremos que se integre una Wiki con él. | ||
+ | |||
+ | A través de la Wiki podremos crear documentación asociada a nuestro proyecto/ | ||
+ | |||
+ | < | ||
+ | {{ bitbucket_wiki.png }} | ||
+ | < | ||
+ | |||
+ | === Trello === | ||
+ | |||
+ | < | ||
+ | {{ bitbucket_board.gif }} | ||
+ | < | ||
+ | ===== Sistemas de control de versiones: Git ===== | ||
+ | |||
+ | {{ git_bitbucket.png? | ||
+ | |||
+ | Con el objetivo de que durante el curso podáis trabajar con la herramienta //git// utilizando // | ||
+ | |||
+ | ==== Instalación de git ==== | ||
+ | |||
+ | Lo primero que necesitaremos será instalar //git// en nuestro equipo. Podéis encontrarlo en [[http:// | ||
+ | |||
+ | {{ youtube> | ||
+ | \\ | ||
+ | |||
+ | Si utilizáis un Linux Debian o derivados podéis utilizar directamente '' | ||
+ | |||
+ | <code bash> | ||
+ | santi@zenbook: | ||
+ | </ | ||
+ | |||
+ | En cualquier caso no hay que olvidar que debemos configurar //git// antes de empezar a usarlo. Al menos deberemos configurar nuestra identidad, asignando un nombre y un email al equipo desde el que lo usaremos para identificarnos cada vez que sincronicemos nuestro repositorio local con el remoto (a parte de que además nos pida nuestras credenciales para conectarnos con Bitbucket) | ||
+ | |||
+ | <code bash> | ||
+ | santi@zenbook: | ||
+ | santi@zenbook: | ||
+ | </ | ||
+ | |||
+ | También tenemos que tener en cuenta que siempre podremos comprobar esta y otras configuraciones en cualquier momento: | ||
+ | |||
+ | <code bash> | ||
+ | santi@zenbook: | ||
+ | user.name=Santiago Faci | ||
+ | user.email=miemail@gmail.com | ||
+ | . . . | ||
+ | . . . | ||
+ | </ | ||
+ | ==== Crear una cuenta en Bitbucket ==== | ||
+ | |||
+ | El siguiente paso será crear una cuenta en Bitbucket para acceder a todos los servicios que está plataforma nos ofrece, tanto de gestión de repositorios para nuestros proyectos como de gestión de incidencias, | ||
+ | |||
+ | {{ youtube> | ||
+ | \\ | ||
+ | |||
+ | ==== Crear un repositorio en Bitbucket ==== | ||
+ | |||
+ | Una vez que tenemos una cuenta ya creada, podremos crear repositorios para nuestros proyectos. | ||
+ | |||
+ | En este caso, a modo de ejemplo, crearemos un repositorio remoto en Bitbucket y más adelante lo actualizaremos con un proyecto que hayamos iniciado en nuestro equipo (repositorio local) | ||
+ | |||
+ | Además, una vez creado el repositorio remoto en Bitbucket, en nuestro equipo marcaremos nuestro proyecto como un proyecto que será gestionado a través de git y lo configuraremos para que pueda ser gestionado a través de dicha herramienta y fijaremos como repositorio remoto con el que sincronizarse el que acabamos de crear en Bitbucket. | ||
+ | |||
+ | Marcamos el proyecto como un proyecto que será gestionado con git creando el repositorio local: | ||
+ | |||
+ | <code bash> | ||
+ | santi@zenbook:/ | ||
+ | </ | ||
+ | |||
+ | Añadimos la URL del repositorio remoto con el que sincronizaremos nuestros cambios: | ||
+ | |||
+ | <code bash> | ||
+ | santi@zenbook:/ | ||
+ | </ | ||
+ | |||
+ | Ahora ya tenemos nuestro repositorio local. Podemos continuar trabajando en el proyecto y seguir con el resto de comandos de esta parte cuando tengamos algo listo para subir al repositorio remoto, o bien podemos subir ya lo que tengamos listo en este momento. | ||
+ | |||
+ | Añadimos los cambios que queremos subir al repositorio remoto. En este caso añadimos todo lo que haya en la carpeta del proyecto. Otras veces quizás sólo queramos subir parte de lo que hemos desarrollado (una carpeta o simplemente algunos ficheros sueltos): | ||
+ | |||
+ | <code bash> | ||
+ | santi@zenbook:/ | ||
+ | </ | ||
+ | |||
+ | Marcamos esos cambios como listos para subir y añadimos el comentario para esta validación ('' | ||
+ | |||
+ | <code bash> | ||
+ | santi@zenbook:/ | ||
+ | </ | ||
+ | |||
+ | Subimos los cambios al repositorio remoto a la rama '' | ||
+ | |||
+ | <code bash> | ||
+ | santi@zenbook:/ | ||
+ | </ | ||
+ | |||
+ | {{ youtube> | ||
+ | \\ | ||
+ | ==== Subir un cambio en el proyecto al repositorio remoto ==== | ||
+ | |||
+ | A medida que avancemos en el desarrollo de nuestra aplicación nos puede interesar ir subiendo algunos cambios al repositorio remoto. Lo podemos hacer en cualquier momento y además hay que tener en cuenta que no es necesario subir todo aquello que hayamos cambiado, sino que podemos añadir ('' | ||
+ | |||
+ | {{ youtube> | ||
+ | \\ | ||
+ | |||
+ | ==== Descargar un repositorio y actualizarlo ==== | ||
+ | |||
+ | Por otra parte, también podemos necesitar acceder a un repositorio remoto ya creado para continuar a partir de ese trabajo ya realizado e ir subiendo nuevos cambios a medida que los realizemos. Para eso podemos //clonar// un repositorio remoto en nuestro equipo, realizar los cambios que vayamos necesitando y subir dichos cambios (a medida que nos interese) al repositorio remoto de donde clonamos inicialmente el proyecto. | ||
+ | |||
+ | {{ youtube> | ||
+ | \\ | ||
+ | |||
+ | ==== Comprobar si hay cambios en el repositorio remoto ==== | ||
+ | |||
+ | ==== Crear una nueva rama ==== | ||
+ | |||
+ | <code bash> | ||
+ | santi@zenbook: | ||
+ | </ | ||
+ | |||
+ | ==== Cambiar de rama ==== | ||
+ | |||
+ | <code bash> | ||
+ | santi@zenbook: | ||
+ | </ | ||
+ | |||
+ | ==== Fusionar ramas ==== | ||
+ | |||
+ | <code bash> | ||
+ | santi@zenbook: | ||
+ | santi@zenbook: | ||
+ | </ | ||
+ | |||
+ | ==== Subir cambios a una rama determinada ==== | ||
+ | |||
+ | Al ejecuta el comando '' | ||
+ | |||
+ | <code bash> | ||
+ | santi@zenbook: | ||
+ | santi@zenbook: | ||
+ | </ | ||
+ | |||
+ | ==== Eliminar un fichero del repositorio remoto ==== | ||
+ | |||
+ | Hay que tener en cuenta que en este caso eliminaremos el fichero tanto del repositorio remoto como del local | ||
+ | |||
+ | <code bash> | ||
+ | santi@zenbook: | ||
+ | </ | ||
+ | |||
+ | Y en el caso de un directorio | ||
+ | |||
+ | <code bash> | ||
+ | santi@zenbook: | ||
+ | </ | ||
+ | |||
+ | ==== Evitar que algunos ficheros/ | ||
+ | |||
+ | También es posible evitar que algunos ficheros o carpetas o incluso extensiones determinadas pasen a formar parte del repositorio de forma permanente. En este caso hablamos de que estos ficheros se ignoran incluso aunque estén dentro de alguna carpeta que se incluya para ser gestionada como parte del repositorio. De esa manera podemos trabajar más cómodamente sin necesidad de ir teniendo cuidado de no incluirlos. | ||
+ | |||
+ | En este caso pensamos en ficheros como los '' | ||
+ | |||
+ | En este caso es necesario crear un fichero con el nombre '' | ||
+ | |||
+ | <code bash .gitignore> | ||
+ | # Ficheros generados Java | ||
+ | *.class | ||
+ | *.jar | ||
+ | |||
+ | # Ficheros OSX | ||
+ | .DS_Store | ||
+ | |||
+ | # Carpetas que contienen ficheros generados | ||
+ | bin/ | ||
+ | out/ | ||
+ | </ | ||
+ | |||
+ | Por último, y una vez creado el fichero, se tendrá que añadir como parte del repositorio como cualquier otro. Se permite que se hagan cambios siempre y cuando se validen y suban como corresponde. | ||
+ | |||
+ | ==== Dejar de mantener un fichero en el repositorio remoto ==== | ||
+ | |||
+ | Ahora suponemos que queremos dejar de sincronizar con el repositorio remoto un fichero pero queremos seguir manteniéndolo en el repositorio local porque, por ejemplo, queremos que forme parte del proyecto pero sólo en nuestro equipo. | ||
+ | |||
+ | <code bash> | ||
+ | santi@zenbook: | ||
+ | </ | ||
+ | |||
+ | Y para el caso de un directorio | ||
+ | |||
+ | <code bash> | ||
+ | santi@zenbook: | ||
+ | </ | ||
+ | |||
+ | Y si además lo que realmente queremos es que esos ficheros o carpetas no formen parte del repositorio remoto podemos [[# | ||
+ | |||
+ | ==== Eliminar del repositorio remoto ficheros eliminados ya en local directamente ==== | ||
+ | |||
+ | Al utilizar Git deberíamos utilizar el comando '' | ||
+ | |||
+ | En ese caso, podemos utilizar este comando, que marca como eliminados para el repositorio remoto todos aquellos ficheros que hayamos eliminado en local directamente. | ||
+ | |||
+ | <code bash> | ||
+ | santi@zenbook: | ||
+ | </ | ||
+ | |||
+ | ==== Obtener el historial de commits del repositorio ==== | ||
+ | |||
+ | Podemos obtener el historial de cambios ('' | ||
+ | |||
+ | <code bash> | ||
+ | santi@zenbook: | ||
+ | commit f1f20725ad152654bf7684b324109b1eace75b04 | ||
+ | Author: . . . | ||
+ | Date: Sat Nov 4 10:44:37 2017 +0100 | ||
+ | |||
+ | Cambios para hacer que funcione algo | ||
+ | |||
+ | commit e63e2b06f7fe4b724dabe78d437baa964ad384f6 | ||
+ | Author: . . . | ||
+ | Date: Sat Nov 4 10:43:12 2017 +0100 | ||
+ | |||
+ | Ya se puede registrar | ||
+ | |||
+ | commit a1160bce457b6e86f1cd7bb40205703f269dcb57 | ||
+ | Author: . . . | ||
+ | Date: Sat Nov 4 02:59:08 2017 +0100 | ||
+ | |||
+ | Arreglado el bug de eliminar | ||
+ | . . . | ||
+ | . . . | ||
+ | </ | ||
+ | |||
+ | También podemos visualizar una versión reducida de este historial utilizando la opción '' | ||
+ | |||
+ | <code bash> | ||
+ | santi@zenbook: | ||
+ | f1f2072 Cambios para hacer que funcione algo | ||
+ | e63e2b0 Ya se puede registrar | ||
+ | a1160bc Arreglado el bug de eliminar | ||
+ | . . . | ||
+ | . . . | ||
+ | </ | ||
+ | |||
+ | ==== Obtener el estado del código para un commit determinado ==== | ||
+ | |||
+ | Si conocemos el hash de un commit concreto, podemos obtener el estado del código en el momento de dicho commit utilizando el comando '' | ||
+ | |||
+ | <code bash> | ||
+ | santi@zenbook: | ||
+ | Note: checking out ' | ||
+ | |||
+ | You are in ' | ||
+ | changes and commit them, and you can discard any commits you make in this | ||
+ | state without impacting any branches by performing another checkout. | ||
+ | |||
+ | If you want to create a new branch to retain commits you create, you may | ||
+ | do so (now or later) by using -b with the checkout command again. Example: | ||
+ | |||
+ | git checkout -b new_branch_name | ||
+ | |||
+ | HEAD is now at a1160bce... Arreglado el bug de eliminar | ||
+ | </ | ||
+ | |||
+ | Para conocer el hash del commit podemos utilizar el comando '' | ||
+ | |||
+ | Y para volver al estado actual, en este caso a la rama //master//, que es donde estaba trabajando: | ||
+ | |||
+ | <code bash> | ||
+ | santi@zenbook: | ||
+ | Previous HEAD position was a1160bce... Arreglado el bug de eliminar | ||
+ | Switched to branch ' | ||
+ | Your branch is up-to-date with ' | ||
+ | </ | ||
---- | ---- | ||
Line 13: | Line 351: | ||
===== Ejercicios ===== | ===== Ejercicios ===== | ||
- | - Crea un repositorio en [[http:// | + | - Crea un repositorio en [[http:// |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
+ | - Cuando tengas la primera funcionalidad terminada sube el código al repositorio y validalo | ||
+ | - Sobre el repositorio anterior, imagina ahora que empiezas a trabajar en dicho proyecto y eres el encargado de añadir una nueva funcionalidad (un nuevo método, por ejemplo): | ||
+ | - Descargate el repositorio con la idea de seguir trabajando en él | ||
+ | - Añade la funcionalidad requerida | ||
+ | - Modifica el '' | ||
+ | - Comprueba el estado del repositorio en tu equipo ('' | ||
+ | - Añade los cambios realizados al proyecto | ||
+ | - Sobre el mismo repositorio que los puntos anteriores, imagina que debes de eliminar un fichero que ya no es necesario que forme parte del mismo (si hace falta añade alguno para luego eliminarlo) y tampoco quieres que siga en tu equipo | ||
+ | - Imagina ahora que debes de eliminar un fichero que ya no es necesario que forme parte del mismo (si hace falta añade alguno para luego eliminarlo) pero quieres que siga formando parte del repositorio local en tu equipo | ||
+ | - Añade ahora en la '' | ||
+ | - Registra ahora una nueva incidencia de tipo //mejora// para el repositorio y programa dicha mejora. En el momento de hacer el commit del código que la añade, haz que se marque como corregida. | ||
+ | - Amplia el '' | ||
+ | - Descripción breve del proyecto | ||
+ | - Requisitos para su instalación/ | ||
+ | - Guía rápida de instalación (remite a la Wiki para más información) | ||
+ | - Información sobre los autores | ||
---- | ---- |
apuntes/documentacion.txt · Last modified: 2019/01/04 13:02 by 127.0.0.1