Вам потребуется версионное хранилище данных и алгоритм различий.
Храните версии своих ресурсов, присваивая каждому ресурсу номер редакции. Когда пользователь редактирует ресурс, вместо замены ресурса сохраните редактирование как новую запись в вашем хранилище данных с новым, более высоким номером ревизии. Если вы хотите получить ресурс, верните ресурс с самой высокой ревизией.
Вместо номера ревизии вы можете использовать метки времени. Мало того, что временные метки всегда увеличиваются, но и сам номер редакции может использоваться для определения, когда ресурс был изменен.
Выберите алгоритм сравнения, основанный на том, как вы храните ресурсы. Wikitext, как правило, аналогичен, поэтому, если пользователи его редактируют, имело бы смысл использовать diff различий, как стандартная утилита Unix diff
. Если ресурсы представляют собой XML, возможно, вы захотите найти специфичный для XML алгоритм сравнения, чтобы пользователям было понятно, в чем различия.