2012-02-10 18 views
5

Tengo un repositorio de subversión que es un espejo de otro repositorio remoto. Yo uso svnsync para duplicar el repositorio cada semana. El repositorio duplicado (copia local) solo está ahí para la copia de seguridad.Subversion: ¿es posible deshabilitar todas las confirmaciones y hacer que el repositorio solo sea de lectura?

Me gustaría mantener el repositorio reflejado como READ-SOLAMENTE, es decir, nadie debería poder realizar ningún cambio en este repositorio, pero puede usarlo para leer archivos fuente ya que es más rápido que el repositorio remoto.

He echado un vistazo en Google y parece que un gancho es probablemente la mejor opción. El único problema es que todos los ejemplos que estoy viendo en Google están basados ​​en Unix y no puedo encontrar un ejemplo adecuado para Windows ya que el repositorio duplicado se está ejecutando en un servidor de Windows.

¿Alguna idea?

Respuesta

5

¿Por qué no simplemente configurar anon-access = leer y auth-access = leer en svnserve.conf?

+0

Lo intenté pero todavía permite commits - Descomenté ambas propiedades en el archivo /myrepository/conf/svnserve.conf – ziggy

+0

Tenga en cuenta que se lee el valor predeterminado para anon-access, por lo que comentar que está bien, pero el valor predeterminado para auth-access es escribir, por lo que debe configurarlo explícitamente para leer. – mac

+0

Sí, traté de cambiar el acceso de autenticación para solo leer pero todavía puedo confirmarlo. Estoy usando Collabnet Subversion Edge. Tiene una opción para restringir el acceso a través de la GUI pero supongo que cambiar el svnserve manualmente también debería funcionar. – ziggy

6

En primer lugar, ¿usa http:// o svn:// en sus URL de pago?

Si está utilizando svn://, puede configurar el archivo svnserve.conf en su repositorio para eliminar el acceso autorizado simplemente teniendo un archivo pasado vacío. El acceso anónimo es 'de solo lectura' por defecto, por lo que siempre que no haya cambiado esa configuración en su archivo svnserve.conf, debería estar bien. O bien, puede desactivar el acceso anónimo y cambiar el acceso autorizado al read-only.

Sin embargo, si usa http://, debe configurar la configuración de httpd de Apache en su servidor Subversion para que no permita el acceso de escritura.

Eso se vuelve más complicado porque hay varias maneras de configurar la autenticación httpd de Apache, y dependiendo del sistema, el httpd de Apache podría almacenarse en múltiples ubicaciones.

Otra posibilidad es utilizar un pre-commit hook para desactivar el acceso de lectura y escritura al repositorio.

Por cierto, el antiguo comando svnsync solía requerir no solo svn read-write access para confirmar los cambios que se estaba sincronizando, sino que también tenía que tener el conjunto de gancho pre-revprop-change, por lo que el comando svnsync también puede modificar las propiedades svn:log, svn:date y svn:author para que coincidan con el repositorio original. Eso significa que, si logra hacer su repositorio de solo lectura, puede romper svnsync. Necesitará leer sobre cómo funciona el svnsync y si este sigue siendo el caso. Mi gancho precompromiso puede resolver ese problema también.

Cuestiones relacionadas