Для многих операций Subversion добавление символа '@' в конец аргумента файла или URL-адреса позволяет вам указать конкретную версию этого файла. Например, «svn info test.txt@1234» предоставит информацию о test.txt, существовавшем в редакции 1234.
Однако когда имя файла содержит символ @, он неверно интерпретируется Subversion как спецификатор ревизии:
svn info 'test @ .txt' svn: синтаксическая ошибка синтаксического анализа ревизии '.txt'
Я пробовал двойные и одинарные кавычки, а также экранирование с помощью «/», «\» и «@». Как я могу сказать Subversion обрабатывать символы @ как часть имени файла?
Ответы:
Из книги SVN (выделение добавлено):
источник
news@11
как и файл.@foo
чтобы@bar
,svn rename @foo@ @bar
будет жаловаться@bar
; но если вы сделаете этоsvn rename @foo@ @bar@
, новое имя будет буквально@bar@
. Чтобы избежать этого, добавьте./
(или.\
на окнах) , чтобы сделать это ясно , что это локальный путь:svn rename @foo@ ./@bar
.Первоначальный ответ правильный, но, возможно, недостаточно точный. Конкретные параметры командной строки Unix:
или
или
Я только что проверил все три.
источник
svn info icon@2x.png@
и это тоже сработало. Да, без кавычек или косой черты!bash
трассе :)Решение для добавления нескольких файлов в разные подпапки:
Просто замените "png" в " @ .png" на файлы, которые вы хотите добавить.
источник
@
их именем , как частный случай, вы можете смело добавлять в@
символ на все имена файлов:for file in $(find ./ -type f -iname "*.png"); do svn add "$file@"; done
. Кроме того, разве этот подход не оставляет в вашем SVN-репо структуру файлов / каталогов, несовместимую с рабочей локальной копией?exec
find может быть eaiser:find . -type f -name "*@*.png" -exec svn add {}@ \;
Чтобы добавить следующий файл: image@2x.png, выполните следующие действия: svn add image \ @ 2x.png @
источник
Просто добавь
в файле, который вам нужно использовать, независимо от того, какая это команда SVN, например:
в
источник
В моем случае мне нужно было удалить файлы из репозитория SVN, которые содержали знак @:
Это не сработает:
Но это сделал:
источник
Чтобы добавить несколько файлов, есть альтернативное решение:
источник
svn status | awk '/\.png/ {print $2"@"}'| xargs svn add
Для команд SVN с 2 аргументами, такими как «move», вы должны добавлять «@» только к левому (первому) параметру. Например:
Эта строка важна: $ svn move README @ txt @ README2 @ txt
Как видите, нам не нужно добавлять «@» в «README2 @ txt»
источник
@ Дэвид Х
Я только что попробовал подобную команду без экранирования символов @, и она все еще работает нормально
Это на GNU bash, версия 3.2.48 (1) -релиз (x86_64-apple-darwin10.0) и svn 1.6.16
источник
Единственное решение, которое сработало для меня, было предложено @NPike.
SVN вернуть 'путь / к / имя файла @ ext @'
источник
У меня была проблема с именами файлов, сгенерированными из адресов электронной почты (не очень хорошая идея!).
Решение, использование
printf
опцийfind
и расширение оболочкиисточник