Пишем web на Python3, сохраняем проект в Git

newbie

Опубликован:  2019-01-09T07:51:58.231549Z
Отредактирован:  2019-01-15T12:29:06.171664Z

Продолжаем работу над проектом selfish, который получил существенные изменения в предыдущем выпуске блога. Разработка web-приложения - достаточно длительный и сложный процесс, и мне необходимо его упорядочить по мере возможностей, поэтому для управления процессом разработки был выбран Git в качестве системы контроля версий, а при создании проекта в его базовом каталоге был инициирован git-репозиторий. В этом обзоре я расскажу, как правильно и осознанно сохранить первые изменения проекта в этот git-репозиторий.

Все действия я буду осуществлять в терминале, находясь в базовом каталоге проекта selfish с активированным виртуальным окружением, о чём свидетельствует приглашение командной строки моего терминала.

j6CkQlYtO4.png

Посмотреть изменения git-репозитория можно простой командой.

git status

0S7FJIsjvi.png

Из выхлопа этой команды следует, что git определил список новых файлов и каталогов, которые могут быть добавлены в репозиторий. В этом списке я вижу каталог __pycache__ и файл config.py, которые мне хотелось бы исключить из git-репозитория. Каталог __pycache__ содержит откомпилированный интерпретатором байт-код исполняемых файлов Питона, хранящиеся в нём файлы можно считать временными.

C файлом config.py всё немного сложней. Дело в том, что он хранит текущую конфигурацию selfish, и при развёртывании сервера этот файл с высокой долей вероятности получит некоторые изменения. Изменение файла влечёт автоматическое изменение состояния репозитория на развёртываемом сервере, чего мне хотелось бы избежать, поэтому я исключу этот файл из git-репозитория и заменю его копией.

cp config.py config.template.py

5ikWpSWfNm.png

Открываю файл .gitignore из базового каталога проекта и дописываю в этот файл два новых объекта.

CQNwhQR1M1.png

Второй момент, на который следует обратить внимание: каталог виртуального окружения не входит в git-репозиторий проекта. Это значит, что после клонирования проекта при развёртывании сервера мне потребуется восстановить виртуальное окружение. Создаю файл со списком зависимостей.

pip freeze > requirements.txt

4GZocIACak.png

Имея такой файл, виртуальное окружение можно будет достаточно просто восстановить, об этом я расскажу чуть позже в одном из следующих выпусков блога.

Следующий момент, мне хотелось бы оставить ссылку на уже доступное на этом сайте описание проекта в файле README.md. Открываю его и дописываю необходимую информацию.

WWdRmDcy13.png

Возвращаюсь в терминал и опять запрашиваю статус у git.

git status

pbn2JjGmco.png

На этот раз список потенциально возможных изменений меня полностью устраивает. Добавляю все изменения проекта в git.

git add .

Точка в конце команды обязательна, она указывает на текущий каталог. Просмотреть, что именно будет добавлено в репозиторий ближайшим коммитом можно достаточно просто.

git diff --staged

F3Xvnrzr3L.png

При помощи клавиш со стрелками информацию в окне можно прокрутить, выйти из пейджера можно клавишей q. Полезно будет ещё раз взглянуть на статус репозитория.

git status

6JZdBv51UE.png

Поскольку текущее состояние меня полностью устраивает, делаю коммит.

git commit -m"Create the application"

CuKjjJx8Dl.png

Теперь у проекта появился первый содержательный коммит и изменения можно запушить в gitlab.com.

1cJYsHzzTG.png

Следует заметить, что каталоги проекта deployment и tests пока не попали на git-сервер, так как в них пока нет ни одного файла. В процессе разработки и эти каталоги рано или поздно получат содержимое и появятся на git-сервере.

Таким образом, первые изменения проекта сохранены, и теперь я имею возможность продолжить работу над проектом и сосредоточить своё внимание на получении и добавлении в проект сторонних библиотек, необходимых для разработки клиентской части selfish, чему будет посвящён следующий выпуск блога. Вопросы, пожелания, предложения и всё остальное можно оставить в комментария ниже, мне будет очень интересно их прочесть. Продолжение следует...

Метки:  web, git, selfish
Комментарии: