OberonCore
https://forum.oberoncore.ru/

Особенности версионности с составными документами
https://forum.oberoncore.ru/viewtopic.php?f=23&t=4440
Страница 2 из 4

Автор:  Valery Solovey [ Пятница, 16 Август, 2013 20:07 ]
Заголовок сообщения:  Re: Особенности версионности с составными документами

И слияние и уведомление о коллизиях замечательно работают в гите уже сейчас. Даже с документами ББ. Проблема не в том, что это не делается. Проблема в том, что в случае коллизии система контроля версий только и сможет сказать "у вас коллизия". И чтобы с ней разобраться, придётся вручную сравнивать два документа.

Автор:  Илья Ермаков [ Пятница, 16 Август, 2013 21:15 ]
Заголовок сообщения:  Re: Особенности версионности с составными документами

Так, теперь выяснилось, что под автослиянием коллеги понимают слияние веток (наборов файлов). А не слияние конфликтующих изменений одного файла.
Автослияние веток прекрасно работает и с бинарниками, в чём проблема-то...

Автор:  Иван Кузьмицкий [ Пятница, 16 Август, 2013 21:21 ]
Заголовок сообщения:  Re: Особенности версионности с составными документами

Valery Solovey писал(а):
И слияние и уведомление о коллизиях замечательно работают в гите уже сейчас. Даже с документами ББ. Проблема не в том, что это не делается. Проблема в том, что в случае коллизии система контроля версий только и сможет сказать "у вас коллизия". И чтобы с ней разобраться, придётся вручную сравнивать два документа.
Проблема в том, что никакая система контроля версиий не способна различить коллизии на уровне алгоритма, а срабатывает только на уровне строк, насколько я знаю.

Автор:  Valery Solovey [ Пятница, 16 Август, 2013 21:26 ]
Заголовок сообщения:  Re: Особенности версионности с составными документами

Илья Ермаков писал(а):
слияние конфликтующих изменений
Почему конфликтующих? Просто изменений.

Автор:  Роман М. [ Пятница, 16 Август, 2013 21:29 ]
Заголовок сообщения:  Re: Особенности версионности с составными документами

Илья Ермаков писал(а):
Так, теперь выяснилось, что под автослиянием коллеги понимают слияние веток (наборов файлов). А не слияние конфликтующих изменений одного файла.
Именно так. Собственно, одна из проблем при работе с контролем версий - это когда VCS автоматически пытается слить два файла в один, порождая конфликт. Благо, конфликты сам он не решает, а оставляет разработчику.
На работе использую git, редко - Subversion.

Автор:  Роман М. [ Пятница, 16 Август, 2013 21:32 ]
Заголовок сообщения:  Re: Особенности версионности с составными документами

Иван Кузьмицкий писал(а):
Проблема в том, что никакая система контроля версиий не способна различить коллизии на уровне алгоритма, а срабатывает только на уровне строк, насколько я знаю.
Если можно, лучше привести пример, при котором при слиянии веток произойдёт конфликт на уровне программы, при участии VCS в авто-слиянии.

Автор:  Valery Solovey [ Пятница, 16 Август, 2013 21:43 ]
Заголовок сообщения:  Re: Особенности версионности с составными документами

Иван Кузьмицкий писал(а):
Проблема в том, что никакая система контроля версиий не способна различить коллизии на уровне алгоритма, а срабатывает только на уровне строк, насколько я знаю.
Алгоритмы в Обероне останутся алгоритмами и после переписывания на других языках. Так что с одной стороны - да, если могут существовать коллизии на уровне алгоритма, то эти инструменты их не обработают правильно (как и ещё многое другое), но с другой стороны, в обычных текстовых файлах других языков программирования они тоже не могут быть обработаны. А самое приятное, что это и не надо. Поэтому-то инструменты контроля версий и могут существовать.

Иван Кузьмицкий писал(а):
срабатывает только на уровне строк, насколько я знаю.
Задача обнаружения конфликта - это задача на пересечение множеств. Есть один дифф с группой изменений. Каждое изменение представлено диапазоном. Диапазоном байт в простейшем случае. Появляется ещё один дифф. Если какой-то из диапазонов нового диффа пересекается с диапазоном первого, то имеем конфликт.

Пользователю дифф-файл представляется в виде строк потому, что так ему удобнее определять места изменений: проще ориентироваться в исходнике.

Автор:  ilovb [ Пятница, 16 Август, 2013 22:23 ]
Заголовок сообщения:  Re: Особенности версионности с составными документами

Роман М. писал(а):
Если можно, лучше привести пример, при котором при слиянии веток произойдёт конфликт на уровне программы, при участии VCS в авто-слиянии.

Все просто. Если система автослияния ничего не знает о структуре содержимого текстовика, то конфликт это файл который правился в обеих ветках. Если система умеет распарсить текст до процедур, то конфликт это процедура, которая правилась в обеих ветках. И так далее...

Т.е. все зависит от того, на сколько глубоко ситема может проанализировать исходник и построить по нему структурное дерево. В 1С мердж работает на уровне процедур, например.

Автор:  ilovb [ Пятница, 16 Август, 2013 22:36 ]
Заголовок сообщения:  Re: Особенности версионности с составными документами

Вот еще информация в тему:
Цитата:
Ну вот допустим есть некий модуль версии 1.0. В модуле две процедуры А() и В()
Два человека независимо друг от друга вносят изменения в свои копии этого модуля, т.е. появляются два потомка.

Сравнивая три файла (исходный и два потомка) мы обнаружим что каждая процедура:
1) Не изменялась ни у первого, ни у второго потомка
2) Изменялась только у первого
3) Изменялась только у второго
4) Изменялась у обоих

Понятно, что в первых трех случаях слияние можно сделать автоматически. А четвертый конфликтный вариант придется делать вручную.

Ну вот как то так. :)

http://oberspace.dyndns.org/index.php/t ... ml#msg4269

Автор:  Илья Ермаков [ Суббота, 17 Август, 2013 18:20 ]
Заголовок сообщения:  Re: Особенности версионности с составными документами

Valery Solovey писал(а):
Илья Ермаков писал(а):
слияние конфликтующих изменений
Почему конфликтующих? Просто изменений.


Ну, в том же Mercurial любые изменения, параллельно сделанные, даже если они относятся к разным файлам, всё равно нуждаются в pull - merge - commit для их слияния. Меня это сначало дико удивило после SVN :)

Автор:  Иван Денисов [ Суббота, 17 Август, 2013 18:47 ]
Заголовок сообщения:  Re: Особенности версионности с составными документами

Все что нужно, на мой взгляд, чтобы F9 не пропускал отображения и различия в форматировании при анализе документов! Тогда все будет зашибись. Ведь не только код приходится сравнивать, а еще и документацию бывает.

Автор:  ilovb [ Воскресенье, 18 Август, 2013 15:15 ]
Заголовок сообщения:  Re: BlackBox Merge tool

Илья Ермаков писал(а):
Если хотите мое мнение глобальное, перспективное - то я за семантическое представление исходников

А у нас тут однако мысли сходятся. :)
От txt в исходниках нужно уходить. Странный это процесс... хранить в txt и каждый раз парсить для синтаксического контроля, подсветки и прочего... Да и редактировать по сути дерево как текст тоже странно. Но я об этом не заикаюсь, т.к. не представляю как это реализовать. И уж на это точно никто не пойдет в ББ :D

Автор:  ilovb [ Среда, 21 Август, 2013 15:30 ]
Заголовок сообщения:  Re: BlackBox Merge tool

Илья Ермаков писал(а):
А всё, в конечном счёте, из-за не столь нужной фичи автослияния ))


Вот прям сейчас подвернулся жизненный пример. :D
Пилю значит одну разработку. Клиент делает перепостановку задачи в начале месяца и просит внести изменения до конца месяца. На данный момент я эти изменения закодил, но не тестировал, т.е. отдать в продакшен не могу. Сегодня звонит клиент и говорит что нужно кровь из носа запилить дополнительную фичу до конца месяца. Ресурсов у меня не хватит на то и другое. Договариваюсь, что предыдущую задачу откладываем на след. месяц.
Обе задачи вносят изменения в логику одного и того же алгоритма, который, естественно, заключен в одном модуле. Сейчас я нахожусь на ревизии 469. Мне нужно вернуться к ревизии 450, выделить ветку и закодить вторую задачу. А в след. месяце нужно будет допилить задачу в первой ветке, и выполнить слияние.

Вот такой простой жизненный пример.

Автор:  Иван Кузьмицкий [ Среда, 21 Август, 2013 16:11 ]
Заголовок сообщения:  Re: BlackBox Merge tool

ilovb писал(а):
...Клиент делает перепостановку задачи в начале месяца и просит внести изменения до конца месяца. На данный момент я эти изменения закодил, но не тестировал, т.е. отдать в продакшен не могу. Сегодня звонит клиент и говорит что нужно кровь из носа запилить дополнительную фичу до конца месяца. Ресурсов у меня не хватит на то и другое. Договариваюсь, что предыдущую задачу откладываем на след. месяц.
Обе задачи вносят изменения в логику одного и того же алгоритма, который, естественно, заключен в одном модуле. Сейчас я нахожусь на ревизии 469. Мне нужно вернуться к ревизии 450, выделить ветку и закодить вторую задачу. А в след. месяце нужно будет допилить задачу в первой ветке, и выполнить слияние.

Вот такой простой жизненный пример.


Если изменения в двух ветках затрагивают существенные элементы одного и того же алгоритма, то в результате автослияния получится неработающий фарш.

Если же автослияние не сломает ничего, то изменения вносятся, по сути, в разные алгоритмы.

Автор:  ilovb [ Среда, 21 Август, 2013 17:02 ]
Заголовок сообщения:  Re: BlackBox Merge tool

Да нет, все норм.

Процедура Алгоритм()
...
Подалгоритм1() // тут изменения по первой задаче
...
Подалгоритм2() // тут изменения по второй задаче
... // несколько правок в основной процедуре по первой задаче
КонецПроцедуры

Никакого фарша.

Автор:  Иван Кузьмицкий [ Среда, 21 Август, 2013 18:01 ]
Заголовок сообщения:  Re: BlackBox Merge tool

Совершенно случайно так получилось, что вносимые изменения не пересекаются, не ломают логику процедуры и не портят контракт.

Автор:  Борис Рюмшин [ Среда, 21 Август, 2013 18:06 ]
Заголовок сообщения:  Re: BlackBox Merge tool

ilovb писал(а):
Вот такой простой жизненный пример.

В общем-то, потому что везде такая хреновая организация производства и возникают такие инструменты как merge в хранилищах.

P.S. На всякий случай уточняю: хранилища с версиями нужны сами по себе.

Автор:  ilovb [ Среда, 21 Август, 2013 18:59 ]
Заголовок сообщения:  Re: BlackBox Merge tool

Иван Кузьмицкий писал(а):
Совершенно случайно так получилось, что вносимые изменения не пересекаются, не ломают логику процедуры и не портят контракт.

Может быть. А может быть и наоборот. Не помню случаев когда при слиянии изменения пересекались. Возможно я очень везучий. Но мне кажется, что как раз пересечения маловероятны.
В любом случае слияние конфликта делает человек...

Автор:  Борис Рюмшин [ Среда, 21 Август, 2013 19:02 ]
Заголовок сообщения:  Re: BlackBox Merge tool

Только человек не всегда сможет учесть побочные неочевидные эффекты...

Автор:  ilovb [ Среда, 21 Август, 2013 19:11 ]
Заголовок сообщения:  Re: BlackBox Merge tool

Борис Рюмшин писал(а):
В общем-то, потому что везде такая хреновая организация производства и возникают такие инструменты как merge в хранилищах.

Не очень понимаю о какой организации вы говорите.
Про то, как клиент ставит задачи?
У нас так всегда. Это нормальный рабочий момент.

Страница 2 из 4 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/