Tuesday, April 20, 2010

Perforce para desarrollos locales - 1

Perforce (a.k.a. P4) es un gestor de versiones multiplataforma, con un modelo de cliente-servidor. A través de este programa se puede controlar las versiones de código y en general, cualquier tipo de recursos (assets), para una proyecto de software en fase de desarrollo P4.

Aunque es un software propietario, puede ser utilizado como "free software" con ciertas restricciones, en esta modalidad puede tener hasta dos usuarios diferentes (más el administrador) y 5 workspaces para los clientes. No esta especificada una restricción en la cantidad de depots en al documetnación oficial, puede no estar limitada.
P4 me ha ayudado a dar mantenimiento en el código de manera eficiente, poder tener un parámetro de medición en el tiempo invertido y avances del proyecto, es muy amigable para instalar-configurar.

P4 cuenta con una excelente y amplia decumentación en su sitio oficial, pero esto pretende ser un manual de referencia rápida para los proyectos personales que desarrollo en casa. No es de extrañarse que me haya topado con un blog que menciona parte del contenido de esto que pretende ser un manual, el blog esta orientado hacia código escrito en java Perfroce for home, yo actualmente trabajo en C++, queda demostrado la aceptación de P4 entre distintos sabores y colores en lo que a lenguajes de programación se refiere.

Uso una configuración local, soy cliente y servidor a la vez. P4 requiere como mínimo de dos aplicaciones para ser utilizado correctamente, el cliente y el servidor. Usualmente ambas aplicaciones son instaladas en las respectivas máquinas que sirven para su propósito. En este caso la instalación se efectuará sobre una misma máquina.
Existe otra tercera aplicacion, llamada P4V, de mucha utilidad y que es un ambiente visual para cliente, donde puedes manipular intuitivamente el workspace del proyecto en desarrollo, puedes encontrar las descargas aqui. Actualmente trabajo en Windows y Visual Studio 2008 Proffesional Edition (no esta soportado para versiones Express de Visual Studio aún), así que me centraré en instrucciones pertinentes para dicho sistema operativo e IDE.

Como administrador, (para winXP recomiendo desbloquear la cuenta de administrador) instala el servidor de P4. El instalador cuenta con tres servicios: el servidor, el proxy para el servidor y linea de comandos. Instalaremos las tres características, aunque no utlizaremos el proxy, pero mejor estar preparados para una posible conexión.

Durante la instalación se tendrá que configurar el puerto para proxy y un puerto para la comunicación cliente servidor.
El puerto para la comunicación entre cliente servidor proporciona un valor default de 1666.
"The p4d server and Perforce client programs communicate with each other using TCP/IP. When p4d starts, it listens (by default) on port 1666. The Perforce client assumes (also by default) that its p4d server is located on a host named perforce, listening on port 1666."



El puerto para el proxy deberá ser diferente del puerto cliente-servidor. El valor default de 1667 es recomendado.



En este último paso se especifica el "hostname" para una conexión remota, de ser local como es nuestro caso, basta proporcionar el puerto. Fundamental para que funcione correctamente.



Al utilizar localhost, el instalador advertirá de tener cliente-servidor en una misma máquina, esto está bien, que es el propósito de esta configuración.

Verifica que el servicio p4s.exe esta activo al finalizar la instalación.
Si es así, podremos ejecutar desde la linea de comandos.

p4 help commands

Por ser la primera vez que ejecutaras el comando:

p4 protect

el servidor asignará al usuario actual como "super user" y otorga todos los permisos. Este comando permitira editar el archivo de configuración de p4, en la sección "Protection" deberás notar que el usuario actual es el administrador (como cliente, este comando no es posible ejecutar). No olvides activar la contreseña del super user:

p4 passwd ElLoginAdministrador

Comandos para manipular usuarios:
Antes de eliminar algun usuario, este debe tener todos sus archivos en estado "revert", tipicamente ningún archivo pendiente en el changelist del P4V. En caso de que se intente borrar algún usuario que aún tenga pendientes cambios, P4 mostrará este error. Por otro lado al borrar algún usuario la licencia de P4 se libera, pero aún será necesario actualizar las tablas de grupos y protección (usando p4 group, p4 protect respectivamente para borrar a los usuarios de estas tablas).
p4 user -f miPrimerCliente crear usuario miPrimerCliente
p4 user -d -f miPrimerCliente borrar usuario miPrimerCliente
p4 users lista de los usuarios creados



Comandos para crear grupos:

p4 group code crear un grupo llamado code, automaticamente edita el archivo de configuración de grupos para agregar usuarios (por ejemplo)

Con los grupos se evita la tarea molesta de editar el archivo de configuración cada vez que un usuario nuevo es creado, si el usuario es agregado al grupo basta agregar una linea al archivo de configuración write group code * //.... Lo cual permite que todos los usuarios pertencientes al grupo code puedan tener privilegios "Write" en todos los depots.

El administrador de p4 es el único con permisos para crear, borrar y modificar un deposito (depot), excepto si el administrador explicitamente asigna permisos a otros usuarios para realizar estas tareas.

Comandos para manipular depots.

p4 depot //depot/myProject crear un depot y mapear el depot en el servidor
p4 depots listado de los depots
p4 obliterate -y //depot/myProject/....* elimina permanentemente contenido del deposito (necesario para poder borrar el depot)
p4 depot -d //depot/myProject borra el depot myProject siempre y cuando este vacio

P4 asigna un depot por default llamado "depot", si deseas eliminarlo basta ejecutar "p4 depot -d depot". Mi configuración hace uso de este depot y alli creo distintos repositorios.
Más detalles en P4 Command Issues.

Tiempo de instalar el cliente.
P4V incluye el cliente, como mencione anteriormente, asi que no es necesario instalar la versión de consola. Se solicita el puerto de cliente-servidor que debe coincidir con el anteriormente especificado al instalar el servidor, 1666 por default.
Si el servidor esta en nuestra propia maquina, instalación local, no se debe especificar un hostname, por lo que esta cadena es vacia y se especifica exclusivamente el número de puerto.
Si fuera requerida una conexión remota, se debe especificar con el formato hostname:1666).

Como usuario. La primera vez que se ejecuta P4V para un usuario determinado, se activa el wizard de configuración, el login deberá coincidir con el previamente creado por el administrador miPrimerCliente por ejemplo.
Al momento de nombrar el workspace es recomedable seguir la nomenclatura usuario_nombreDeDepot miPrimerCliente_miWorkspaceNumero1 por ejemplo.
El workspace utilizará lel depot que el Administrador te proporcione (en esta caso utilizaremos el que proporciona P4 por default "depot"), este t servirá como la referencia del root path en tu workspace. Por ejemplo, si deseamos crear un workspace llamado "MiProyecto" deberá especificarse como:

//depot/MiProyecto

Por la diversidad de workspaces que se generan durante el proceso de desarrollo de software recomiendo agrupar los workspaces en una sub-categoria, se prefiere usar:

//depot/dev/MiProyecto

Así podemos agrupar todos los proyectos bajo dev que compartan un mismo propósito.

Como el workspace esta completamente vacio, se solicitará si se desea "subir" contenido al server, para lo cual seleccionamos que no, más tarde lo realizaremos.
Ubica de acuerdo al path proporcionado en el wizard de P4V, la ubicacion de tu workspace y agrega un documento de prueba llamado MiCodigo.cpp (se recomienda utilizar un path sencillo desde root, como C:\perforce\development\miWorkspaceNumero1, lo importante es evitar anidar dentro del sistema de directorios de tu sistema operativo. Úbica el archivo en P4V y agregalo al repositorio. Utiliza el ambiente P4V para subir el primer contenido del repositorio MiCodigo.cpp.
El contenido esta a salvo en el servidor y tu conservas una copia local del mismo archivo, que es precisamente con el que se trabaja durante el desarrollo del proyecto.

Como administrador. Pueder verificar que el contenido de lo que el usuario ha trabajdo se encuentra en un path especial (configurable también) dentro la instalación del P server.
drive:\..\Perforce\server\depot

No más a catatrofes en tu proyecto :).

Como administrador de nuevo.
Multiples workspaces pudieron haber sido crados por los usuarios bajo el depot porporcionado. En la configuración que tengo, me ha resultado necesario mapear dichos workspaces en el archivo de configuración al ejecutar:

p4 workspace

Con un workspace llamado MiWorkspace1, bajo el depot "depot" con sub-categoria "dev", úbica la categoria de "View" donde se especifican los diversos mapeos del depot:

//depot/dev/MiWorkspace1/... //NombreDeTuMaquinaServer/MiWorkSpace1/...

Con un mapeo correcto configurado, podrás aplicar comandos como:

p4 obliterate -y //depot/MiWorkspace1/....*
p4 depot -d MiWorkspace1

Para eliminar todo el contenido de dicho workspace y eliminar el workspace, será necesario de nuevo editar el workspace config para elimiar el mapeo, si lo requieres.

Para finalizar esta parte introductoria de configuración quisiera mencionar el instalador de P4V, incluye una caracteristica de integración con windows explorer, que te permitirá desde cualquier explorardor de windows, efectuar manipulaciones básicas a los recursos del workspace (add, check out, check in, etc.). No olvides habilitar durante la instalción, esta opción.

No comments:

Post a Comment