version control system(hsenn practice project)
- Авторизация пользователей
- Структура стек, для контроля версий (если что, Петя знает что это)
- Работа с файловой системой a) Ф-ция для смены каталога b) Ф-ция для вывода списка файлов c) Ф-ция isDirectory (true если каталог, false - файл) d) Ф-ция создания/удаления файлов/каталогов e) Ф-ции удаления/записи в файл f) Ф-ции переименовывания файлов g) Ф-ция чтения в файлы
- Пользовательский интерфейс
##################################################### Документация VCS Мы разрабатываем систему VCS на языке Python – это система контроля версий, которая позволяет отслеживать изменения в проекте: изменения в коде программы, а так же появление новых файлов или удаление старых. Благодаря этой системе можно вернуться до любого состояния проекта, зафиксированного в системе. Более детальное описание нашей VCS и её ф-ций Мы собираемся реализовать следующие ф-ции: help - Вывести список команд show_prjs - Вывести список всех проектов set_prj - Выбрать проект add_prj - Добавить существующий проект set_ver - Выбрать версию проекта (по умолчанию стоит последняя версия) set_file - Выбрать файл проекта
add - Проиндексировать файлы
commit - Добавить проиндексированные файлы в финальную версию проекта
push - Добавить последние изменения на сервер
del_in_index - Удалить файл из индекса (отслеживаемых файлов)
del_file - Удалить файл из системы
get_status - Вывести текущее состояние всех файлов
show_log - Вывести историю коммитов
exit - Выход
Наша VCS будет использовать систему авторизации для нескольких пользователей. Это позволит отслеживать, когда и кем были сделаны изменения. Для сохранения внесённых изменений мы будем использовать stack, в котором будет содержаться следующая информация: Имя пользователя, дата, время и внесённые изменения.
Рассмотрим более подробно последний пункт. Изменения в проекте можно разделить на 3 категории: добавление нового файла, удаление файла и внесение изменений в существующий файл. Изменения мы будем вносить следующим образом. Для начала с помощью команды add мы проиндексируем нужный файл/файлы. Другими словами, мы скажем нашей VCS, чтобы она, после ввода этой команды, запомнила текущее состояние этого файла и добавила его в область для изменений. После добавления всех изменений, с помощью команды commit мы внесём изменения в наш проект, при этом зафиксировав состояние проекта до изменения. Так же в нашей системе будет присутствовать папка (global) с копиями всех проектов всех пользователей. Чтобы изменения, сделанные в папке пользователя, так же попали в папку global, необходимо воспользоваться командой push. Так как благодаря системе авторизации над одним проектом смогут работать несколько человек, то проект пользователя может отличаться от проекта в папке global. Поэтому работать в нашей системе можно только при условии, что проект, находящийся в папке пользователя и в папке global, совпадают. А для этого наша система будет сама, при условии согласия пользователя, обновляться до последней версии, то есть до состояния проекта, находящегося в папке global.