Не первый раз сталкиваюсь с тем, что при работе из командной строки SVN игнорирует правую часть имени файла после символа @. Решается это добавлением после имени файла еще одной собаки @, чтобы SVN знала, что символ @ в имени файла — не последний символ. Например вот так:
svn add somefile@2x.png@
Показаны сообщения с ярлыком SVN. Показать все сообщения
Показаны сообщения с ярлыком SVN. Показать все сообщения
11 нояб. 2013 г.
14 янв. 2013 г.
Пара алиасов для SVN
Пара алиасов для более удобного использования svn:
#вывод всех изменений, кроме не контролируемых alias svnm='svn stat | egrep -v "^(\? )"' #варианты для апдейта ;) alias svnup='svn up' alias svnupcheg='svnup' alias svnupchik='svnup'Добавить в файл ~/.bashrc или ~/.profile (в Mac OS) и пользовать по надобности
26 нояб. 2012 г.
SVN : branches and tags
Небольшая напоминалка по поводу использвоания таких фич SVN как branches и tags.
Функция бранчей и тагов уже достаточно описана. В двух словах — это параллельный набор исходников (ну, или того, что хранится в SVN). С помощью branch обеспечивается безопасное внесение изменений без затрагивания основной (trunk) копии сорцов. После окончания внесения изменений, проверки и тестирования версии продукта в бранче производится его перенос в основную ветку - транк. Это может быть совмещение (merge), может быть замена транка бранчем... Зависит от политики и настроения. Назначение tag аналогично за исключением того, что после создания копии транка в тэге эта копия не предполагает изменения. Тэги еще называют метками (labels). Их делают для того, чтобы в репозитории хранился моментальный снимок сорцов на какой-то определенный момент времени. Например, для каждого релиза создается тэг, к которому можно откатиться в случае необходимости.
В случае SVN и trunk, и branch, и tags - обычные директории, выполняющие свои специфические функции на уровне соглашения. Предполагается, что содержимое директории %PROJECT_REPO%/tags не изменяется - только создается новая поддиректория для каждого из тэгов. Директория %PROJECT_REPO%/branches используется для хранения бранчей. Но при этом ничто, кроме здравого смысла, не мешает пользователю назвать эти директории по-своему или вносить изменения в тэги.
Как бы то ни было, напоминалка!
Создание бранча/тэга в предположении, что проект лежит в ~/work/project/:
mkdir -p ~/work/project/tags/rc1 svn add ~/work/project/tags/rc1 svn ci -m "rc1 tag added" ~/work/project/tags/rc1 svn copy -m "Some comment" https://svn.server:port/svn/currentProject/trunk/ https://svn.server:port/svn/currentProject/tags/rc1/ svn upДля создания бранча последовательность аналогична:
mkdir -p ~/work/project/branches/camelStyleInvolving svn add ~/work/project/branches/camelStyleInvolving svn ci -m "rc1 tag added" ~/work/project/branches/camelStyleInvolving svn copy -m "Some comment" https://svn.server:port/svn/currentProject/trunk/ https://svn.server:port/svn/currentProject/branches/camelStyleInvolving/ svn upДля переключения локальной копии репозитория в нужный бранч/тэг нужно выполнить следующую команду в директории, соответствующей основной ветке (в данном случае это ~/work/project/):
cd ~/work/project/trunk svn switch https://svn.server:port/svn/currentProject/branches/camelStyleInvolving/ ./указание текущей директории "./" можно опустить, но лучше ее указывать явно, чтобы избежать неприятных промахов. При этом в локальную копию транка помещаются файлы из бранча. То есть, для среды разработки пути и расположение файлов не изменяется. Меняется только их содержимое. Ну, и чтобы вспомнить в какой ветке сейчас находится локальная версия репозитория, можно использовать команду svn info:
svn infoЭти действия предполагают работу в консоли bash. Подобные действия можно производить и в консоли Windows-окружения. Для графического интерфейса действия зависят от используемого SVN-клиента.
17 июн. 2012 г.
SVN + Apache + Nginx. Ошибка коммита изображений
После переезда на новый хостинг столкнулся с тем, что SVN не хочет коммитить файлы изображений (jpg, png, etc). Выдает примерно такие ошибки:
Adding (bin) icon57x57.jpg svn: Commit failed (details follow): svn: Server sent unexpected return value (405 Not Allowed) in response to PROPFIND request for '/svn/!svn/wrk/6ec81701-d224-4232-851b-23f6d87b9e06/Bzzzer2/icon57x57.jpg' svn: Server sent unexpected return value (405 Not Allowed) in response to PROPFIND request for '/svn/Bzzzer2/icon57x57.jpg'Оказалось, что на сервере установлен Nginx, который и мешает загрузке картинок на сервер. Остальные файлы он игнорирует, ибо они не относятся к вебу - проекты Objective-C и C++. Для исправления этого положения нужно внести директорию репозитория в список игнорируемых Nginx-ом путей. Делается это в разделе
location ~* ^/(awstats/|webmail/|phpmyadmin/|server-status/|backups/|svn/) {^M
proxy_pass http://80.91.191.246:8080;^M
proxy_redirect http://sapisoft.com:8080/ /;^M
proxy_set_header Host $host;^M
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;^M
proxy_set_header X-Real-IP $remote_addr;^M
}^M
соответствующего файла конфигурации соответствующего хоста, например
/etc/nginx/vhosts/yourhost.com.cfg
6 июн. 2012 г.
*x. svn + vimdiff = тру!
Небольшое описание настройки SVN с тем, чтобы дефолтным менеджером сравнения использовался трушный vimdiff (специальный режим работы vim). У SVN есть команда diff, которая сравнивает указанный файл с его предыдущими ревизиями - по умолчанию с предыдущей. И, опять-таки по умолчанию, она выводит список различий в довольно таки неудобочитаемом формате. Для использования внешнего менеджера различий нужно указать в командной строке модификатор --diff-cmd <команда запуска менеджера>, либо прописать <команда запуска менеджера> в файле ~/.subversion/config в параметре diff-cmd. Но не все так просто. SVN в дополнение к именам файлов передает менеджеру еще 5 параметров. При брутальном указании vimdiff он начинает ругаться на несуществующие файлы и отсутствующие команды. Для обхода этого используем unix-way - скрипты. Итаг:
1. создаем следующий файл bash-скрипта:
2. Далее в файле ~/.subversion/config добавляем/заменяем строку:
Ну и в принципе все. Делаем
1. создаем следующий файл bash-скрипта:
#!/bin/sh
# Configure your favorite diff program here.
VIMDIFFCMD="/usr/bin/vimdiff"
# Subversion provides the paths we need as the sixth and seventh
# parameters.
LEFT=${6}
RIGHT=${7}
# Call the diff command (change the following line to make sense for your merge program).
$VIMDIFFCMD "$LEFT" "$RIGHT"
называем его как-то типа svndiff.sh, устанавливаем права доступа для выполнения
chmod +x svndiff.shи кладем где-то в $PATH - можно в домашней директории, можно в /usr/local/bin - куда руки дотянутся.
2. Далее в файле ~/.subversion/config добавляем/заменяем строку:
diff-cmd = svndiff.sh
Ну и в принципе все. Делаем
svn diff <filename>и пользуемся правильными инструментами.
Подписаться на:
Сообщения (Atom)