Git

Недавно с коллегой посмотрели в канал gitlab в рабочем Slack и ужаснулись. Инженеры коммитят папочки с бинарниками прошивок, при этом папочки аккуратно названы номерами сборок прошивок:

  • Firmware v1.1
  • Firmware v1.8
  • Архив

Да, на русском языке. Сообщения к коммитам тоже пишут на русском, ну да ладно. Вчера серверный разработчик ходил к инженерам “помочь с git”, пришел чуть ли не седой. Говорит они берут проект, копируют папку и получают новый проект. Внутри конечно не вычишают .git и тащат за собой репозиторий другого проекта и так эта репа тянется из проекта в проект…

Решили срочно провести лекцию по git для инженеров на этой неделе :)


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

У него проекты в одном репозитории и разложены по папкам:

  • cpp
    • dll
    • tree
    • vector
  • javascript
    • framework
    • travels

А в корне репы лежит файлик git.sh следующего содержания:

#!/usr/bin/env bash
git add .
git commit -m "update"
git push origin master -f

Не знаю как в других компаниях, но у нас за такое могут по лицу ударить. Сообщения к коммитам нужно писать осмысленно, однажды сами себе спасибо скажете.


Сам я познакомился с git 1.5 года назад и было это так.

Раньше, когда я много писал на Delphi, я не использовал никаких средств для версионирования кода. Я копировал папку проекта и дописывал к ней название новой функциональности, а когда доделывал, то копировал изменения обратно в проект. Так продолжалось много лет, я терял исходники, путался и удалял или заменял не то, ломал программу, а истории для отката не было.

Со средствами для версионирования кода я впервые познакомился, когда устроился на работу в университет. В университете использовали SVN. Мы хранили репозиторий в отдельной папочке, а код из рабочей директории переносили руками через Araxis Merge. Это было муторно, но зато это помогало избежать конфликтов. Потом я переехал в Петербург и устроился на работу в проект 4Shared Music. Тут тоже использовали SVN, но уже было гораздо лучше. Коммиты делались из рабочей папки, веточки и никакого Araxis Merge.

Когда я пришел на работу в Ready For Sky, то мне довелось познакомиться с git. Я много слышал о нем, но плотно поработать не доводилось. Изначально мы внедрили Git Flow, коллеги прочитали для лекцию о пользе и удобстве этой методологии. Отдельные веточки под новые функциональности, релизы и хотфиксы это правильно.


В заключение посоветую почитать о git. Изучить git на практике можно на специальных сайтах, таких как https://try.guthub.io (на английском), http://pcottle.github.io/learnGitBranching/ (реализовано в виде игры с уровнями, присутствует русский язык)

Comments