вторник, 22 июля 2014 г.

Как добавить в svn файлы с "@" с командной строки


Если кто-то работал с svn из командной строки на mac, то возможно вы сталкивались с проблемой, что svn не понимает файлы с собакой "@".

Например, если вы хотите добавить файл menu-icon@2x.png выполнив команду svn add menu-icon@2x.png получите

svn add menu-icon@2x.png 
svn: warning: W155010: '........FILE PATH..../menu-icon' not found
svn: E200009: Could not add all targets because some targets don't exist
svn: E200009: Illegal target for the requested operation

Это решается добавлением "@" к название файла

vitaly$ svn add menu-icon@2x.png@ 
A  (bin)  menu-icon@2x.png
Narnia:Slice vitaly$


Допустим у вас есть целая папка с такими файлами

vitaly$ svn status
A       .
?       Splash-568h@2x.png
?       Splash@2x.png
?       background-568h@2x.png
?       background@2x.png
?       login-icon@2x.png
?       loupe-icon@2x.png
?       menu-icon@2x.png
?       password-icon@2x.png
?       reports-icon@2x.png
?       settings-icon@2x.png                                                               


По одному добавлять не удобно... Используем то, что уже знаем + pipe'ы и пишем следующий набор команд

vitaly$ ls | awk '{print $1"@" }' | xargs svn add
A  (bin)  Splash-568h@2x.png
A  (bin)  Splash@2x.png
A  (bin)  background-568h@2x.png
A  (bin)  background@2x.png
A  (bin)  login-icon@2x.png
A  (bin)  loupe-icon@2x.png
A  (bin)  menu-icon@2x.png
A  (bin)  password-icon@2x.png
A  (bin)  reports-icon@2x.png
A  (bin)  settings-icon@2x.png

ls - показывает список файлов в текущей папке
awk - сканер по патерну, аля regex. То, что в кавычках это команда которую мы выполняем если паттерн подошел. $1 будет название файла. "@" - то, что мы добавляем к названию файла
xargs - выполняем команду.

Таким же образом можно использовать и svn revert и тп.


Комментариев нет:

Отправить комментарий