2011-06-27 12 views
5

Me gustaría saber si puedo asignar un archivo o directorio a múltiples copias locales con forzosamente.¿Se puede mapear un archivo o directorio varias veces a la fuerza?

Sé que el P4V me permite hacerlo, pero me encontré con un comportamiento muy extraño por parte del cliente y sospecho que esto no funciona.

No planeo modificar ninguno de estos archivos, lo necesito para recrear la misma estructura de directorios necesaria para construir mi propio árbol fuente (no quiero crear una rama enorme si sé que tengo que modificar solo unos pocos archivos y tampoco quiero crear espacios de trabajo adicionales porque cambiar de ellos lleva demasiado tiempo).

+0

¿Puedes agregar un extracto de tu cliente-spec y describir qué 'comportamiento extraño' viste? – jhwist

Respuesta

5

No está permitido hacer eso porque conduce a cosas malas. Solo puede asignar un archivo de depósito a una ubicación local y viceversa. Puede asignar dos carpetas de depósito diferentes a la misma carpeta local, pero tiene que hacerlo de forma que los archivos en la carpeta local se dirijan a una sola ubicación de depósito (bueno, ignorará las primeras asignaciones que entren en conflicto).

Las sucursales no pueden ser "grandes" porque Perforce hará instantáneas hasta que realmente haga modificaciones. En general, debes ramificar todo el árbol. Luego puede tener un espacio de trabajo por rama (preferible) o un área de trabajo que mapee todo (aún posible).

+0

Probablemente el equipo de Perforce no consideró seriamente grandes repositorios con> 500,000 archivos y> 30GB. – sorin

+2

Ellos han considerado eso. Y hay múltiples problemas con los que te encontrarás. Si un archivo de depósito se encuentra en dos ubicaciones locales diferentes y sincroniza uno de ellos, Perforce ahora piensa que ambos están sincronizados. Si agrega un archivo y la asignación del cliente muestra dos posibles ubicaciones de depósito, ¿dónde debería Perforce poner el archivo? – JasonMArcher

+0

Parece que las personas de Perforce no están tan acostumbradas al concepto de symlink y hardlink;) – sorin

4

(lo siento, simplemente vi que no quiere cambiar las áreas de trabajo ... ¿puede aclarar por qué cree que eso lleva demasiado tiempo? Puede, en p4v, configurar "conexiones favoritas" en el menú de conexiones que hace que el cambio sea rápido. Supongo que las teclas de acceso rápido pueden hacerlo más rápido. También tiene la opción de tener instancias de p4v mutliple abiertas).

¿Puede simplemente crear un nuevo espacio de trabajo para hacer el mapeo por usted? Si no tiene la intención de modificar los archivos, parece ser la forma más fácil de hacerlo. Simplemente cree un nuevo espacio de trabajo y luego aplique los cambios que necesite dentro del mapeo del área de trabajo. Un ejemplo:

//depot/src/... //my-test-workspace/src_from_depot/... 
//depot/doc/... //my-test-workspace/doc_from_depot/... 

que pondrá el carpetas src y doc en una carpeta src_from_depot y doc_from_depot en nuestra raíz del espacio de trabajo. Acabo de poner la raíz del espacio de trabajo en un lugar diferente de lo que normalmente trabaja; entonces tendrá una copia aislada de donde normalmente trabaja con una estructura de directorio que ha cambiado para satisfacer sus necesidades.

2

Parece que el problema real puede ser el tiempo que lleva cambiar las áreas de trabajo. Si eso fue rápido, entonces podría mantener espacios de trabajo separados por rama.

En la próxima versión, será más fácil realizar una conmutación de bifurcación in situ. En otras palabras, puede mantener un área de trabajo y cambiarla de una rama a otra a medida que trabaja. El comando p4 sync agrega una nueva opción para actualizar solo los archivos en el espacio de trabajo que realmente difieren. Entonces, incluso si sus ramas son enormes (> 500k archivos,> 30GB de datos), si solo 10 archivos difieren entre dos ramas, mover su espacio de trabajo de una rama a la otra solo actualizará esos 10 archivos. Eso debería ser un gran ahorro de tiempo.

No estoy seguro si esto ayudará o no, pero pensé que valía la pena mencionarlo.

1

He encontrado este problema también. Tengo archivos/directorios que son comunes a múltiples ramas. Los archivos/directorios comunes deben estar presentes en una estructura determinada en cada rama para compilación.

La solución que funcionó para mí fue colocar los archivos/directorios comunes en una ubicación separada de las ramas. Esto mantiene el requerimiento de mapeo 1: 1.

A continuación, vincule simbólicamente los archivos/directorios comunes a cada rama con fines de compilación.

Cuestiones relacionadas