Pour de nombreuses opérations Subversion, l'ajout du symbole «@» à la fin d'un fichier ou d'un argument URL vous permet de cibler une révision spécifique de ce fichier. Par exemple, "svn info test.txt@1234" donnera des informations sur test.txt telles qu'elles existaient dans la révision 1234.
Cependant, lorsque le nom du fichier contient un @, il est incorrectement interprété par Subversion comme un spécificateur de révision:
svn info 'test @ .txt' svn: Erreur de syntaxe lors de l'analyse de la révision '.txt'
J'ai essayé des guillemets doubles et simples ainsi que des échappements avec «/», «\» et «@». Comment puis-je dire à Subversion de traiter les symboles @ comme faisant partie du nom de fichier?
Réponses:
Extrait du livre SVN (italiques ajoutés):
la source
news@11
peut donc également s'agir d'un fichier.@foo
en@bar
,svn rename @foo@ @bar
se plaindra de@bar
; mais si vous le faitessvn rename @foo@ @bar@
, le nouveau nom sera littéralement@bar@
. Pour éviter cela, ajoutez./
(ou.\
sur les fenêtres) pour le rendre clair c'est un chemin d' accès local:svn rename @foo@ ./@bar
.La réponse originale est correcte, mais peut-être pas assez explicite. Les options de ligne de commande Unix particulières sont les suivantes:
ou
ou
Je viens de tester les trois.
la source
svn info [email protected]@
et cela a fonctionné aussi. Oui, pas de guillemets ni de barres obliques!bash
autoroute :)Solution pour ajouter plusieurs fichiers dans différents sous-dossiers:
Remplacez simplement le "png" dans " @ .png" par le type de fichier que vous souhaitez ajouter.
la source
@
leur nom comme un cas particulier, vous pouvez en toute sécurité ajouter le@
symbole sur tous les noms de fichiers:for file in $(find ./ -type f -iname "*.png"); do svn add "$file@"; done
. De plus, cette approche ne laisse-t-elle pas votre dépôt svn avec une structure de fichiers / répertoires incompatible avec la copie locale de travail?exec
de find pourrait être plus facile:find . -type f -name "*@*.png" -exec svn add {}@ \;
Ajoutez simplement
à la du fichier que vous devez utiliser, quelle que soit la commande SVN, par exemple:
à
la source
pour ajouter le fichier suivant: [email protected] procédez comme suit: svn add image \ @ 2x.png @
la source
Dans mon cas, j'avais besoin de supprimer des fichiers d'un dépôt SVN contenant un signe @:
Cela ne fonctionnerait pas:
Mais cela a fait:
la source
Pour ajouter plusieurs fichiers, il existe une solution alternative:
la source
svn status | awk '/\.png/ {print $2"@"}'| xargs svn add
Pour les commandes svn avec 2 arguments comme "move", vous devez ajouter "@" uniquement au (premier) paramètre de gauche. Par exemple:
Cette ligne est importante: $ svn move README @ txt @ README2 @ txt
Comme vous pouvez le voir, nous n'avons pas besoin d'ajouter "@" à "README2 @ txt"
la source
@David H
Je viens d'essayer une commande similaire sans échapper aux symboles @ et cela fonctionne toujours bien
Ceci est sur GNU bash, version 3.2.48 (1) -release (x86_64-apple-darwin10.0) et svn 1.6.16
la source
La seule solution qui a fonctionné pour moi était la même que celle suggérée par @NPike
svn retourne 'chemin / vers / nom de fichier @ ext @'
la source
J'ai eu le problème aujourd'hui avec les noms de fichiers générés à partir d'adresses e-mail (pas une très bonne idée!).
Solution, utilisation des
printf
optionsfind
et extension du shellla source