Pregunta

¿Es posible manipular una propiedad de subversión como svn:externals a través de una URL solamente? (es decir, sin tener una copia en funcionamiento).

Quisiera un guión que pase svn:externals a una revisión particular dada una URL de subversión, pero esto parece ser imposible:

$ svn propset foo bar https://example.com/svn/myproject/trunk
svn: Setting property on non-local target 'https://example.com/svn/myproject/trunk' needs a base revision

$ svn propset foo bar -r HEAD https://example.com/svn/myproject/trunk
svn: Try 'svn help' for more info
svn: Cannot specify revision for setting versioned property 'foo'

$ svn propset foo bar --revprop -r HEAD https://example.com/svn/myproject/trunk
svn: DAV request failed; it's possible that the repository's pre-revprop-change hook either failed or is non-existent
svn: At least one property change failed; repository is unchanged
svn: Error setting property 'foo': 
could not remove a property

(Obtengo los mismos resultados si uso un número de revisión real en lugar de HEAD también.)

¿Fue útil?

Solución

No. Cambiar una propiedad en un archivo es como cambiar el archivo en sí: necesita un directorio de trabajo. Hay algunos comandos de subversión que cambian la confirmación sin requerir una copia de trabajo: svn cp, svn mkdir, y svn delete. Todo lo demás necesita un directorio de trabajo para hacer cambios.

Por cierto, puedes hacer cambios en revisión Propiedades sin una copia de trabajo. Las propiedades de revisión son cosas como el comentario de confirmación (SVN: log), la identificación del comitvero (SVN: autor) y la hora del commit (SVN: fecha).

Otros consejos

Sí, aunque es un poco hack; SVN Apropedit puede cambiar los objetivos de URL:

svn propedit foo --editor-cmd "echo bar>" http://example.com/svn/myproject/trunk -m "Property changed"

Puedes usar el svnmucc comando para establecer las propiedades no interactivas de una URL como svn:externals.

Ejemplo:

$ svnmucc --root-url https://example.com/svn -m 'reference other/yap' \
   propset svn:externals "^/otherproject/tag/xyz other
^/yetanother/tag/123 yap" myproject/trunk

Tenga en cuenta que svnmucc también admite otros comandos además propset y es posible encadenar múltiples comandos en una llamada (de ahí el nombre). El resultado es solo un cambio de cambios.

los svnmucc El comando es parte del paquete fuente de subversión y generalmente está disponible a través del Administrador de paquetes de la distribución. Por ejemplo, Fedora 25 lo incluye en el subversion-tools paquete. OpenCSW incluso lo incluye en el paquete de subversión principal.

Construyendo sobre Willem's Excelente respuesta, aquí hay un ejemplo que muestra cómo establecer SVN auto-props por needs-lock para todos los archivos y mime-type Para extensiones particulares usando una URL:

svn propedit svn:auto-props --editor-cmd "echo \"* = svn:needs-lock=*
*.os = svn:mime-type=application/octet-stream
*.osproj = svn:mime-type=application/octet-stream\" >" http://example.com/svn/myproject/trunk -m "Setting auto-props."
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top