контроль версий документа в PHP - PullRequest
2 голосов
/ 16 декабря 2009

Если у меня есть приложение PHP, которое позволяет пользователям вносить изменения в документы, как лучше всего реализовать отслеживание изменений для каждого документа? Я хочу, чтобы хранилище каждой ревизии было разделено (т. Е. Сохранить только внесенные изменения), как это делают svn и другие SCM с кодом. Я очень просто знаю, как это работает, но когда я начинаю думать о его реализации, я немного растерялся.

Прежде всего, мне интересно, есть ли какая-нибудь библиотека, которая может мне в этом помочь, так что мне не нужно полностью катать свою собственную.

И мне интересно: должен ли я сохранить полный текст только исходного документа, а затем только сохранить изменения, или мне следует сохранить полный текст самого последнего документа, и каждый раз, когда он изменяется, сохраняйте различия как одна из старых ревизий?

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

Как я могу выполнять операции типа diff / patch в PHP, чтобы упростить процесс деления и восстановления страниц?

Стоит ли иметь блокировку на страницах при их редактировании? Или пусть страницы попадают в «состояния конфликта» и имеют операции разрешения конфликтов - пусть два пользователя изменяют одну и ту же страницу одновременно, если они изменяют разные части и т. Д. - я схожу с ума, думая о том, насколько это будет сложно. Ааа!

Ответы [ 2 ]

2 голосов
/ 16 декабря 2009

Этот предыдущий вопрос SO может помочь.

0 голосов
/ 16 декабря 2009

Почему вы не используете сервер Subversion? Вы можете получить доступ к клиенту из консоли, используя exec() или аналогичный. Это действительно не стоит реализовывать что-то подобное с нуля, если только вы не пишете версию программного обеспечения.

...