Mar. 21st, 2014

wizzard: (Default)
Уважаемые френды, которые разделяют тезис «век живи, век учись»: а как вы его для себя обосновываете?

Ну т.е. это может быть какая-то аксиоматика а-ля «надо», «так принято», «в приличных кругах не поймут если не», либо сознательное «это ведет к достижениям», «к признанию», либо полубессознательное «боюсь стать ватником», «боюсь отстать от жизни» и т.д.

Вопрос имеет две цели:

а) у меня время от времени спрашивают всякие, гм, родители нерадивых учеников «что с ними сделать»
б) просто интересно же :)
wizzard: (Default)
Допустим, у нас есть функция 3-way merge, которая из трех версий O[rigin], A, B однозначно1 делает версию C

Как нетривиально2 обобщить эту функцию на такие случаи:

1. есть R1 (предок) и 3 головы (Ra:R1, Rb:R1, Rc:R1)

2. есть R1 (предок), Ra:R1, Rb:R1, и две головы (Rx:[Rb,Ra] и Rc:R1)

Как-то так. Мне главное чтоб сохранилось свойство консистентности, т.е. чтобы "в итоге" все, получив все наборы ревизий, пришли без дополнительных коммуникаций к одинаковому исходу.

Т.е. чтобы если ПОСЛЕ мержа примера (1) участники узнали что кто-то вбросил голову Ry:[Ra,Rb] то оно смержилось в то же самое, во что смержится пример (2)

В терминах git/hg: мне надо чтобы после того как все один раз push --force, дождались когда пушнут все остальные и pull - автомерж выдал одинаковый результат

В качестве дополнительной инфы у ревизии есть автор, все ревизии от одного автора упорядочены по времени "до/после", но время ревизий двух разных авторов сравнивать нельзя. Т.е. vector clock.

--
1. т.е. merge(O,A,B) === merge(O,B,A), что достигнуто, например, лексикографическим упорядочиванием A, B по хэшу от их содержимого.
НО мерж не коммутативен, т.е. m(A,m(B,C))!=m(m(A,B),C)
2. решению задачи удовлетворяет тривиальная функция которая всегда возвращает null, но это, очевидно, не то)

UPD: предложили посмотреть http://en.wikipedia.org/wiki/C3_linearization , http://en.wikibooks.org/wiki/Understanding_Darcs/Patch_theory , смотрю
UPD2: да, я знаю про Operational Transformation и Commutative Replicated Data Types, это скорее второе.

Profile

wizzard: (Default)
wizzard

January 2019

S M T W T F S
  12 345
6789101112
1314 1516171819
202122 23242526
2728293031  

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 10th, 2025 01:19 pm
Powered by Dreamwidth Studios