Показаны сообщения с ярлыком subversion. Показать все сообщения
Показаны сообщения с ярлыком subversion. Показать все сообщения

суббота, 16 марта 2013 г.

SVN: Как мерджить из одной ветки в другую

Subversion была моей основной CVS более трёх лет. С Git я познакомился всего год назад. Не скажу что мой мир сильно изменился, но он мне показался более удобным. По-этому свои личные проекты я храню только в Git, а две недели назад даже купил Micro Plan на GitHub.

На работе же всё зависит от проекта: некоторые используют Git, остальные постепенно мигрируют с SVN на Git. Я сейчас работаю в команде, которая относится ко второму типу. По-этому я хочу рассказать о своем опыте мерджа из одной ветки в другую.

Нам понадобится Svnmerge.py и две ветки (например, http://svn.local/dev и http://svn.local/qa). Вторая ветка это копия первой, она была создана с помощью 'svn cp' и закомичена ревизией 12830.

Теперь предположим что у нас есть задача, реализацию которой мы запилили в dev-ветку. Список ревизий: 12834, 12839, 12845. Теперь нами стоит задача мерджа этих ревизий в qa-ветку.

1. Создаем папку и выполняем туда чекаут qa-ветки:
mkdir qa 
svn co http://svn.local/qa qa

2. После окончания чекаута нужно положить svnmerge.py в папку qa и сделать его исполняемым.
3. Заходим в папку qa и инициализируем dev-ветку. Эту единоразовая операция, ее не придется повторять в будущем:
svnmerge.py init -r1-12830 http://svn.local/dev
svn ci -F svnmerge-commit-message.txt

12830 это ревизия, в которой была создана qa-ветка. Мы записали в свойства бранча информацию о том, что в нем находится код dev-ветки с 1й по 12830й ревизии. Теперь у нас не получится повторно вмерджить эти ревизии.

4. Собираем необходимые ревизии и проверяем их наличие в dev/qa ветках:
svnmerge.py avail -r12834,12839,12845 -Shttp://svn.local/dev

Если это ревизии dev-верки и они не были ранее вмерджены в qa-ветку, то мы получим список доступных ревизий:
12834,12839,12845

Если какая-то из ревизий отсутствует в списке, на это может быть 2 причины:
  • Это не ревизия dev-ветки;
  • Это ревизия dev-ветки, но она уже была вмерджена в qa-ветку.

5. Мы предполагаем что у нас все хорошо и выполняем команду для мерджа:
svnmerge.py merge -r12834,12839,12845 -Shttp://svn.local/dev # мердж
svn st # проверяем изменения
svn ci -F svnmerge-commit-message.txt # комитим результат

Как видите все не так просто как в Git, но и сложного ничего нет :)

Читать далее

четверг, 28 февраля 2013 г.

SVN: делаем файл исполняемым

Последние 4 дня занимаюсь созданием CI билдов для TeamCity. Одна из задач - запускать php скрипты через Apache Ant. Для того чтобы его запускать нужно сделать его исполняемым. Вариант добавления 'chmod +x file' в Ant скрипт не подходит, так как это костыль.

Начал гуглить и нашел.

Чтобы сделать файл исполняемым необходимо выполнить:
svn propset svn:executable ON filename

Обратная операция:
svn propdel svn:executable ON filename

Читать далее

понедельник, 13 августа 2012 г.

Установка SVN на Mac OS X 10.8 – Mountain Lion

Вчера обновился на Mac OS X 10.8 – Mountain Lion и был неприятно удивлен отсутствием SVN (Subversion).

Установить его можно как минимум двумя способами. Если у вас есть последняя версия Xcode, установленная через Mac App Store, то просто инсталим Xcode > Preferences > Downloads > Command Line Tools > Install.

Command Line Tools содержит последнюю версию SVN. Но если вы не используете Xcode, то довольно глупо качать Xcode, который весит 1.5GB, ради одного SVN.

К счастью, есть простой путь установки SVN без Xcode. Пакет Command Line Tools доступен как отдельный пакет (116MB) через Apple Developer site. Для этого вам понадобится Apple Developer ID, но его можно получить очень просто и бесплатно на основе существующего AppleID.

После загрузки и установки пакета, вы можете проверить наличие SVN в системе с помощью Terminal, просто откройте его и введите svn --version. Ответ будет приблизительно таким:
$ svn --version

svn, version 1.6.18 (r1303927)
   compiled Jun 15 2012, 19:07:58

Copyright (C) 2000-2009 CollabNet.
Subversion is open source software, see http://subversion.apache.org/
This product includes software developed by CollabNet (http://www.Collab.Net/).

The following repository access (RA) modules are available:

* ra_neon : Module for accessing a repository via WebDAV protocol using Neon.
  - handles 'http' scheme
  - handles 'https' scheme
* ra_svn : Module for accessing a repository using the svn network protocol.
  - handles 'svn' scheme
* ra_local : Module for accessing a repository on local disk.
  - handles 'file' scheme

Хочу заметить, что данные 2 способа не являются единственными. Вы можете поставить SVN с помощью различных менеджеров пакетов. Например, Mac Ports, Homebrew, etc.
Читать далее