Skip to content

Внесение изменений

Здесь расположена документация по внесению изменений и новой функциональности в код.

Для контроля версий используется git: https://git-scm.com.

Пререквизиты#

  1. Склонированный репозиторий:

    git clone https://github.com/HyperLEDA/db-app.git
    cd db-app
    

  2. (желательно) Установленное согласно инструкции окружение.

Перед внесением изменений#

Большую часть из перечисленного ниже можно делать не в терминале, а в интерфейсе многих редакторов кода, таких как VSCode, Pycharm, Spyder и других.

Перед внесением любых изменений очень желательно:

  1. Скачать последние изменения в репозитории:

    git pull
    

  2. Переместиться на ветку master (ветка с самым актуальным состоянием приложения):

    git checkout master
    

  3. Создать локальную ветку для своих изменений:

    git checkout -b my-branch
    

Далее можно вносить изменения.

Тестирование изменений#

Чтобы убедиться, что новая функциональность не сломала старую, можно в любой момент времени запускать тесты.

Быстрый базовый набор тестов:

make test

Более медленный, но более полный набор тестов:

make test-all

Фиксирование изменений#

Чтобы зафиксировать версию своих изменений (сделать коммит) нужно:

  1. Посмотреть статус изменений:

    git status
    

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

    Кроме того, она выведет ветку, на которой сейчас происходят изменения. Нужно убедиться, что она указана верно (если написано master - не верно :) ).

    Пример:

    > git status
    On branch issue-7-docs-update
    
    Changes not staged for commit:
    (use "git add <file>..." to update what will be committed)
    (use "git restore <file>..." to discard changes in working directory)
            modified:   app/lib/testing/__init__.py
    
    no changes added to commit (use "git add" and/or "git commit -a")
    

  2. Закоммитить изменения:

    git add . # подготавливает все измененные и новые файлы к коммиту
    git commit -m "description of my changes" # фиксирует изменения
    

Отправка изменений в удалённый репозиторий#

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

Для этого нужно:

  1. Отправить ветку в удалённый репозиторий (GitHub):
    git push -u origin my-branch
    
  2. Создать Pull request: на странице репозитория в GitHub во вкладке Pull Requests нажать кнопку New pull request и в меню compare выбрать свою ветку. Далее нажать кнопку создания.

    Далее изменения будут доступны для просмотра и будут запущены автоматические проверки. Если проверки успешны, можно влить Pull request в master нажатием кнопки Squash and merge.

Новые коммиты можно добавлять в этот же Pull request командой

git push

В этот момент git попытается отправить на GitHub слепок изменений. Скорее всего, он запросит аутентификацию. В качестве логина нужно ввести логин на GitHub, в качестве пароля - токен со страницы https://github.com/settings/tokens/new. На этой странице нужно поставить галочку на скоупе repo.

После вливания ветки в мастер коммитить в неё больше нельзя - нужно создавать новую. Удалить ветку локально можно командой

git branch -d my-branch

И получить последнюю версию мастера (с только что влитыми изменениями) можно командой

git pull