Git и Subversion могут жить вместе
Предположим, что у вас есть централизованный сервер с svn репозиторием, но вы хотите использовать git локально, делать commit'ы, ветки и другие прелести децентрализованной системы контроля версий. С помощью git-svn это довольно просто.
Если вы еще не сделали svn checkout:
1. Узнаем какой была последняя ревизия в svn (предположим это REVISION)
2. cd project && git-svn init http://svn.example.com
3. git-svn fetch -rREVISION (наша запомненная ревизия)
Если уже есть checkout версия:
1. cd project && git-svn clone --tags=<путь к tags> –-trunk=<путь к trunk> –-branches=<путь к branches> https://svn.example.com
Если у вас стандартное расположение trunk, branches, tags, можно заменить одной опцией --stdlayout.
В процессе инициализации или клонирования можно передать другие полезные опции, например, -username=<имя пользователя>, если необходимо.
Переключиться на ветку (напр. branches/stable) можно следующим образом:
git checkout stable
Стандартная цепочка действий:
1. git-svn rebase (синхронизируемся)
2. ... (git магия и т.п.)
3. git-svn dcommit (отправляем все на svn сервер)
Может сложиться ситуация когда вам нужно синхронизироваться с svn репозитория, но локально в git версии вы сделали изменения, которые еще не готовы отправить на сервер. Если сейчас обновиться - все это пропадет. Для обхода этой ситуации воспользуемся следующей последовательностью магических действий:
1. git-stash (временно изымаем git изменения)
2. git-svn rebase (синхронизируемся с svn сервером)
3. git-stash apply (возвращаем обратно git изменения)
4. git-stash clear (очищаем stash)
Компилятивный материал из источников:
man git-svn (секция EXAMPLES есть
http://www.flavio.castelli.name/howto_use_git_with_svn
http://garuma.wordpress.com/2008/04/26/ ... ositories/