Автор Тема: BBCB & hg/git/svn  (Прочитано 4368 раз)

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
BBCB & hg/git/svn
« : Сентябрь 20, 2011, 11:35:19 am »
Вопрос такой - как подружить блекбокс с системами контроля версий?

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

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

Быть может кто-то уже решал подобную проблему?
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

Romiras

  • Sr. Member
  • ****
  • Сообщений: 264
    • Просмотр профиля
    • Romiras Dev Lab
Re: BBCB & hg/git/svn
« Ответ #1 : Сентябрь 20, 2011, 12:16:42 pm »
Я решил этот вопрос кардинально: исходники держу в ASCII файлах кодировки UTF-8 с расширением .cp . Среду BBCB настроил так, чтобы можно было читать и сохранять документы в этом формате.

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

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re: BBCB & hg/git/svn
« Ответ #2 : Сентябрь 20, 2011, 12:56:34 pm »
Я решил этот вопрос кардинально: исходники держу в ASCII файлах кодировки UTF-8 с расширением .cp . Среду BBCB настроил так, чтобы можно было читать и сохранять документы в этом формате.

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

О! А поделись опытом. Хочу так же настроить.
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

Romiras

  • Sr. Member
  • ****
  • Сообщений: 264
    • Просмотр профиля
    • Romiras Dev Lab
Re: BBCB & hg/git/svn
« Ответ #3 : Сентябрь 20, 2011, 01:50:16 pm »
Потребуется подсистема Cpc/Utf8Conv от Helmut Zinn (http://www.zinnamturm.eu). Установи её и следуй инструкциям в Quick-Start.
Фишка в том, что регистрируется дополнительный конвертер (Converters.Register) для обработки файлов с нужным расширением (cp).

Если не справишься, обращайся - помогу.

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re: BBCB & hg/git/svn
« Ответ #4 : Сентябрь 20, 2011, 02:43:11 pm »
Спасибо. Буду пробовать.

PS. В репозиторий Oberon revival неплохо бы исходники в таком виде залить.
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re: BBCB & hg/git/svn
« Ответ #5 : Сентябрь 24, 2011, 08:30:28 pm »
Дошли руки попробовать это все сделать. Скачал http://www.zinnamturm.eu/pac/CpcUtf8Conv.txt, декодировал. Далее точно следовал инструкции. Перегрузил ББ. В результате получил то, что на скриншоте.
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

kemiisto

  • Jr. Member
  • **
  • Сообщений: 64
    • Просмотр профиля
    • kemiisto.ru
Re: BBCB & hg/git/svn
« Ответ #6 : Сентябрь 24, 2011, 08:35:28 pm »
Попробовал на образовательной сборке 1.5, на "чистом" ББ 1.6 rc5 и rc6. Под "костылями"-wine и непосредственно на винде. Следовал инструкции. И каждый раз при запуске ББ вот такие пироги:



ЧЯДНТ?

kemiisto

  • Jr. Member
  • **
  • Сообщений: 64
    • Просмотр профиля
    • kemiisto.ru
Re: BBCB & hg/git/svn
« Ответ #7 : Сентябрь 24, 2011, 10:36:23 pm »
"Решил" удалением Cpc\Rsrc\Menus.odc.

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re: BBCB & hg/git/svn
« Ответ #8 : Сентябрь 25, 2011, 10:50:07 am »
Действительно помогло.

Надо попробовать настроить чтобы оно .cp ассоциировало с utf-8 (по идее, там надо просто дописать еще одну строчку). И можно будет уже чувствовать себя почти человеком.
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

Romiras

  • Sr. Member
  • ****
  • Сообщений: 264
    • Просмотр профиля
    • Romiras Dev Lab
Re: BBCB & hg/git/svn
« Ответ #9 : Январь 13, 2013, 11:35:31 am »
Вот ещё один рецепт, на основе упомянутой утилиты odcread:
https://gist.github.com/3608907
Цитировать
For diffs of .odc Oberon BlackBox files (as used by OpenBUGS and WinBUGS) in git

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: BBCB & hg/git/svn
« Ответ #10 : Январь 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-документов можно сделать такое.

Valery Solovey

  • Hero Member
  • *****
  • Сообщений: 509
    • Просмотр профиля
Re: BBCB & hg/git/svn
« Ответ #11 : Январь 14, 2013, 10:53:20 am »
Я давно уже подумываю сделать кое-что на этот счёт, но руки не доходят. Идея в том, чтобы сделать конвертер, сохраняющий документ не в один файл, а в несколько. В одном - текст, в другом - разметка, в третьем - бинарные данные. Если в дополнение к этому в тексте будут текстовые метки, помогающие совмещать текст с содержимым других файлов, то даже редактировать исходники можно будет вне ББ (если не трогать метки).

trurl

  • Full Member
  • ***
  • Сообщений: 133
    • Просмотр профиля
Re: BBCB & hg/git/svn
« Ответ #12 : Январь 16, 2013, 06:01:44 am »
В QNX была прикольная штука. Там в редакторе тоже можно было раскрашивать тектсты программ. А хранилась информация о разметке в комментариях в конце программы. Примерно так:
...
текст программы на си
...
/*специальная метка
#положение в тексте@атрибуты
....
 */
Конечно, при правке в другом редакторе оформление могло причудливо изменится, но на качество компиляции не влияет. ;)

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: BBCB & hg/git/svn
« Ответ #13 : Январь 16, 2013, 06:16:37 am »
В QNX была прикольная штука. Там в редакторе тоже можно было раскрашивать тектсты программ. А хранилась информация о разметке в комментариях в конце программы. Примерно так:
...
текст программы на си
...
/*специальная метка
#положение в тексте@атрибуты
....
 */
Конечно, при правке в другом редакторе оформление могло причудливо изменится, но на качество компиляции не влияет. ;)

Аналогичная штука была в BeOS и есть в Haiku - в стандартном текстовом редакторе StylEd. Атрибуты текста (цвет, размер, начертание, шрифт) там хранится в расширенных атрибутах файла (особенность файловой системы bfs) и никак не мешают компиляции и редактированию их в других редакторах. При копировании на другую файловую систему, где не поддерживаются расширенные атрибуты, получаем просто текст, без раскраски.
Y = λf.(λx.f (x x)) (λx.f (x x))

Romiras

  • Sr. Member
  • ****
  • Сообщений: 264
    • Просмотр профиля
    • Romiras Dev Lab
Re: BBCB & hg/git/svn
« Ответ #14 : Январь 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) ...