Question

Est-il possible de manipuler une propriété de subversion, comme svn:externals via une URL unique? (À savoir, sans avoir une copie de travail).

Je voudrais un script que les broches svn:externals à une révision particulière à l'URL de la subversion, mais cela semble impossible:

$ 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

(je reçois les mêmes résultats si j'utilise un numéro de révision réelle au lieu de HEAD aussi bien.)

Était-ce utile?

La solution

Non

. Modification d'une propriété sur un fichier est comme changer le fichier lui-même - vous avez besoin d'un répertoire de travail. Il y a quelques commandes de Subversion qui changent la commettras sans exiger une copie de travail: svn cp, svn mkdir et svn delete. Tout le reste a besoin d'un répertoire de travail afin d'apporter des modifications.

Par ailleurs, vous pouvez apporter des modifications sur les propriétés révision sans une copie de travail. Les propriétés des révisions sont des choses comme le commit commentaire (svn: log), l'ID de l'committers (svn: auteur), et le moment de la validation (svn: date).

Autres conseils

Oui, mais il est un peu un hack; svn propedit peut changer les cibles URL:

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

Vous pouvez utiliser la svnmucc commande à des propriétés non interactive fixés d'une URL telle que svn:externals.

Exemple:

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

Notez que svnmucc supporte également d'autres commandes en plus propset et il est possible d'enchaîner plusieurs commandes dans un appel (d'où le nom). Le résultat est juste un changeset.

La commande svnmucc fait partie du paquet source subversion et généralement disponible via le gestionnaire de paquets de la distribution. Par exemple, Fedora 25 inclut dans le package subversion-tools. OpenCSW il inclut même dans le paquet principal de la subversion.

Se appuyant sur les excellente réponse, voici un exemple montrant comment configurer SVN auto-props pour needs-lock pour tous les fichiers et mime-type pour extensions particulières en utilisant une 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."
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top