Skip to content

Latest commit

 

History

History
59 lines (48 loc) · 2.73 KB

README.md

File metadata and controls

59 lines (48 loc) · 2.73 KB

CVS

Автор: Астахова Ксения

Описание

Локальная система контроля версий, реализованная как консольная утилита.

Требования

  • Python версии не ниже 3.8
  • click
  • setuptools

Состав

  • пакет команд: commands/
    • add.py
    • branch.py
    • checkout.py
    • commit.py
    • init.py
    • log.py
    • reset.py
    • squash.py
    • status.py
    • tag.py
  • модуль, содержащий класс, описывающий репозиторий: repository.py
  • тесты: tests/
  • абстрактный базовый класс для всех команд: command.py
  • модуль, содержащий класс позиции HEAD: position.py
  • enum (тип перечислений) для типа позиции: position_type.py
  • модуль с логикой промежуточной работы с файлами: file_manager.py
  • модуль, содержащий класс для многопоточного сжатия и распаковки данных в файлах: compressor.py
  • файл, с помощью которого из консоли можно вызывать модули: setup.py

Установка

pip install --editable .
или
python setup.py develop

Использование

Ввод команд, начиная с cvs.

Примеры

  • cvs init
  • cvs add file.txt
  • cvs commit -m some_commit_text
  • cvs log
  • cvs reset 4660a5c5d6bc3ea19123157d8e4d582aea8d8637
    Использование команд аналогично git

Справка

cvs --help
cvs {command} --help

Подробности реализации

Каждая команда является реализацией асбтрактного базового класса и должна определять метод execute, который вызывается из командной строки.
Работа с репозиторием осуществляется через класс Repository. В частности экземпляры класса хранят информацию о путях, могут предоставлять информацию о проиндексированных файлах, готовых к коммиту и т.д.
Также для удобства пользователей применяется библиотека setuptools в связке с click. Click предоставляет удобный интерфейс командной строки, а setuptools и скрипт setup.py позволяют собрать commands в пакет python.