Oberon space

General Category => Общий раздел => Тема начата: valexey от Сентябрь 20, 2011, 11:35:19 am

Название: BBCB & hg/git/svn
Отправлено: valexey от Сентябрь 20, 2011, 11:35:19 am
Вопрос такой - как подружить блекбокс с системами контроля версий?

Мне в общем то много не надо - мне нужно, чтобы через веб-морду какого-нибудь github'a можно было просматривать исходники ББ, нужно чтобы можно было посмотреть diff между ревизиями, чтобы можно было разрешать конфликты.

При этом редактироваться исходники будут только из ББ (за исключением разрешения конфликтов).

Быть может кто-то уже решал подобную проблему?
Название: Re: BBCB & hg/git/svn
Отправлено: Romiras от Сентябрь 20, 2011, 12:16:42 pm
Я решил этот вопрос кардинально: исходники держу в ASCII файлах кодировки UTF-8 с расширением .cp . Среду BBCB настроил так, чтобы можно было читать и сохранять документы в этом формате.

При этом получаю возможность отслеживания версий документов популярными системами контроля версий. Так я поступил с исходниками проекта CP-dev и многими другими модулями.
Один из минусов состоит в том, что исчезает возможность интерактивного вызова документов (документации, исходника, интерфейса) и также компиляция списка исходников встроенными средствами среды. Пришлось пойти на такую жертву в пользу наличия контроля версий.
Название: Re: BBCB & hg/git/svn
Отправлено: valexey от Сентябрь 20, 2011, 12:56:34 pm
Я решил этот вопрос кардинально: исходники держу в ASCII файлах кодировки UTF-8 с расширением .cp . Среду BBCB настроил так, чтобы можно было читать и сохранять документы в этом формате.

При этом получаю возможность отслеживания версий документов популярными системами контроля версий. Так я поступил с исходниками проекта CP-dev и многими другими модулями.
Один из минусов состоит в том, что исчезает возможность интерактивного вызова документов (документации, исходника, интерфейса) и также компиляция списка исходников встроенными средствами среды. Пришлось пойти на такую жертву в пользу наличия контроля версий.

О! А поделись опытом. Хочу так же настроить.
Название: Re: BBCB & hg/git/svn
Отправлено: Romiras от Сентябрь 20, 2011, 01:50:16 pm
Потребуется подсистема Cpc/Utf8Conv от Helmut Zinn (http://www.zinnamturm.eu). Установи её и следуй инструкциям в Quick-Start.
Фишка в том, что регистрируется дополнительный конвертер (Converters.Register) для обработки файлов с нужным расширением (cp).

Если не справишься, обращайся - помогу.
Название: Re: BBCB & hg/git/svn
Отправлено: valexey от Сентябрь 20, 2011, 02:43:11 pm
Спасибо. Буду пробовать.

PS. В репозиторий Oberon revival неплохо бы исходники в таком виде залить.
Название: Re: BBCB & hg/git/svn
Отправлено: valexey от Сентябрь 24, 2011, 08:30:28 pm
Дошли руки попробовать это все сделать. Скачал http://www.zinnamturm.eu/pac/CpcUtf8Conv.txt, декодировал. Далее точно следовал инструкции. Перегрузил ББ. В результате получил то, что на скриншоте.
Название: Re: BBCB & hg/git/svn
Отправлено: kemiisto от Сентябрь 24, 2011, 08:35:28 pm
Попробовал на образовательной сборке 1.5, на "чистом" ББ 1.6 rc5 и rc6. Под "костылями"-wine и непосредственно на винде. Следовал инструкции. И каждый раз при запуске ББ вот такие пироги:

(http://i32.fastpic.ru/big/2011/0924/c0/59988111dcdffce9210916f85826b4c0.png)

ЧЯДНТ?
Название: Re: BBCB & hg/git/svn
Отправлено: kemiisto от Сентябрь 24, 2011, 10:36:23 pm
"Решил" удалением Cpc\Rsrc\Menus.odc.
Название: Re: BBCB & hg/git/svn
Отправлено: valexey от Сентябрь 25, 2011, 10:50:07 am
Действительно помогло.

Надо попробовать настроить чтобы оно .cp ассоциировало с utf-8 (по идее, там надо просто дописать еще одну строчку). И можно будет уже чувствовать себя почти человеком.
Название: Re: BBCB & hg/git/svn
Отправлено: Romiras от Январь 13, 2013, 11:35:31 am
Вот ещё один рецепт, на основе упомянутой утилиты odcread (http://"https://github.com/gertvv/odcread"):
https://gist.github.com/3608907 (https://gist.github.com/3608907)
Цитировать
For diffs of .odc Oberon BlackBox files (as used by OpenBUGS and WinBUGS) in git
Название: Re: BBCB & hg/git/svn
Отправлено: ilovb от Январь 14, 2013, 06:29:38 am
На днях поборол подобную проблему для 1С.
В клиенте TortoiseSVN можно вешать хуки на некоторые события:
http://tortoisesvn.net/docs/release/TortoiseSVN_ru/tsvn-dug-settings.html#tsvn-dug-settings-hooks

Я написал утилиту, которая извлекает модули из 1с-ной обработки и кладет их рядом. Эту утилиту подвесил на событие "Перед-фиксацией".
Теперь храню в SVN исходные обработки и при этом могу видеть историю изменения кода.  :)

Думаю, что и для BB-документов можно сделать такое.
Название: Re: BBCB & hg/git/svn
Отправлено: Valery Solovey от Январь 14, 2013, 10:53:20 am
Я давно уже подумываю сделать кое-что на этот счёт, но руки не доходят. Идея в том, чтобы сделать конвертер, сохраняющий документ не в один файл, а в несколько. В одном - текст, в другом - разметка, в третьем - бинарные данные. Если в дополнение к этому в тексте будут текстовые метки, помогающие совмещать текст с содержимым других файлов, то даже редактировать исходники можно будет вне ББ (если не трогать метки).
Название: Re: BBCB & hg/git/svn
Отправлено: trurl от Январь 16, 2013, 06:01:44 am
В QNX была прикольная штука. Там в редакторе тоже можно было раскрашивать тектсты программ. А хранилась информация о разметке в комментариях в конце программы. Примерно так:
...
текст программы на си
...
/*специальная метка
#положение в тексте@атрибуты
....
 */
Конечно, при правке в другом редакторе оформление могло причудливо изменится, но на качество компиляции не влияет. ;)
Название: Re: BBCB & hg/git/svn
Отправлено: valexey_u от Январь 16, 2013, 06:16:37 am
В QNX была прикольная штука. Там в редакторе тоже можно было раскрашивать тектсты программ. А хранилась информация о разметке в комментариях в конце программы. Примерно так:
...
текст программы на си
...
/*специальная метка
#положение в тексте@атрибуты
....
 */
Конечно, при правке в другом редакторе оформление могло причудливо изменится, но на качество компиляции не влияет. ;)

Аналогичная штука была в BeOS и есть в Haiku - в стандартном текстовом редакторе StylEd. Атрибуты текста (цвет, размер, начертание, шрифт) там хранится в расширенных атрибутах файла (особенность файловой системы bfs) и никак не мешают компиляции и редактированию их в других редакторах. При копировании на другую файловую систему, где не поддерживаются расширенные атрибуты, получаем просто текст, без раскраски.
Название: Re: BBCB & hg/git/svn
Отправлено: Romiras от Январь 21, 2013, 03:58:38 pm
А что вы скажете насчёт такого варианта (черновой вариант)?
<!-- Oberon eXchange Format (OXF) -->
<?xml version="1.0" encoding="UTF-8" ?>
<content>
  <source>Oberon/F</source>
</content>
<body>Lorem ipsum

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam ac nisl quis arcu condimentum tempus. Nullam consectetur nisl nec arcu convallis non vehicula magna euismod. Aenean vitae nunc nec sapien iaculis vehicula sit amet nec felis. Nullam eget nisi nec lacus euismod consequat. Pellentesque justo dolor, tempus ut aliquam cursus, vehicula sed nulla. Duis mollis lobortis dolor eu ultrices. Phasellus semper convallis venenatis.

In imperdiet, libero ut suscipit rhoncus, velit nunc condimentum nisl, in mollis arcu velit at sem. In ac justo nunc. Praesent arcu sem, pretium quis adipiscing non, accumsan in tellus. Donec molestie blandit leo, a congue risus egestas a. Mauris et urna eu ligula vestibulum molestie. Duis gravida mi at erat volutpat pulvinar. Vestibulum nec orci at diam facilisis egestas. Sed luctus commodo enim, vitae ultrices orci facilisis nec. Donec dignissim, sem nec ultricies venenatis, eros diam hendrerit metus, non faucibus mauris enim id sapien. Vivamus id est orci. Cras in augue ac massa volutpat euismod et vel magna. Nulla pretium semper dolor et pulvinar. Fusce tempus condimentum augue nec ullamcorper. Sed volutpat lacinia mollis.

MyCommand.Do par1 par2 par3

Fold text

Text</body>
<meta>
  <tokenlist>
    <token pos="ADFF" type="text">
       <textstyle fontsize="24" attr="bold" />
    </token>
    <token pos="FBCD" type="text">
       <textstyle fontsize="10" attr="bold,italic" />
    </token>
    <token pos="FBED" type="text">
       <textstyle fontsize="10" attr="default" />
    </token>
    <token pos="FE01" type="text">
       <textstyle fontsize="8" attr="default" />
    </token>
    <token pos="FEC3" type="command">
       <data>MyCommand.Do par1 par2 par3</data>
    </token>
    <token pos="FFC3" type="fold">
       <data>Hidden fold text</data>
    </token>
    <token pos="1B293" type="timestamp">
       <data>21-Jan-2013</data>
    </token>
    <token pos="1CE01" type="text">
       <textstyle fontsize="10" attr="default" />
    </token>
  </tokenlist>
</meta>

Причём если сделать его общим для обмена между различными видами Оберонов: классическим ETH, Oberon/F (Blackbox) ...
Название: Re: BBCB & hg/git/svn
Отправлено: valexey_u от Январь 21, 2013, 04:05:54 pm
А что вы скажете насчёт такого варианта (черновой вариант)?
<!-- Oberon eXchange Format (OXF) -->
<?xml version="1.0" encoding="UTF-8" ?>
<content>
  <source>Oberon/F</source>
</content>
<body>Lorem ipsum

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam ac nisl quis arcu condimentum tempus. Nullam consectetur nisl nec arcu convallis non vehicula magna euismod. Aenean vitae nunc nec sapien iaculis vehicula sit amet nec felis. Nullam eget nisi nec lacus euismod consequat. Pellentesque justo dolor, tempus ut aliquam cursus, vehicula sed nulla. Duis mollis lobortis dolor eu ultrices. Phasellus semper convallis venenatis.

In imperdiet, libero ut suscipit rhoncus, velit nunc condimentum nisl, in mollis arcu velit at sem. In ac justo nunc. Praesent arcu sem, pretium quis adipiscing non, accumsan in tellus. Donec molestie blandit leo, a congue risus egestas a. Mauris et urna eu ligula vestibulum molestie. Duis gravida mi at erat volutpat pulvinar. Vestibulum nec orci at diam facilisis egestas. Sed luctus commodo enim, vitae ultrices orci facilisis nec. Donec dignissim, sem nec ultricies venenatis, eros diam hendrerit metus, non faucibus mauris enim id sapien. Vivamus id est orci. Cras in augue ac massa volutpat euismod et vel magna. Nulla pretium semper dolor et pulvinar. Fusce tempus condimentum augue nec ullamcorper. Sed volutpat lacinia mollis.

MyCommand.Do par1 par2 par3

Fold text

Text</body>
<meta>
  <tokenlist>
    <token pos="ADFF" type="text">
       <textstyle fontsize="24" attr="bold" />
    </token>
    <token pos="FBCD" type="text">
       <textstyle fontsize="10" attr="bold,italic" />
    </token>
    <token pos="FBED" type="text">
       <textstyle fontsize="10" attr="default" />
    </token>
    <token pos="FE01" type="text">
       <textstyle fontsize="8" attr="default" />
    </token>
    <token pos="FEC3" type="command">
       <data>MyCommand.Do par1 par2 par3</data>
    </token>
    <token pos="FFC3" type="fold">
       <data>Hidden fold text</data>
    </token>
    <token pos="1B293" type="timestamp">
       <data>21-Jan-2013</data>
    </token>
    <token pos="1CE01" type="text">
       <textstyle fontsize="10" attr="default" />
    </token>
  </tokenlist>
</meta>

Причём если сделать его общим для обмена между различными видами Оберонов: классическим ETH, Oberon/F (Blackbox) ...

Не очень понятно как быть со встроенными отображениями (ака View).

Например весь код может содержаться в таких отображениях.
Название: Re: BBCB & hg/git/svn
Отправлено: Romiras от Январь 21, 2013, 05:06:21 pm
Данные Views можно хранить, например, так:<token pos="XXX" type="view">
  <data>ASCII-coded binary data</data>
<token>
При этом тело текста может быть пустым.
Название: Re: BBCB & hg/git/svn
Отправлено: valexey_u от Январь 21, 2013, 05:09:01 pm
Данные Views можно хранить, например, так:<token pos="XXX" type="view">
  <data>ASCII-coded binary data</data>
<token>
При этом тело текста может быть пустым.
А какое тело (ASCII-coded binary data) будет у текстовых вьюшек?
Название: Re: BBCB & hg/git/svn
Отправлено: Geniepro от Январь 21, 2013, 05:18:13 pm
Причём если сделать его общим для обмена между различными видами Оберонов: классическим ETH, Oberon/F (Blackbox) ...

Кто ж всё это делать-то будет?  ::)
Название: Re: BBCB & hg/git/svn
Отправлено: Romiras от Январь 21, 2013, 08:17:55 pm
Данные Views можно хранить, например, так:<token pos="XXX" type="view">
  <data>ASCII-coded binary data</data>
<token>
При этом тело текста может быть пустым.
А какое тело (ASCII-coded binary data) будет у текстовых вьюшек?
Может я что-то упустил, но разве TextViews.View не воссоздаётся из модели текста, а именно TextModels.Model?
Название: Re: BBCB & hg/git/svn
Отправлено: Kemet от Январь 22, 2013, 02:20:31 am
Наш самокат самый самокатный!
Всё уже спи...украдено до нас.
Если заглянуть в А2, то можно увидеть, что там давным давно(по настойчивым просьбам пользователей) озаботились решением данной проблемы и там есть специальный XML формат для файлов:
<?xml version="1.0" encoding="UTF-8"?>
<?bluebottle format version="0.1" ?>
<?xml-stylesheet type="text/xsl" href="http://bluebottle.ethz.ch/bluebottle.xsl" ?>
<Text>
<Span style="Normal"><![CDATA[MODULE Test07;
VAR i:INTEGER;
..
BEGIN
i:=1000;
...
]]></Span><Span style="Assertion"><![CDATA[ASSERT (i>MAX(INTEGER)/2);]]></Span><Span style="Normal"><![CDATA[
END Test07.]]></Span>
</Text>
Лучше именно его взять за основу, чтобы не плодить лисапеты.