2012-01-19 8 views
15

Recientemente cambié mi máquina de desarrollo de Windows XP a Windows 7 y desde ese cambio, tengo un problema con los permisos de archivos cuando hago operaciones con Tortoise SVN.Archivo perdido Permiso IIS_IUSRS después de una operación Tortoise SVN

Ejemplo: Tengo dos sitios web ASP.NET configurados en mi IIS local. Beta y Devlo. Beta es un cheque de la sucursal en la que estoy trabajando y Devlo es un cheque de Trunk.
he hecho algunos cambios en el sitio web Beta y comprobar que en
Entonces me hizo una merge para reintegrar a la rama en el camión en el sitio web Devlo, pero me dio este error cuando lo prueba:.

Parser Error 
Description: An error occurred during the parsing of a resource required to 
service this request. Please review the following specific parse error details 
and modify your source file appropriately. 

Parser Error Message: Access to the path 'C:\[...]' is denied. 

Después de la investigación, descubrí que cada archivo que fue modificada por el Tortoise SVN merge perdió el suyo de permisos de archivo (leer, leer & Ejecutar) para los usuarios IUSE y IIS_IUSRS.

Pude devolverlos manualmente, pero esto sucede cada vez que realizo una operación de este tipo. ¿Hay alguna manera de mantener esos permisos sin cambios por la operación SVN?


actualización
antes de la fusión, el archivo se hereda es el permiso de la carpeta principal (se que tiene que hacer.)
Before Merge

Pero no después de la fusión:

After Merge

El archivo original (en la carpeta beta) heredaba el permiso de la carpeta principal. ¿Por qué TortoiseSVN (explícitamente?) Bloquea la herencia de permisos?

+0

¿Puedes hacer una fusión con la línea de comando svn.exe para ver si realmente es TortoiseSVN y no svn.exe? –

+0

svn.exe? No tengo instalada la versión de línea de comando de SVN. (Y realicé una búsqueda de archivos para SVN.EXE). ¿Realmente importa? – DavRob60

+0

Ayudaría a definir claramente el problema. TortoiseSVN lo incluye, pero quizás está incrustado en sus binarios, eso puede explicar por qué no puedes encontrarlo. Puede descargar el cliente autónomo aquí: http://subversion.apache.org/packages.html#windows –

Respuesta

12

que tenían el mismo problema y se fija con la ayuda de este SO responder: https://stackoverflow.com/a/8993163/361831

La respuesta menciona que los archivos actualizados se copian a un directorio .svn/tmp que es ubicado en el nivel superior de su copia de trabajo (a partir de tortoiseSVN 1.7). Este dir de nivel superior no tenía los permisos de IIS, así que supongo que no heredarían durante la copia. Así que simplemente establecí los permisos de IIS en ese directorio de nivel superior y lo configuré para que heredara, y eso solucionó el problema.

+1

Probado y en funcionamiento, pero todavía hay un problema cuando la estructura de su directorio * necesita * aplicar un derecho diferente a algunas subcarpetas específicas. Al igual que el permiso de escritura en un sub directorio de carga o lo que sea. Pero, al menos, se identifica la raíz del problema. ¡Gracias! – DavRob60

+0

Cuando no puede cambiar los permisos de la carpeta .svn, porque algunas carpetas tienen permisos diferentes. Puede [restablecer el permiso mediante script/icacls] (http://serverfault.com/questions/475612/replace-permission-entries-on-all-child-objects-using-icacls/601853#601853) también: 'cd D: \ websites \ su-sitio', 'svn update',' icacls "D: \ websites \ su-sitio \ httpdocs \ *"/q/c/t/reset' –

-1

Debería poder establecer estos permisos en la carpeta que contiene los archivos y luego dejar que los archivos los hereden, en lugar de establecer explícitamente los permisos en los archivos.

TortoiseSVN puede eliminar y crear archivos en lugar de cambiar el nombre. Cuando se crea un nuevo archivo de esta manera, no tendrá los permisos originales, pero heredará los permisos de su contenedor.

Consulte también: Explicit vs. Inherited Permissions

cada permiso que existe puede ser asignado a uno de dos maneras: explícitamente o por herencia. Por este motivo, los permisos son a los que se hace referencia como permisos explícitos y permisos heredados.

  • Los permisos explícitos son permisos que se establecen de forma predeterminada cuando se crea el objeto, o por acción del usuario.
  • Los permisos heredados son permisos que se otorgan a un objeto porque es hijo de un objeto primario.

Similar a la forma en que se gestionan los derechos para grupos de usuarios, permisos se manejan mejor para los contenedores de objetos. Los objetos dentro del contenedor heredan todos los permisos de acceso en ese contenedor.

Ver también: TortoiseSVN - Deleting, Moving and Renaming

Desde mover y renombrar se realizan como un borrado seguido de un complemento ...

+0

Consulte mi actualización, donde los permisos se han heredado de su contenedor. – DavRob60

+0

"Cuando se crea un nuevo archivo de esta manera, no tendrá los permisos originales, pero heredará los permisos de su contenedor" - el problema que se plantea en la pregunta es precisamente que esto no ocurre. – bzlm

-1

que tenían el mismo problema en mis dos máquinas de 64 bits Win7. Revisaría el código en uno, iría al otro, haría una actualización SVN de Tortoise y tendría que restablecer los permisos en la carpeta para permitir que los permisos de la carpeta principal se propaguen hacia abajo.

Finalmente encontré este artículo, lo probé, y dos semanas después parece estar resistiendo.

  • Abra el Editor del registro (haga clic en Inicio> Ejecutar, escriba regedit y, a continuación, presione ENTRAR).

  • Busque la siguiente clave del registro:

  • HKEY_CURRENT_USER \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Policies \ Explorer

  • Con la tecla seleccionada, en el menú Edición, haga clic en Agregar valor y, a continuación, agregue el siguiente valor del registro:

  • nombre del valor: ForceCopyAclwithFile tipo

  • datos: DWORD

  • valor: 1

  • Salir del Editor del Registro.

http://kb.globalscape.com/KnowledgebaseArticle10473.aspx

+0

No funcionó para mí. Y después de leer el artículo, no veo cómo podría ayudar. – DavRob60

4

Cuando subversion actualiza un archivo, primero crea una versión temporal en .svn/tmp /. A continuación, mueve el archivo a la ubicación correcta. (Esto para evitar corrupciones)

En 1.6 hizo esto para cada directorio por sí mismo, pero en 1.7 hay solo un .svn en el directorio de nivel superior de su copia de trabajo.

Si de alguna manera los permisos del sistema de archivos de este directorio .svn están restringidos, es posible que las restricciones se copien con el archivo cuando se mueve en su lugar.(Subversion no cambia los permisos en sí mismo en Windows)

RESPUESTA: Localice su directorio .svn para ese proyecto y corrija los permisos con los permisos necesarios para su proyecto.

Cuestiones relacionadas