Я работаю над простой системой управления версиями текстовых файлов в Java.Когда используется команда commit, я вычисляю разницу между последней версией и последней зафиксированной версией и сохраняю ее.Я написал код для создания файла сравнения и восстановления исходного файла.Проблема здесь в том, что я чувствую, что для очень большой истории коммитов мне придется воссоздать последнюю зафиксированную версию и затем использовать diff.Это также будет иметь место, когда я извлекаю предыдущую версию файла.Таким образом, используя мой алгоритм, мне придется использовать мой первый коммит (который содержит все исходные данные, а не diff), а затем продолжать применять алгоритм регенерации для следующего diff.Это займет очень много времени.Я с нетерпением жду, чтобы сделать это быстрее и эффективнее.Можете ли вы сказать мне, как мне это сделать?
Кроме того, не все различия рассчитываются в том же порядке, который указан. То есть, если у меня есть два файла, file1
и file2
, я вычисляю разницу какэто: diff(file1, file2);
и diff(file2, file1);
.И я сохраняю только файл, который меньше по размеру.Другой файл, я его удаляю.Я хотел бы знать, если это хороший подход?
Мне нужен только какой-то способ решения этой проблемы.Не исходный код.