Автор: Астахова Ксения
Локальная система контроля версий, реализованная как консольная утилита.
- 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.