LTSP/UpstreamMigration

Материал из ALT Linux Wiki

Перенос апстримного базара к нам в гит

Эту операцию делаем с помощью пакета git-bzr

  1. # apt-get install bzr git-bzr
  2. Втягиваем себе базарный транк:
    mkdir ~/bzr-ltsp
    cd ~/bzr-ltsp
    bzr branch lp:~ltsp-upstream/ltsp/ltsp-trunk
    Можем полюбоваться историей:
    cd ltsp-trunk/
    bzr log
  3. Делаем себе пустой гит-проект:
    mkdir ~/git/ltsp
    cd ~/git/ltsp
    git init-db
  4. Добавляем информацию об апстимном транке:
    git bzr add upstream ~/bzr-ltsp/ltsp-trunk
    Это связывает апстримный транк ~/bzr-ltsp/ltsp-trunk с бранчем bzr/upstream, куда будет происходить миграция
  5. Собственно миграция:
    git bzr fetch upstream
    Первоначальная миграция может занять какое-то время. В результате будет сделан бранч bzr/upstream, но он неактивен и никакого файлового дерева не появляется, не бойтесь.
  6. Создаём себе бранч master для непосредственной работы с ним:
    git checkout -b master bzr/upstream
    Вот и появились файлы. Любуемся смигрированной историей:
    git log
    qgit4

Втягивание дальнейших апстримных коммитов

  1. Идём в наш базаарный транк и втягиваем последние изменения:
    cd ~/bzr-ltsp/ltsp-trunk
    bzr merge --pull
  2. Идём в наш гит и импортируем изменения:
    cd ~/git/ltsp
    git bzr fetch upstream
    если вы при этом находитесь в бранче bzr/upstream, вам нужно на этом этапе выполнить git checkout -f, чтобы актуализировать файловое дерево
  3. Вливаем изменения в наш текущий бранч:
    git merge bzr/upstream

Патчи

Я так же втащил все из src.rpm, в том числе приложил имеющиеся патчи непосредственно к файловому дереву. Но этому необходим серьёзный аудит: апстримный код кое-где уехал далеко вперёд, и приходилось включать fuzzy-преfuzzy logic.