Compruebe el acceso de escritura de subversión para el usuario

¿Hay alguna manera de verificar si el usuario tiene acceso de escritura a alguna ruta de repository? Lo que hago ahora es intentar crear un directory y luego eliminarlo para verificar si el usuario tiene acceso de escritura:

svn mkdir --username username --password password --message "check whether user username has repository writable access" "svn://localhost:3129/test" svn delete --username username --password password --message "check whether user username has repository writable access" "svn://localhost:3129/test" 

El problema es que esas operaciones se realizan con demasiada frecuencia como parte del código fuente de la aplicación. Y, como resultado, el repository recibe demasiados commits innecesarios en caso de que el usuario tenga acceso de escritura.

¿Hay algún command similar a svn checkaccess --username username --password password svn://localhost:3129/test o cualquier otra solución para que no tenga que crear un directory temporal todo el time?

Puedo proponer un truco, pero no estoy seguro de que funcione para todos los protocolos (probé con DAV — funcionó, con file: /// todos los paths son escribibles).

Subversion tiene varias API. Algunos lenguajes (al less C (libsvn_ra), Java ( SVNKit ), Perl ( AlienSVN )) proporcionan una API remota que permite crear un compromiso con llamadas de editor (no sé si PHP lo hace). Si realiza las siguientes llamadas en la URL que desea verificar, puede escribir:

 openRoot -1 changeDirProperty customPropertyName custromPropertyValue closeDir abortEdit 

Esta secuencia no realiza cambios debido a la llamada a abortEdit (), si el directory es de escritura. Pero para DAV esto falla con el código de error RA_NOT_AUTHORIZED (E170001) si no se puede escribir.

Hay un artículo que muestra cómo usar commit con la API remota de SVN en Java. Creo que el código PHP se vería similar.

Espero que ayude (si no es así, al less, al less, los desarrolladores de Java / C / Perl).