110.92K

Программирование на языке Java. Версионность

1.

Программирование
на языке Java
Версионность

2.

Что надо было сделать?
Установить Postgres (сервер + клиент) Для чего
он?
Установить GitBash

3.

GitBash, расскажите, что вышло.
Что это такое?
Зачем его устанавливали?

4.

Работа Васи с кодом
Написать код.
Создать папку 2018-06-01
Внести изменения в код
Создать папку 2018-06-25
Если что-то сломалось при обновлении,
развернуть одну из старых папок. Извлечь код
и развернуть его.

5.

Какие проблемы вы видите?
Написать код.
Создать папку 2018-06-01
Внести изменения в код
Создать папку 2018-06-25
Если что-то сломалось при обновлении, развернуть
одну из старых папок. Извлечь код и развернуть его.

6.

Проблемы
Надо всё делать руками
Процесс не формализован (названия папок, пути)
Код который не доведен до продакшна надо называть,
хранить как-то иначе
Код в каждой папке ничего «не знает» о коде в
другой папке. А следовательно:
Нет истории изменений

7.

Вася запустил стартап VasyaSoft
Снял офис, принял на работу 2 разработчиков.
Передал им код.
1 программист работает над интерфейсом. 2 –
делает фичу для API.
Оба программиста отправляют Васе
обновления, он их собирает («билдит») и
готовит поставку.

8.

Задача
К предыдущей задаче добавить:
Программа должна вывести самое длинное слово и его
длину.
Пример:
Введите
Вася
Самое
строку:
пошел
гулять
длинное слово: гулять, длина 6

9.

Картинка ДжекиЧан.jpg

10.

Проблемы
При командной работе над продуктом
«папочно-файловый» подход превращается в
ад.
Как совместить код нескольких программистов?
Как проверять код который внес один из
программистов?

А если работать удаленно?

11.

Версионность
Для решения подобных проблем были
придуманы системы управления версиями
(VCS)
Git
Subversion (SVN)
TFS
Mercurial
И другие

12.

Итак, Git
Почему мы будем использовать Git?
Он модный
Очень популярен
Есть доступные всем репозитории
GitLab.com
GitHub.com
BitBucket.com

13.

А что такое GitBash?
GitBash – программа (git клиент) для
Windows, которая позволяет выполнять
команды для управления кодом.
В Linux подобных системах используется
git клиент
sudo apt-get install git

14.

Устанавливаем git.
Кто не установил git клиент – делаем это сейчас…
После установки
Запускаем командную строку
Пишем
git version
Должно появиться что вроде
git version 2.19.2.windows.1

15.

Хранилище
Хранилище (репозиторий, проект) – это
место, где хранится код. В нашем случае
хранилище будет располагаться на сервере
github.com
https://github.com/JavaItAcademy/itacademy
Лучше использовать подход один проект –
одно хранилище
1. Обучение, 2. «Работа на дядю» итд

16.

Клонировать репозиторий
Есть 2 способа.
Скачать проект как zip (нам не интересно)
Склонировать через git
Запустить gitBash (или командную строку)
Перейти в нужную папку (куда будете разворачивать проект),
напр D:/JavaWorks/
Выполнить команды
git init
git clone https://github.com/JavaItAcademy/itacademy
Проверить создались ли файлы

17.

Работа с проектом
Теперь проект развернут у вас на компе.
Открыть его через IDE
Настроить Settings в IDE (File – Settings –
Version Control – GitHub – Add account)

18.

Архитектура vcs
Есть 2 хранилища
Удаленное (в нашем случае на github)
Локальное (на вашем компе)
Обычное изменение кода не хранится в
локальном хранилище! Это «просто код» не
помещенный в репозиторий.
Для того чтобы сохранить код в локальном
репозитории нужно выполнить команду commit

19.

Ветки
Ветка (branch) это «направление разработки».
В проекте может быть много направлений.
production- промышенная (master, иногда
developer)
«Фича для Алексея Петровича»
«Работы по ssh сертификату»
«Проверка распараллеливания»
«Песочница для unit тестов» итд

20.

В IDE
Создать branch со своим именем (нажать на
Git:master в правом нижнем углу – new Branch)
При создании ветки в IDE вы автоматически
переходите в нее (переключение по ветке - checkout)
Создать [МоёИмя].java файл
Сделать commit (сохранить изменение в локальном
репозитории) в IDE.
В окне выделить только тот файл, который вы добавили.
Добавить комментарий.

21.

Удаленный (remote) репозиторий
Используется 3 команды для работы с удаленным
репозиторием
fetch – обновить (синхронизировать) ссылки
push – поместить код из локального хранилища в
удаленный (отправить свои изменения команде)
pull – поместить код из удаленного хранилища в
локальный (забрать себе изменения команды)

22.

Задача
Скопировать свой файл [МоёИмя].java в
удаленный репозиторий, в ветку developer
Перед копированием забрать себе изменения,
которые сделала команда
Внести изменения в свой файл. Снова
отправить их на remote
Изменить чужой файл. Но изменения вывести в
ветку fun на remote

23.

Частые проблемы в git
Не актуальный локальный репозиторий (remote «ушёл
вперёд», а вы пытаетесь обновить туда данные с local)
Решение – сделать pull (забрать всё что есть в remote)
Конфликт – система не может сделать push или pull т.к
код в remote и local невозможно автоматически
сдружить.
Решение – resolve conflicts
Line endings – git считает что файл новый потому что в
linux и win разные символы для переноса строки
Настроить endings через settings в IDE

24.

Узнаем по ходу сессии
Слияние веток
Удаление веток

25.

Спасибо за внимание!
English     Русский Правила