Una de las características más interesantes de Perforce es la posibilidad de crear ramas. Las ramas son muy sencillas de crear y también resulta muy fácil mover cambios entre distintas ramas (como se verá más adelante). Las ramas también nos permiten realizar trabajos muy experimentales dentro de un entorno de “sandbox”, sin necesidad de tener que preocuparnos por las colisiones con otros usuarios o por desestabilizar el árbol principal. Además, las ramas proporcionan el aislamiento necesario frente a los errores que se cometen cuando se aprende a manejar el sistema Perforce. Vistas estas ventajas es lógico que cada proyecto disponga de su propia rama y en FreeBSD recomendamos encarecidamente este esquema. También se recomienda la aplicación frecuente de los cambios realizados.
El repositorio Perforce (conocido como el “depósito”, o “depot” en la jerga de Perforce) es un único árbol plano. Se accede a cada fichero a través de una sencilla ruta bajo el directorio //depot, tanto si se trata de un fichero de nueva creación como si proviene de una ramificación. Esto supone una gran diferencia con respecto a sistemas como CVS, donde cada rama se encuentra en la misma ruta que su rama padre. En Perforce el servidor mantiene las relaciones entre los ficheros padre e hijo, pero los ficheros en sí están bajo sus propias rutas.
El primer para para crear una rama consiste en crear una especificación de rama. Es similar a la especificación de un cliente, pero se crea mediante la orden p4 branch nombre_de_rama.
Veamos los campos más importantes:
El nombre de la rama. Puede ser cualquier nombre, pero debe ser único en el repositorio. La convención que se usa en FreeBSD es nombre_de_usuario_nombre_del_proyecto.
Puede poner aquí un texto simple que describa la rama.
Esto es la asociación de la rama. En lugar de asociar desde el “depósito” hacia la máquina local como una asociación de cliente, se crea una asociación entre la rama padre y la rama hija dentro del “depósito”. Por ejemplo, puede querer crear una rama del proyecto smpng. La asociación resultaría en algo parecido a esto:
//depot/projects/smpng/... //depot/projects/mi-super-smpng/...
O puede crear una rama totalmente nueva a partir de las fuentes de FreeBSD:
//depot/vendor/freebsd/... //depot/projects/mi-nuevo-proyecto/...
Esto asociará el HEAD del árbol de FreeBSD a su nueva rama.
La creación de la especificación de rama únicamente graba la especificación en sí misma dentro del servidor. No modifica el “depósito” ni cambia ningún fichero. El directorio que se declara en la rama permanece vacío en el servidor hasta que se comience a llenar.
Para rellenar la rama primero debemos editar el cliente con la orden p4 client y asegurarnos de que el directorio de rama está asociado en el cliente. Puede ser necesario añadir una línea View como esta:
//depot/projects/mi-nuevo-proyecto/... //micliente/mi-nuevo-proyecto/...
El siguiente paso consiste en ejecutar p4 integrate, como se describe en la siguiente sección.
Puede descargar éste y muchos otros documentos desde ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.
Si tiene dudas sobre FreeBSD consulte la documentación antes de escribir a la lista
<questions@FreeBSD.org>.
Envíe sus preguntas sobre la documentación a <doc@FreeBSD.org>.