Git

part 1

Систем контроля версии не существует

Jit

Надо как то хранить код

Например так

Но без истории совсем грустно :(

Но без истории совсем грустно :(

cd /project/project1/
mv ./ ./code

Поэтому после завершения каждой фичи будем делать папку

Что же я делал ? :(

Будем писать что делали

Структура папок

Первый релиз

Кодим дальше

Но критикал баг в проде :(

Исправили, но куда сохранить fix?

Линейная организация не подходит :(

Направленный ациклический граф

Как преобразовать список в дерево?

Добавить ссылку на предыдущий снапшот

Получилась такая логическая структура

snapshot-98
snapshot-99 (release 1.0.0)
snapshot-100
...
snapshot-148
snapshot-149
snapshot-150 (release 1.0.1)
snapshot-151
snapshot-152
snapshot-153 (release 1.0.3)
snapshot-154

Но как определить последний комит в ветке ?

snapshot-98
snapshot-99 (release 1.0.0)
snapshot-100
...
snapshot-148
snapshot-149
snapshot-150 (release 1.0.1)
snapshot-151
snapshot-152
snapshot-153 (release 1.0.3)
snapshot-154

Нам нужны бранчи

Сделаем их

теперь при каждом комите правим указатель

но мы захотели теги

Структура проекта

Но раз есть бранчи надо мержить

Сложнее

придется создать коммит 

У нас появился еще один разработчик !

просто копируем все папки ему на комп

это же почти децентрализированая система контроля версий

Вроде все норм

  • можно работать паралельно
  • офлайн
  • быстро смотреть историю и т.д.

Но есть проблема

кализия именн из за сквозной нумирации

Сделаем имена снапшотов уникальными

Было

Используем SHA1

de4bd295df663323aa83893be8f1bbc246a7f13c

Это и будет новое имя

Теперь дериктория выглядит так

Правила для коммитов

  • имеет уникальный ID
  • имя это SHA1 от:
    • состояние деректории на момент комита
    • сообщение
    • дата
    • имя предыдушего комита

Правила для коммитов

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

На этом проблемы не заканчиваются

Прошло пару месяцев

и на дисках стало кончаться место

проанализируем проблему

ТОДО

листинг комитов

Как можно избавиться от дублирования

А если сложить все файлы в одну директорию

Давайте посмотрим в реальный git

Давайте посмотрим в реальный git

Давайте посмотрим в реальный git

Давайте посмотрим в реальный git

Cgfcb,j pf dybvfybt

 

Dfib djghjcs

Git

By Sergey Andreev

Git

  • 904
Loading comments...

More from Sergey Andreev