пятница, 16 октября 2009 г.

Использование Bazaar для работы с Subversion-репозиториями

Продолжаем тему работы с bzr-svn.

John Szakmeister написал подробную статью Bazaar as Subversion "super client".

Ian Clatworthy (Йен Клатворси), который занимается документацией в проекте Bazaar, создал (полу) оффициальный документ Using Bazaar on Subversion projects. Документ описывает детали работы с Subversion-репозиторием при помощи Bazaar и bzr-svn.

В документе подробно описываются проблемы объединения svn-trunk с вашими bzr-ветками, применение rebase.

Читать: http://doc.bazaar-vcs.org/migration/en/foreign/bzr-on-svn-projects.html

7 комментариев:

  1. Спасибо.
    Вроде бы так уже и делаю и все работает - а тем не менее было полезно прочитать. Очень коротко и хорошо изложено (и с немаловажными мелкими подробностями).

    ОтветитьУдалить
  2. Привет! Что делать в следующем случае? (постарался выделить сценарий)

    #!/bin/sh

    svnadmin create test
    svn co file://`pwd`/test test-co
    cd test-co
    echo "helloworld" > a
    echo "diepeople" > b
    svn add a b
    svn ci -m "add a+b to svn"
    cd ..
    bzr branch `pwd`/test test-bzr
    cd test-co
    echo "tretiynah" > c
    svn add c
    svn ci -m "add c to svn"
    cd ..
    cd test-bzr
    echo "rozoviyslonik" > d
    bzr add d
    bzr ci -m "add d to bzr"
    bzr merge
    bzr ci -m "merge to bzr"
    echo "1nah" > a
    bzr ci -m "change a in bzr"
    bzr push `pwd`/../test # ФИГВАМ! Operation denied because it would change the mainline history. (логично)
    bzr rebase -r 5 # ФИГВАМ! No revisions to rebase.

    ОтветитьУдалить
  3. Вот, а теперь тот же скрипт на Mercurial - и rebase помогает!

    И ещё один камень в огород: почему в bazaar до сих пор нет графов ревизий? Только не графических, а консольных!!! В git и hg есть.

    #!/bin/sh

    svnadmin create test
    svn co file://`pwd`/test test-co
    cd test-co
    echo "helloworld" > a
    echo "diepeople" > b
    svn add a b
    svn ci -m "add a+b to svn"
    cd ..
    hg clone file://`pwd`/test test-hg
    cd test-co
    echo "tretiynah" > c
    svn add c
    svn ci -m "add c to svn"
    cd ..
    cd test-hg
    echo "rozoviyslonik" > d
    hg add d
    hg ci -m "add d to hg"
    hg pull
    hg merge
    hg ci -m "merge to hg"
    echo "1nah" > a
    hg ci -m "change a in hg"
    #hg push file://`pwd`/../test # ФИГВАМ! Sorry, can't find svn parent of a merge revision.
    echo "5nah" > e
    hg add e
    hg ci -m "add e to hg"
    hg rebase -d 2
    hg push

    ОтветитьУдалить
  4. А если сделать по аналогии bzr rebase --onto=2.1.1, то bzr уйдёт в Python Traceback и оттуда не вернётся.
    ERROR: exceptions.AttributeError: 'NoneType' object has no attribute 'get_known_graph_ancestry'

    ОтветитьУдалить
  5. Желательно такие вопросы задавать в ru_bzr.

    На первый вопрос:
    bzr rebase -r 5 # ФИГВАМ! No revisions to rebase.

    ответ такой: надо указать ветку, относительно которой делается rebase, читайте справку на команду rebase, bzr rebase --help.

    Ответ на второй вопрос: консольного графа нет потому что он не нужен. В отличие от hg и git -- bzr упорядочивает присоединенные ревизии. Читайте статью (в двух частях, не закончено еще) про mainline.

    ОтветитьУдалить
  6. 0) про ru_bzr понял, в след раз задам там

    1) опция --onto=? нифига там не получается, я не нашёл комбинацию, при которой бы оно заработало. можете привести конкретную команду, с которой успешно отребэйзит?

    2) ага, посмотрел. то есть он их правда сортирует, ясно. изврат какой, ну да ладно...

    в любом случае граф хочется видеть! что это за логика - не нужен.)) ЛОР прямо какой-то)) "KDE не нужен" (c). кому не нужен?)) мне нужен.)) что, если было несколько слияний туда-сюда-обратно, да ещё и вложенных? как посмотреть на всю эту чехарду визуально?

    в графическом режиме ведь показывается граф. ну нечто типа. почему бы то же самое не показать в консоли? это удобно. а так вы заставляете пользователя строить граф в голове, по-моему, это не круто. юниксоиды они ведь консоль любят))

    ОтветитьУдалить
  7. 1) По поводу rebase: в вашем примере в ветке test-bzr содержится первая ревизия из svn репо, остальные со второй и выше -- это те которые нужно rebase. Поэтому запускать надо так:

    bzr rebase -r2..

    Синтаксис запуска немного уродский, но мне об этом не надо говорить -- пишите письма автору плагина rebase: https://launchpad.net/bzr-rewrite

    2) Почему нету консольного графа? А никому пока он не нужен был, потому и нету. Вам нужен? Пишите! Фигли там сложного. Графический визуализатор графа на Линуксе (bzr-gtk) появился очень давно. Он всех устраивает.

    Дальнейшие вопросы спрашивайте в ru_bzr. Комментарии в блоге предназначены совсем для другого.

    ОтветитьУдалить