2009-08-01 12 views
6

Estoy usando Subversion para uno de mis proyectos de PHP. Tengo dos preguntas/problemas:¿Cómo maneja Subversion los permisos de archivos y un archivo .htaccess?

  1. ¿Cómo se manejan los permisos de archivos con Subversion? Si tengo un archivo que I CHMOD a 755, y verifico ese archivo en el repositorio, ¿tendrá los mismos permisos cuando esté registrado en otras copias de trabajo? Si no se copia, ¿realmente necesito cambiar los permisos con cada pago?
  2. Tengo un archivo .htaccess que no deseo registrar en el repositorio. Si realizo una actualización en una copia de trabajo que contiene un .htaccess (pero el repositorio no tiene ese archivo), ¿se eliminará el archivo o la actualización lo dejará en paz?

Respuesta

11
  1. El único permiso que conoce Subversion es el bit ejecutable, que se almacena como una propiedad especial "svn: ejecutable". Si se define esta propiedad, el archivo se desprotege con el bit de ejecución establecido. Para las banderas rw, depende de tu umask. Si su umask es, por ejemplo, 0022, un archivo sin el bit svn: ejecutable se extraerá con el permiso 0644. Si su umask es 0002, el permiso será 0664. Si svn: executable está establecido, el bit de ejecución está establecido para el propietario, grupo y todos los demás.
  2. Si no marca el .htaccess para agregar (svn add), svn dejará el archivo solo. No entrará en el repositorio cuando se compromete, y no se eliminará cuando ejecute svn update. Verás un "?" delante de él cuando ejecuta "estado svn".
+0

Gracias por la gran explicación sunny256. No soy realmente un experto en lo que respecta a los permisos, pero sí sé que tengo ciertos directorios que necesitan tener 755 y otros que necesitan tener 644 o 777. En resumen, es la respuesta a la que le diste un no a ese ? Si es así, ¿realmente necesito cambiar los permisos manualmente para cada pago o hay alguna otra manera? Gracias de nuevo. –

+0

Si necesita tener permisos especiales en algunos directorios, es posible que desee crear un script que actualice la copia de trabajo y luego modifique los diversos directorios, por ejemplo, un archivo Makefile ubicado fuera del área www pública. ¿Desea ocultar el contenido para el usuario de www-data, limitándolo solo al usuario, o ...? Si establece un permiso de directorio en 644 (elimina el bit ejecutable, es decir, 111), nadie podrá ingresarlo. – sunny256

+0

Si desea probar todas las combinaciones de rwx en directorios, cree un testdir vacío, ingréselo y ejecute lo siguiente. Creará 512 directorios con todas las posibles combinaciones de rwx, y puede ver cómo funcionan los permisos. Aquí va: para a en $ (seq 0 7); hacer por b en $ (seq 0 7); hacer por c en $ (seq 0 7); do echo Creando $ a $ b $ c ...; mkdir $ a $ b $ c; chmod $ a $ b $ c $ a $ b $ c; hecho; hecho; hecho – sunny256

0

1) ... los permisos no se transfieren.

2) ... la actualización lo dejará solo mientras no esté bajo el control de la versión.

Dicho esto, verifique esas ideas. Por favor.

+0

Gracias por la respuesta. ¿Qué quiere decir con "verificar esas ideas"? Si estoy haciendo algo mal, me gustaría recibir tu consejo. Gracias :) –

1

Para # 2 simplemente puede agregar .htaccess a svn: ignore la propiedad. He aquí una buena visión de lo que hace y cómo funciona http://blog.bogojoker.com/2008/07/command-line-svnignore-a-file/ Permiso si retira un archivo obtiene permisos de lectura/escritura a menos que sea ejecutable, que debería tener permisos svn: ejecutables y será desprotegido como tal. El archivo también puede marcarse de forma explícita con svn: needs-lock que a su vez hace que sea de sólo lectura cuando realice el pago

+0

He leído que svn: ejecutable solo funciona en archivos. ¿Cómo puedo implementar eso para los directorios, o necesito cambiar manualmente los permisos con cada pago y envío? –

+0

Puedes hacer "svn propset svn: executable '*' " y asignarlo a todos los archivos que necesites y desde ese punto retendrá el marcador ejecutable. – Bostone

1
  1. Como ya se ha mencionado, SVN no permisos de almacén.

    La razón es trivial:

    El usuario que hizo el pago y envío será propietario de todos los archivos dentro de su copia de trabajo, por lo que no tiene sentido para dar permisos como ya tiene permisos de lectura/escritura en todas archivos dentro de su copia de trabajo (dependiendo de su umask).

    Para e x bandera ecutable establecido svn-propiedad svn: ejecutable.

  2. archivo .htaccess

    Debe añadir el .htaccess para el SVN directorios padre: ignore.

    Sin embargo, SVN nunca cambiará ni sobrescribirá los cambios sin antes preguntarle.Por lo tanto, si alguno de sus amigos almacenará el .accessfile en el repositorio, SVN detendrá la actualización y mencionará que su propio archivo .htaccess debe eliminarse para continuar.

-4

Un ejemplo de cómo hacer un archivo ejecutable:

svn propset svn:executable ON filename 
Cuestiones relacionadas