TWiki автоматически объединяет Одновременное редактирование .
TWiki допускает множественное одновременное редактирование одной и той же темы, а затем автоматически объединяет различные изменения. Вы, вероятно, даже не заметите этого, если не будет конфликта, который нельзя объединить автоматически. В этом случае вы можете увидеть, как TWiki вставляет «метки изменений» в текст, чтобы выделить конфликты между вашими правками и изменениями другого человека. Эти отметки об изменениях используются только в том случае, если вы редактируете ту же часть темы, что и кто-либо другой, и они указывают, как выглядел текст, каковы были правки другого человека и каковы были ваши правки.
TWiki предупредит, если вы попытаетесь отредактировать тему, которую редактирует кто-то другой. Он также предупредит, требуется ли объединение во время сохранения.
Была также некоторая документация от этой разрабатываемой функции, подробно описывающая, как она будет себя вести.
Основные принципы, которые я использовал при кодировании алгоритма слияния:
- Если возможно объединение без использования маркеров конфликта, сделайте это.
- Если возможно объединение с использованием маркеров конфликта, сделайте это.
- Если слияние невозможно, выигрывает последний заезд.
Стоит отметить, что TWiki имеет функцию, аналогичную переполнению стека, для свертывания последующих ревизий одним и тем же пользователем в течение определенного промежутка времени, и это вызывало ошибку, когда происходило в связи с объединением .
- Пользователь A редактирует тему
- Пользователь A сохраняет обороты N
- Пользователь B редактирует тему, поднимает обороты N
- Пользователь A снова редактирует тему, поднимает обороты N
- Пользователь A сохраняет изменения; сохранить видит, что изменение находится внутри ReplceIfEditiedWithin? окно, , поэтому не увеличивает число оборотов
- Пользователь B сохраняет, код видит, что число оборотов на диске не изменилось, так как они начали редактировать , поэтому не обнаруживает необходимости слияния.
Также стоит отметить, что TWiki предупредит второго пользователя, что тема редактируется:
Так я и придумал понятие "аренда". Когда тема редактируется, по ней берется договор аренды на определенный период времени (по умолчанию 1 час). Если кто-то еще пытается отредактировать, ему говорят, что тема уже есть, но это не мешает редактированию. Это не замок, это просто способ дать им совет. Слияние по-прежнему является основным механизмом разрешения; аренда носит исключительно консультативный характер. Если пользователь - или плагин - отказывается от темы, потому что у кого-то есть аренда, ну, это плагин.
Описательный комментарий в TWiki.cfg выглядит следующим образом:
# When a topic is edited, the user takes a "lease" on that topic.
# If another user tries to also edit the topic while the lease
# is still active, they will get a warning. The warning text will
# be different depending on whether the lease has "expired" or
# not i.e. if it was taken out more than LeaseLength seconds ago.
обратите внимание, что терминология аренды предназначена только для разработчиков, а не для конечных пользователей.