Помогли мне в этом несколько статеек.
Спасибо Авторам за то время, которое они затратили на поиск решения и публикацию в блоге. Так же и гуглу спасибо. Я тоже немного времени инвестирую на написание этого поста заметки.
Что мне надо было сделать? Надо было выкачать из GoogleCode svn репозиторий с историей. Раньше я уже решал это, но как оно часто бывает, что-то поломалось и это решение больше не подходит. Пришлось искать другое. И оно нашлось.
Итак еще раз. Есть GoogleCode репозиторий. Я хочу получить его на локали, чтобы потом отфильтровать некоторые ревизии и потом всю историю смерджить в основной git репозиторий.
Поехали. Проект находится в https://kpi-java-training.googlecode.com/svn/trunk/BattleCity, причем корень репозитория https://kpi-java-training.googlecode.com/svn.
Нам понадобится Subversion 1.7.9 (у меня Windows 64-bit) от CollebNet.
После я смог продолжить...
- Перенос SVN репозитория на другой сервер - инструкция
- Mirror a Subversion repository
- Настройка SVN pre-revprop-change hook для Windows
Спасибо Авторам за то время, которое они затратили на поиск решения и публикацию в блоге. Так же и гуглу спасибо. Я тоже немного времени инвестирую на написание этого поста заметки.
Что мне надо было сделать? Надо было выкачать из GoogleCode svn репозиторий с историей. Раньше я уже решал это, но как оно часто бывает, что-то поломалось и это решение больше не подходит. Пришлось искать другое. И оно нашлось.
Итак еще раз. Есть GoogleCode репозиторий. Я хочу получить его на локали, чтобы потом отфильтровать некоторые ревизии и потом всю историю смерджить в основной git репозиторий.
Поехали. Проект находится в https://kpi-java-training.googlecode.com/svn/trunk/BattleCity, причем корень репозитория https://kpi-java-training.googlecode.com/svn.
Нам понадобится Subversion 1.7.9 (у меня Windows 64-bit) от CollebNet.
// Создаем пустой репозиторий находясь в E:\JavaForFun\ svnadmin create all // создаем файл в E:\JavaForFun\all\hooks\ с именем pre-revprop-change.bat и содержимым exit /b 0 cd all cd hooks echo exit /b 0 > pre-revprop-change.bat // возвращемся назад cd .. cd .. // синхронизируем репозиторий svnsync init file:///E:/JavaForFun/all https://kpi-java-training.googlecode.com/svn/ svnsync sync file:///E:/JavaForFun/all // далее наблюдаем, как ревизия за ревизией все сливается к нам на локаль // ... // Copied properties for revision 753. // Transmitting file data ... // Committed revision 754. // Copied properties for revision 754. // Transmitting file data .... // Committed revision 755. // Copied properties for revision 755. // Transmitting file data ... // Committed revision 756. // ... // После можно сделать дамп (обрати внимание, тут путь обычный, а не file://) svnadmin dump E:/JavaForFun/all> all.dump // видим, как дампятся ревизии.. // ... // * Dumped revision 726. // * Dumped revision 727. // * Dumped revision 728. // * Dumped revision 729. // * Dumped revision 730. // ... // фильтруем из бекапа all.dump в battlecity.dump только ревизии проекта находящегося в /trunk/BattleCity svndumpfilter include /trunk/BattleCity < all.dump > battlecity.dumpТак случилось, что из бекапа svnadmin не хотел поднимать репозиторий. Говорил, что нет папки trunk, потому мне пришлось открыть его в текстовом файле и в конец описания ревизии 1
Revision-number: 1 Prop-content-length: 112 Content-length: 112 K 7 svn:log V 38 This is an empty revision for padding. K 8 svn:date V 27 2012-02-15T12:21:42.764614Z PROPS-ENDДобавить это
Node-path: trunk Node-kind: dir Node-action: add Prop-content-length: 10 Content-length: 10 PROPS-ENDКстати, в процессе фильтрации создается множество ревизий с описанием "This is an empty revision for padding." не содержащих ничего.
Revision-number: 5 Prop-content-length: 112 Content-length: 112 K 8 svn:date V 27 2012-02-16T18:37:15.998497Z K 7 svn:log V 38 This is an empty revision for padding. PROPS-ENDИх можно в dump файле удалять, только при одном условии, что все порядковые номера, последующих после удаленного блока ревизий будут продолжать ряд - "без единого разрыва" :). Возможны ошибки в процессе поднятия зачищенного бекапа, сообщающие, что такой-то ревизии N нет. Нужно найти ссылку на нее в дампе и изменить на новый номер.
Revision-number: 761 Prop-content-length: 323 Content-length: 323 ... PROPS-END Node-kind: dir Node-copyfrom-rev: 760 (Вот оно! - мне пришлось изменить это число на 50 потому как я удалил 710 пустых ревизий) Node-copyfrom-path: trunk/BattleCity/test Node-path: trunk/BattleCity/com.javatrainee.tanks.test Node-action: add Content-length: 0Немного рутины, но это мне позволило избавиться от 600 пустых ревизий (тогда как мне нужно всего 53).
После я смог продолжить...
// поднимаем репозиторий из бекапа svnadmin create battlecity svnadmin load --ignore-uuid E:\JavaForFun\battlecity < battlecity.dump // наблюдаем // ... // ------- Committed revision 55 >>> // <<< Started new transaction, based on original revision 56 // ------- Committed revision 56 >>> // <<< Started new transaction, based on original revision 57 // ------- Committed revision 57 >>> // <<< Started new transaction, based on original revision 58 // ------- Committed revision 58 >>> // ...После этого я имел на руках репозиторий, с которым мог уже работать с git
Саша привет. Я не понимаю, зачем ты делал фильтрацию средствами SVN? git svn же делает все за тебя, причем у тебя уже есть в блоге описание этого процесса.
ОтветитьУдалить$git svn clone https://kpi-java-training.googlecode.com/svn/trunk/BattleCity --no-metadata
Все. Результат будет абсолютно тот же.
Для того, чтобы убрать пустые коммиты:
$ git filter-branch --tag-name-filter cat --prune-empty -- --all
Я потратил на импорт 2 минуты. Одну из них на поиск правильной команды для удаления пустых коммитов.
УдалитьСаша, это так круто что ты есть :)
УдалитьЯ прямо сейчас же попробую эту возможность.
Спасибо!
Пока я наткнулся на
Удалить69445314 [main] perl.exe" 20736 fork_copy: loaded dll data/bss pass 0 failed, 0x
671A4000..0x671A4014, done 0, windows pid 16692, Win32 error 487
в процессе.
$git svn clone https://kpi-java-training.googlecode.com/svn/trunk/BattleCity --no-metadata
Надо гуглить... Отложу на потом.
Странно - пробовал на 2х компьютерах - нет такой проблемы(
УдалитьУ меня Win8, может из за этого?
УдалитьВозможно
УдалитьТы же без $ вводишь? просто
ОтветитьУдалитьgit svn clone https://kpi-java-training.googlecode.com/svn/trunk/BattleCity --no-metadata
?
Саш.... :)
Удалить