Documentos de Académico
Documentos de Profesional
Documentos de Cultura
APLICACIONES WEB
MODALIDAD: DISTANCIA
MÓDULO: ENTORNOS DE
DESARROLLO
UNIDAD DE TRABAJO 4:
OPTIMIZACIÓ Y
DOCUMENTACIÓN
Índice
1.- Refactorización
2.- Control de Versiones
3.- Documentación
2. CONTROL DE
VERSIONES
Control de Versiones
Capacidad de recordar todos los cambios que se realizan tanto en
la estructura de directorios como en el contenido de los archivos.
Esto es de mucha utilidad cuando se desea recuperar un
documento, o una carpeta o un proyecto en un momento concreto
de su desarrollo.
También es muy útil cuando se necesita mantener un cierto
control de los cambios que se realizan sobre documentos,
archivos o proyectos que comparten varias personas o un equipo
de trabajo; se hace necesario saber qué cambios se hacen,
quién los hace y cuándo se realizan.
Sistemas de Control de Versiones
Facilita al equipo de desarrollo poder trabajar en un mismo proyecto
de forma simultánea, permitiendo gestionar los conflictos que se
puedan producir por cambios simultáneos en el mismo código.
Proveen de un sitio central donde almacenar el código fuente de la
aplicación así como el historial de cambios realizados a lo largo de la
vida del proyecto.
Permite volver a versiones estables previas del código fuente.
Versión: forma particular de un objeto en un instante o contexto dado.
Se denomina revisión cuando se refiere a la evolución en el tiempo.
Pueden coexistir varias versiones alternativas en un instante dado y
mediante control de versiones disponemos de un método, para
designar las diferentes versiones de manera organizada.
Tipos: Control de Versiones Local
La información se guarda en
diferentes directorios en
función de sus versiones.
Toda la gestión recae sobre
el responsable del proyecto y
no se dispone de
herramientas que
automaticen el proceso.
Es viable para pequeños
proyectos donde el trabajo es
desarrollado por un único
programador.
Tipos: Control de Versiones Centralizado
Usan una arquitectura
cliente-servidor: Un único
equipo tiene todos los
archivos en sus diferentes
versiones, y los clientes
replican esta información en
sus entornos de trabajo
locales.
El principal inconveniente es
que el servidor es un
dispositivo crítico para el
sistema ante posibles fallos.
Tipos: Control de Versiones Distribuidos
Cada sistema hace con una copia completa
de los ficheros de trabajo y de todas sus
versiones.
El rol de todos los equipos es de igual a
igual y los cambios se pueden sincronizar
entre cada par de copias disponibles.
Aunque técnicamente todos los repositorios
tienen la posibilidad de actuar como punto
de referencia, habitualmente funcionan
siendo uno el repositorio principal y el resto
asumiendo un papel de clientes
sincronizando sus cambios con éste.
Control de Versiones. Funcionalidades
Comparar cambios en los diferentes archivos a lo largo del tiempo
Reducción de problemas de coordinación que puede haber entre los
diferentes programadores
Posibilidad de acceder a versiones anteriores de los documentos o
código fuente
Ver quién ha sido el último en modificar un determinado trozo de
código
Acceso al historial de cambios sobre todos los archivos a medida
que avanza el proyecto
Volver un archivo o todo el proyecto a uno o varios estados
anteriores
Control de Versiones. Funcionalidades
Control histórico detallado de cada archivo, almacenar toda la
información de lo que ha sucedido en un archivo
Control de usuarios con permisos para acceder a los archivos.
Gestión de todos los usuarios posibles y los permisos que tienen
asignados
Creación de ramas de un mismo proyecto, hay momentos en que
hay que ramificar y poder seguir desarrollando por separado
Fusionar dos versiones de un mismo archivo, cogiendo el código
que más interese
Estructura de herramientas de Control de
Versiones.
Es un sistema de mantenimiento de código fuente (grupos de archivos en
general) extraordinariamente útil para grupos de desarrolladores que trabajan
cooperativamente usando alguna clase de red.
Permite a un grupo de desarrolladores trabajar y modificar concurrentemente
ficheros organizados en proyectos (dos o más personas pueden modificar un
mismo fichero sin que se pierdan los trabajos de ninguna)
Las operaciones más habituales suelen ser muy sencillas de usar.
Estructura de herramientas de Control de
Versiones. CVS.
CVS utiliza una arquitectura cliente-servidor
El servidor guarda la versión actual del proyecto y su historia
Los clientes conectan al servidor para sacar una copia completa del proyecto, trabajar en esa copia y
entonces ingresar sus cambios.
Típicamente, cliente y servidor conectan utilizando Internet, pero cliente y servidor pueden estar en la
misma máquina.
El servidor normalmente utiliza un sistema operativo similar a Unix, mientras que los
clientes CVS pueden funcionar en cualquier de los sistemas operativos más difundidos
Los clientes pueden también comparar diferentes versiones de ficheros, solicitar una historia completa
de los cambios, o sacar una "foto" histórica del proyecto tal como se encontraba en una fecha
determinada o en un número de revisión determinado.
Muchos proyectos de código abierto permiten el "acceso de lectura anónimo", significando que los
clientes pueden sacar y comparar versiones sin necesidad de teclear una contraseña; solamente el
ingreso de cambios requiere una contraseña en estos escenarios.
Los clientes también pueden utilizar el comando de actualización con el fin de tener sus copias al día
con la última versión que se encuentra en el servidor. Esto elimina la necesidad de repetir las descargas
del proyecto completo.
Estructura de herramientas de Control de
Versiones. Componentes
Repositorio. Lugar dónde se almacenan todos los datos y los cambios. Sistema de
archivos en disco duro, un banco de datos, un servidor…
Módulo. Carpeta o directorio específico del repositorio. Podrá hacer referencia a todo el
proyecto entero o sólo a una parte del proyecto
Revisión o versión. Estado del proyecto o de una de sus ramas en un momento
determinado. Se crea una versión cada vez que se añaden cambios a un repositorio
Etiqueta: información textual que se añade a un conjunto de archivos o a un módulo
completo para indicar alguna información importante. Identifican las revisiones o
versiones importantes en el proyecto, para localizarlas y recuperarlas. A menudo indica
alguna característica específica que lo hace especial
Tronco (trunk o master). Es la línea principal del desarrollo del proyecto.
Rama (branch). Bifurcación del tronco o rama maestra de la aplicación, contiene una
versión independiente de la aplicación y a la que pueden aplicarse cambios sin que
afecten ni el tronco ni otras ramas. Estos cambios, en un futuro, pueden incorporarse al
tronco. (nuevas funcionalidades o corrección de errores)
Estructura de herramientas de Control de
Versiones. Servicios
Creación de repositorios. Creación del esqueleto de un repositorio sin información inicial del
proyecto.
Clonación de repositorios. La clonación crea un nuevo repositorio y vuelca la información
de algún otro repositorio ya existente. Crea una réplica.
Descarga de la información del repositorio principal al local. Sincroniza la copia local con
la información disponible en el repositorio principal.
Carga de información al repositorio principal desde el local. Actualiza los cambios
realizados en la copia local en el repositorio principal.
Gestión de conflictos. En ocasiones, los cambios que se desean consolidar en el repositorio
principal entran en conflicto con otros cambios que hayan sido subidos por algún otro
desarrollador. Cuando se da esta situación, las herramientas de control de versiones tratan
de combinar automáticamente todos los cambios. Si no es posible sin pérdida de información,
muestra al programador los conflictos acontecidos para que sea éste el que tome la decisión
de como combinarlos.
Estructura de herramientas de Control de
Versiones. Servicios
Gestión de ramas. Creación, eliminación , integración de diferencias entre ramas, selección
de la rama de trabajo.
Información sobre registro de actualizaciones.
Comparativa de versiones. Genera información sobre las diferencias entre versiones del
proyecto.
Podemos ahora hacer un commit y confirmar estos cambios, pero es posible que no
queramos hacer commit de todo porque por ejemplo no hemos aún hecho todos los
cambios en Calculo y solo queremos subir la clase nueva (CalculoNueva). Podemos
pulsar sobre el botón derecho seleccionando la clase y no sobre el proyecto.
EJEMPLO SUBVERSION EN NETBEANS
EJEMPLO SUBVERSION EN NETBEANS
Si comprobamos ahora la estructura del
proyecto, vemos que CalculoNueva ya se
encuentra en color “normal” y no en
estado verde.
Pero claro, esto que estamos describiendo con un solo usuario tiene utilidad por
tener un respaldo de los cambios realizados. No obstante, un control de versiones
tiene más potencia o es más interesante su uso cuando tenemos varios usuarios
trabajando (o pueden trabajar) sobre el mismo proyecto.
Para poder añadir nuevos usuarios pulsamos en el menú superior en Dashboard y
a continuación en Users. Estos usuarios deben haberse registrados, es decir, ser
usuarios de https://riouxsvn.com/
En mi caso dispongo ya de otra cuenta por lo que para añadir ese usuario solo
tendría que indicar su nick.
Existen muchas maneras de añadir al usuario a tu proyecto. En nuestro vamos a
añadir al usuario paquielena2.
Para ello editamos el equipo de nuestro proyecto
EJEMPLO SUBVERSION EN NETBEANS
Una vez encontrado lo único que debemos hacer es seleccionarlo. Una vez
hecho le indicamos para qué proyectos (en nuestro solamente tenemos uno) y
qué permisos le otorgamos (se los damos todos para que pueda trabajar
plenamente en el proyecto). Pulsamos Add User
EJEMPLO SUBVERSION EN NETBEANS
En nuestro proyecto ya se verían los dos usuarios (con el mismo nombre por
las circunstancias ya indicadas, pero lo usual es que fueran usuarios de
procedencia distinta).
EJEMPLO SUBVERSION EN NETBEANS
Si, con el primer usuario, le doy ahora desde mi proyecto a Mostrar Cambios
estos cambios que se han realizado.
OJO: En ocasiones no es tan inmediato que se actualice en el subversión los
cambios del repositorio.
Se puede obligar a que haga la búsqueda de cambios pulsando en el botón
“mostrar archivos modificados remotamente” o “Mostrar archivos modificados
local y remotamente” (tercer y primer botón respectivamente de la captura de
pantalla)
EJEMPLO SUBVERSION EN NETBEANS
Crear un repositorio.
Escribir el nombre,
público.
GitHub. Crear una cuenta
Incluye en el
repositorio README.
GitHub. Crear una cuenta
GitHub. Características
Seleccionar la carpeta
dónde se almacenará el
proyecto NetBeans y el
nombre del proyecto
GitHub con Netbeans
GitHub con Netbeans
Proyecto creado
GitHub con Netbeans
Subimos los archivos a GitHub. Con la opción Add, después con Commit y…
GitHub con Netbeans
GitHub con Netbeans
Settings:
Developer settings:
GitHub con Netbeans
Personal access
tokens y Generate
new token
Cambios…
Comprobar si se subieron correctamente a GitHub
Modificar en Netbeans y comprobar los cambios en GitHub:
Modificar
Git>>Add
Git>>Commit
Modificar el mensaje del commit>>confirmar
Git>>Remote>>Push>>Master
Comprobar las modificaciones
Modificar en GitHub y comprobar cambios en NetBeans
Editar archivo en GitHub
Describir el cambio
En NetBeans: Pull
Comandos básicos de git
git init inicializa un repositorio en un directorio concreto
git add añade elementos de la copia de trabajo en el control de
versiones en el “staging área”
git rm -cache elimina elementos del control de versiones
git status muestra el estado actual de la rama en la copia de
trabajo
git commit sube los cambios de la copia de trabajo bajo el control
de versiones en el repositorio local
git log muestra la lista de versiones subidas en el repositorio local
git clone copia un repositorio remoto, no es necesario inicializarlo
Comandos avanzados de git
git branch crea nuevas ramas a partir de la rama en la que estamos o lista las ramas
git checkout cambia la copia de trabajo en la rama o versión indicada
git diff muestra los cambios que se han añadido en una versión
git log muestra la lista de versiones para la rama activa
git merge fusiona los cambios entre dos ramas
git tag añade una etiqueta a una versión
git show muestra información sobre la versión indicada
git reset -hard revierte los cambios en la copia de trabajo
git push sube los cambios del repositorio local a un repositorio remoto
git pull baja los cambios de un repositorio remoto al repositorio local
git remote añade un repositorio remoto o lista los repositorios remotos enlazados con el
repositorio local
archivo .gitignore permite añadir una lista de archivos y directorios para excluir del sistema
de control de versiones