Как написать простую систему управления версиями? - PullRequest
22 голосов
/ 10 июня 2009

Я хочу создать простую систему управления версиями, но у меня нет идей, как структурировать мои данные и мой код.

Вот краткий пример:

  1. Пользователь входит в систему
  2. У пользователя есть два варианта при загрузке файла:
    • Отправить новый файл
    • Отправить новую версию файла

Пользователи должны иметь возможность видеть дерево. (другая версия) Дерево может быть только до 2 уровней:

|
|--File_A_0
 \--File_A_1
 \--File_A_2
 \--File_A_3
 \--File_A_4

Существует также 2 типа файлов: окончательный (последняя утвержденная версия) и черновая версия (последний загруженный файл). Файл будет физически храниться на сервере. Каждый файл принадлежит пользователю (или нескольким) и только одной группе.

Редактировать: Группы представляют собой группу документов, документ может принадлежать только ОДНОЙ группе одновременно. Пользователи НЕ зависят от групп.

Начало редактирования:

Вот что я сделал, но это не очень эффективно!

id_article | relative_group_id | id_group | title | submited | date | abstract | reference | draft_version | count | status

id_draft | id_file | version | date

Но сложно управлять, расширять. Я думаю, что это потому, что групповой параметр ...

Конец редактирования

Итак, вопросы:

  • Как я могу схематизировать мою базу данных?
  • Какая информация должна быть полезной чтобы версия этой работы?
  • Какая структура для папки, файлы?
  • Какие у вас есть советы, подсказки? делать такую ​​работу?

(Приложение разработано с использованием PHP и Zend Framework, база данных должна быть mysql или postgresql)

Ответы [ 13 ]

0 голосов
/ 16 июня 2009

Это не так просто, как кажется. Прочитайте эту статью Эрика Синка о последствиях хранения этих файлов.

Возможно, лучшим вопросом будет вопрос о том, какие файлы загружаются, и пригодны ли они для управления версиями (как текстовые файлы)

0 голосов
/ 13 июня 2009

Загрузка файлов идет к 1990-му =) Посмотрите на Google Wave! Вы можете просто построить все свое приложение на основе инфраструктуры управления версиями.

0 голосов
/ 10 июня 2009

Оформить ProjectPier (изначально ActiveCollab ). У него есть система, похожая на эту, и вы можете посмотреть на их источник.

...