Только тогда либо придётся вводить какую-то неплоскую структуру файлов в файловой системе, или новые сложные форматы (помнишь виселицу?) для просто записываемых нынче данных. И специальный парзер в том же CVSе, который будет уметь разбираться со всем этим.
Виселицу помню, как же :) Но минимум человек просто нужно на ней вешать, а то не добиться прогресса. Принцип Оккама тоже иногда приходится нарушать по той же причине :)
Думаю, что проблема "подшивания истории" решаема. В существующем Макинтоше файлы по сути - двойные (собственно, содержание и ресурсы). NB: Это не призыв переходить к неплоским файлам, просто возможность реализовать необходимый нам механизм в рамках существующей системы.
Но я бы предложил сопровождать один файл другим, плоским файлом. Примерно как видео-фильм сопровождается файлом субтитров. Дёшево и удобно.
Ведь история изменения естественно разбивается на линейную последовательность событий. Вот эти события мы и запишем по порядку. Так, чтобы их можно было скормить породившему его редактору с целью применения. Фотошопу скормим последовательность фильтров с параметрами. Текстовому редактору - последовательность изменений в тексте. Wave-редактору - последовательность wave-преобразований, и так далее.
Главное - чтобы редактор сам умел прикладывать порождённые собой "патчи". Всё, что остаётся реализовать на уровне CVS - это некий weakly-restricted мета-формат событий "обобщённого вида", в рамках которого события будут описываться уже с точки зрения надобности каждому специфическому пакету. CVS будет парзить этот формат, а дальше делегировать патчи пакетам, которые в состоянии понять суть содержимого.
мета-история :)
Date: 2005-02-09 07:04 am (UTC)Виселицу помню, как же :) Но минимум человек просто нужно на ней вешать, а то не добиться прогресса. Принцип Оккама тоже иногда приходится нарушать по той же причине :)
Думаю, что проблема "подшивания истории" решаема. В существующем Макинтоше файлы по сути - двойные (собственно, содержание и ресурсы). NB: Это не призыв переходить к неплоским файлам, просто возможность реализовать необходимый нам механизм в рамках существующей системы.
Но я бы предложил сопровождать один файл другим, плоским файлом. Примерно как видео-фильм сопровождается файлом субтитров. Дёшево и удобно.
Ведь история изменения естественно разбивается на линейную последовательность событий. Вот эти события мы и запишем по порядку. Так, чтобы их можно было скормить породившему его редактору с целью применения. Фотошопу скормим последовательность фильтров с параметрами. Текстовому редактору - последовательность изменений в тексте. Wave-редактору - последовательность wave-преобразований, и так далее.
Главное - чтобы редактор сам умел прикладывать порождённые собой "патчи". Всё, что остаётся реализовать на уровне CVS - это некий weakly-restricted мета-формат событий "обобщённого вида", в рамках которого события будут описываться уже с точки зрения надобности каждому специфическому пакету. CVS будет парзить этот формат, а дальше делегировать патчи пакетам, которые в состоянии понять суть содержимого.