LTSP/UpstreamMigration
< LTSP
Перенос апстримного базара к нам в гит
Эту операцию делаем с помощью пакета git-bzr
- # apt-get install bzr git-bzr
- Втягиваем себе базарный транк:
mkdir ~/bzr-ltsp
cd ~/bzr-ltsp
bzr branch lp:~ltsp-upstream/ltsp/ltsp-trunk
Можем полюбоваться историей:
cd ltsp-trunk/
bzr log
-
Делаем себе пустой гит-проект:
mkdir ~/git/ltsp
cd ~/git/ltsp
git init-db
-
Добавляем информацию об апстимном транке:
git bzr add upstream ~/bzr-ltsp/ltsp-trunk
Это связывает апстримный транк ~/bzr-ltsp/ltsp-trunk с бранчем bzr/upstream, куда будет происходить миграция -
Собственно миграция:
git bzr fetch upstream
Первоначальная миграция может занять какое-то время. В результате будет сделан бранч bzr/upstream, но он неактивен и никакого файлового дерева не появляется, не бойтесь. -
Создаём себе бранч master для непосредственной работы с ним:
git checkout -b master bzr/upstream
Вот и появились файлы. Любуемся смигрированной историей:
git log
qgit4
Втягивание дальнейших апстримных коммитов
- Идём в наш базаарный транк и втягиваем последние изменения:
cd ~/bzr-ltsp/ltsp-trunk
bzr merge --pull
-
Идём в наш гит и импортируем изменения:
cd ~/git/ltsp
git bzr fetch upstream
если вы при этом находитесь в бранче bzr/upstream, вам нужно на этом этапе выполнить git checkout -f, чтобы актуализировать файловое дерево -
Вливаем изменения в наш текущий бранч:
git merge bzr/upstream
Патчи
Я так же втащил все из src.rpm, в том числе приложил имеющиеся патчи непосредственно к файловому дереву. Но этому необходим серьёзный аудит: апстримный код кое-где уехал далеко вперёд, и приходилось включать fuzzy-преfuzzy logic.