В июне я писал заметку о том, как облегчить себе жизнь при использовании чужих библиотек в своем приложении. Я этот способ использовал достаточно долго и, надо сказать, весьма успешно. Однако, применять его в моем новом проекте оказалось весьма неудобно. Тонкости описывать не буду, уж больно нудно и заумно получается, да и ни к чему. Суть в том, что умные дядьки придумали решение в чем-то гораздо более удобное - piston.

Что такое piston

Piston - это инструмент для управления внешними ресурсами, написанный на ruby. Он позволяет вам хранить весь код в своем репозитории, без подключения внешних источников через svn:externals, сохраняя при этом возможность обновлять код.

Использование

Импорт из внешнего репозитория:

$ piston import http://svn.rubyonrails.org/rails/trunk vendor/rails
Exported r7358 from 'http://svn.rubyonrails.org/rails/trunk' to 'vendor/rails'

$ svn commit -m "Импортируем локальную копию Rails"

Когда мы хотим получить последние обновления из внешнего источника, мы делаем следующее:

$ piston update vendor/rails
Updated 'vendor/rails' to r7358.

$ svn commit -m "Updates vendor/rails to the latest revision"

Если мы хотим зафиксировать ресурс на текущей версии, мы делаем так:

$ piston lock vendor/rails
'vendor/rails' locked at r7358.

Если хотим снова обновляться, делаем так:

$ piston unlock vendor/rails
'vendor/rails' unlocked.

Единственный минус этого инструмента - он медленный. Существенно медленнее, чем прямая работа с Subversion. Однако, ради такого дела можно потерпеть, т.к. иногда задачу иначе не решить (как в моем случае).

Установка

gem install --include-dependencies piston

Официальный сайт проекта