2009-03-24 12 views
6

Actualmente después de crear una rama de versión, pero cuando tenemos algo de tiempo antes de lanzarla, a veces abro toda la rama para editar y luego bloqueo todos los archivos para evitar que alguien modifique nada durante el período de "congelación de código" en rama de lanzamiento.Bloquear una rama en forzosamente?

¿Hay una manera mejor? Hacerlo a mi manera actual parece posiblemente un uso incorrecto de la función de bloqueo, ¿hay alguna manera mejor de evitar que alguien controle el código sin utilizar las ramas? Pensé en P4 protect, pero no soy el administrador en esta instancia forzosa, y también ocuparme del archivo de protección en potencialmente cientos de líneas también sería engorroso.

¿Alguna idea?

Respuesta

0

P4 protect es probablemente la respuesta correcta para la mayoría de las personas, como se explica en otras respuestas.

Sin embargo, en mi organización no puedo ser el administrador. De esta manera, tengo un script de desencadenante que lee un archivo de texto al que los no administradores tienen acceso de escritura y comprueba si la rama aparece en la lista. De esta manera, no es necesario el acceso de administrador como p4 protect.

12

Estoy haciendo esto todo el tiempo como ingeniero de construcción. Yo uso 'p4 proteger' para restringir el acceso de todos a los árboles a sólo lectura: (. Suponiendo que el grupo 'Todos' se define adecuadamente)

super group everyone * -//depot/project/branch/... 
read group everyone * //depot/project/branch/... 
super user me * //depot/project/branch/... 

La primera línea se cierra todos los permisos para todos los usuarios de la rama

La segunda línea restablece los permisos de lectura para todos.

La última línea restablece todos los permisos solo a mí.

+0

¿Necesita ser un administrador obligado para hacer esto? Además, solo hay un archivo de protección para depósito completo, ¿no es complicado? Un error tipográfico y todo el depósito no funcionarán ¿verdad? Estas son las razones por las que estaba tratando de encontrar una alternativa para proteger, pero aún así, si es la única forma en que voy con ese –

+1

, tienes que ser un administrador para cambiar las protecciones (es la definición de un administrador en forzosa).) Antes de que se acepten sus cambios, se comprueba si hay errores en el archivo. Tengo cientos de entradas en mis protecciones, pero se ajusta bien a mis requisitos comerciales, por lo que se siente limpio y evidente. – Sniggerfardimungus

2

p4 protect es definitivamente la mejor manera de hacerlo, es para lo que está ahí. Recomiendo encarecidamente que agrupe a todos los usuarios en grupos y que solo utilice grupos en la tabla de protecciones, lo que es mucho más fácil de administrar.

Puede proteger en cualquier nivel de granularidad que desee, por lo que no es difícil de manejar. Tenga en cuenta también que la versión del servidor 2008.1 tiene una nueva característica de protección que le permite especificar qué puede hacer de una manera ligeramente diferente. Cambio nota:

#152278 ** 
    'p4 protect' now allows specification of permission 'rights'. 
    Previously, 'p4 protect' only allowed using permission levels 
    which include the specified access (ie 'read') and also all 
    of its lesser permissions (ie 'read' = 'read' + 'list'). 
    Permission rights make it possible to deny individual rights 
    without having to re-grant lesser rights. The new 
    permission rights are '=read', '=branch', '=open', 
    and '=write'. This functionality was previously undocumented, 
    and is now fully supported for 2008.1 

Si realmente tiene un problema con tener que ser un administrador para bloquear & desbloqueo esto, entonces usted debe echar un vistazo a la función de "propietario del grupo" introducido en 2007.3. Esto permitirá que un usuario que no sea superusuario pueda agregar & para eliminar personas de un grupo. Así que combine eso con la tabla de protecciones. Es decir. haga que el administrador del sitio configure la tabla de protecciones y restrinja los derechos a un grupo llamado "Rel 1.0 autorizado" y conviértalo en el propietario del grupo. A continuación, puede agregar y eliminar usuarios (o subgrupos) de ese grupo para controlar el acceso.

La opción de disparo es una posibilidad, pero todavía necesita ser un administrador para configurar el activador en primer lugar. También podría afectar el rendimiento de todas las presentaciones, que es algo a lo que hay que prestarle atención. Pero el principal problema con los desencadenantes es que los estarías usando para emular una función integrada diseñada para ese fin, es decir, la tabla de protecciones. Y, si quisiera estar a salvo, igual tendría que encontrar la forma de evitar que alguien más modifique el archivo de referencia. Simplemente parece mucho trabajo emular una función existente.

2

Como una pequeña adición a una de las otras respuestas. Primero configure un grupo "todos" que tenga todos los usuarios en él.A continuación, añadir esto a p4 proteger

write group everyone * -//depot/project/1.0/... 
read group everyone * //depot/project/1.0/... 
write group 1.0 * //depot/project/1.0/... 

Esto le permitirá crear un grupo "1.0" en la que se puede añadir a cualquier usuario que se les permite el acceso de escritura.

Si está utilizando el servidor 2008.1 puede hacerlo.

=write group everyone * -//depot/project/1.0/... 
write group 1.0 * //depot/project/1.0/... 

La primera línea elimina solo el acceso de escritura (no leído y listado) del grupo todos.

2

La forma de hacer esto en Perforce moderno es utilizar las ramas denominadas que se actualizan en su sistema local, y pueden tener permisos aplicados para alentarlo a hacer lo correcto al fusionar y copiar entre las secuencias.

Opcionalmente, puede restringir una transmisión para que solo el propietario de la transmisión pueda realizar el check-in (y puede bloquear la transmisión para que nadie más que el propietario pueda editar sus propiedades). Ver http://www.perforce.com/perforce/doc.current/manuals/p4guide/chapter.codelines.html#codelines.streams

Cuestiones relacionadas