Git. Что?
И снова здравствуйте. В этом посте речь пойдет о Git, для чего он создавался и о том как его можно использовать НЕ по назначению. Поехали.
Я что на программиста похож?
По примеру предыдущего поста напишу короткий экскурс для тех, кто вообще ничего не слышал про Git, чтобы было хотя бы общее понимание темы. Все, кому лишние пояснения не требуются - смело скипайте эту часть. Если же вы очень уверенный пользователь ПК, искушенный пользователь GitHub/Lab/other - то можете и вовсе закрыть эту статью, ничего нового вы для себя здесь не почерпнёте.
Итак. Git - это система контроля версий, созданная Линусом Торвальдсом (да да, тем же чуваком, который создал Linux), увидевшая свет 7 апреля 2005 года. Если интересна история, тогда вам сюда.
Что за зверь такой - система контроля версий? Отправлять на википедию не буду, объясню по простому. Представьте себе, что вам на работе приходится постоянно работать с большими объёмами текста, который вы и ваши коллеги совместно изменяете каждый день по нескольку раз. До какого то момента можно обойтись FTP сервером с файлами, гугл диском или любым другим облаком. Но рано или поздно наступит момент, когда изменений будет настолько много, что "ручной контроль" уже физически будет невозможен. Как следствие - бардак, беспредел, треш и содомия.
Тут на помощь приходит автоматизация. Система контроля версий (например Git) выполняет одновременно несколько функций. Во первых она выступает в роли файлового хранилища, из которого в любой момент можно загрузить последнюю актуальную версию вашего проекта. Во вторых - система хранит всю историю изменений в проекте с момента его создания. Фишка заключается в том, что хранятся не копии файлов, а только изменения в них с информацией о том кем и когда это изменение было сделано. То есть если вы измените одну строчку - в истории будет сохранён не файл целиком, а лишь эта самая строка (или несколько). В третьих отдельные члены вашей команды могут сделать вилку
Не, не эту. Вот эту:
Так сказать "ответвиться" от основного хранилища и в своей уютной ветке/вилке творить беспредел, выгрузка которого в главную ветку может закончиться коллективными пиздюлями от коллег. А после успешного окончания задачи отгружать "чистовую" версию своих изменений. Ветки можно синхронизировать между собой или же сливать (англ. merge) две ветки в одну.
Такой подход позволяет поддерживать порядок с самого начала работы над проектом и всегда иметь возможность откатиться на последнюю рабочую версию, если что-то пойдёт не по плану.
Если интересно больше узнать о возможностях Git или научиться с ним работать документация к вашим услугам. Мы же собрались здесь для того чтобы использовать его не так, как было задумано изначально. Приступим.
Ну и чё ты там придумал?
Во первых стоит упомянуть о том, что GitHub можно использовать как бесплатный хостинг для простеньких сайтов. Как?
В чём выгода? Зависит от того кто вы.
- Если вы начинающий веб дизайнер - очень полезно иметь под рукой наглядные примеры ваших работ, на собеседовании вы можете неплохо повысить свои шансы, просто открыв ваши поделки в браузере с телефона или ноутбука.
- Если вы частный предприниматель и вам нужен простой сайт-визитка из одной-двух страниц. Неплохой способ сэкономить на аренде хостинга (хотя это уж для самых жадных, обычные хостинги стоят каких-то копеек).
Но это так, между прочим. Для кого-то эта информация и вовсе не будет новостью. Так что перейдём к моим гениальным идеям.
GitLab вместо органайзера
На работе меня познакомили и плавно интегрировали в GitLab. Потому примеры буду приводить именно на нём, хотя всё то же самое можно провернуть и тут
Так вот. Даже если вы не работаете с кодом и вам ничего не нужно (или нельзя) хранить в общем доступе на сервере. Вам всё ещё доступна та часть сервиса, которая создавалась для проект менеджеров. Посмотрим поближе.
Вот с этого момента начинается самое интересное. Не важно кого вы пытаетесь менеджить - сами себя, свою группу в универе, своих подчинённых на работе - принцип один и тот же. Создаём новый проект и смотрим что у нас есть в распоряжении.
В части с репозиторием можете загрузить любые файлы, если есть такая необходимость. Интерфейс достаточно интуитивный, думаю здесь пояснения не требуются. Храните тут свой диплом, фотки с последней вписки, или оставьте всё как есть. Если вы собираетесь использовать гит для управления своими работниками - можете хранить здесь файлы которые нужны в быстром доступе для всех. Не забудьте добавить участников к проекту, если собираетесь пользоваться ним для работы, либо сделайте ваш проект публичным в момент создания, чтобы всё что происходит внутри было доступно любому желающему по ссылке. Идём далее.
Изначально сервис был на английском языке. Если у вас с ним проблемы - язык можно сменить в настройках, но разработчики честно написали, что функция экспериментальная и переводы могут быть кривыми и неполными. Так что раздел Issues (вопросы, проблемы) вы видите в чудном переводе "Обсуждения". Не важно. Что тут делать? Вы по сути создаёте задачу и можете:
- Форматировать текст, пилить таблицы, добавлять ссылки, списки.
- Прикреплять файлы
- Назначить дедлайн (За день до конца всем участникам проекта будет автоматически отправлен email c напоминанием)
- Назначить ответственного
- Если задача масштабная - можно разбить её на подзадачи "Milestones".
- Добавить теги, концепцию тегов нужно обьяснять? "Срочно", "Не срочно", "Готово", "Обосрался с решением", на что фантазии хватит.
Нажимаем "Создать" и наша задача появляется в общем списке задач. Если в списке накопится много всего - можно искать по тегам.
Идём далее и заходим в "Доски". Видим, что для каждой созданной метки можно создать отдельную доску, чтобы все задачи по каждой категории были перед глазами. Дальше всё зависит только от вашей фантазии. Можете вообще не пользоваться досками, либо наоборот раскидать все ваши задачи по категориям и любоваться на их стройные ряды.
Свою продуктивность (а также продуктивность ваших сотрудников) можете отслеживать в своём профиле. Тут есть история всех ваших действий и красивая графическая диаграммма.
Хорошо. С этим вроде разобрались. А что дальше? Тут я попрошу вас включить фантазию и представить как с этим функционалом можно организовать группу в универе/школе - копии конспектов, книги, материалы по прошлым годам, шпоры хранить в репозитории. В "обсуждениях" вывешивать информацию о грядущих тестах, расписание экзаменов, объявления о найденных вещах, сбор денег на <вставить своё>.
Неплохо, но давайте добавим немного безумия.
Путешествия и Git. Уже не так тривиально? Поясняю. В теги добавляем точки маршрута в виде "Прага", "Вена", "Минск", "Крыжополь". В обсуждения скидываем примерный план для каждого места, например по названию достопримечательности в духе "Синагога", "Памятник бобру", ну вы поняли. Прямо во время путешествия, либо после него можно загрузить в репозиторий фотографии. А теперь внимательно следим за руками:
Когда готовы загрузить фотку - в описании добавьте номер обсуждения (вместе с решёткой). Нажимаем загрузить. Теперь смотрим что у нас поменялось в обсуждении.
Так как мы в описании указали номер обсуждения - ссылка на наш коммит автоматически появится в обсуждении.
Осталось только отредактировать обсуждение и в описание запилить вдохновенный трип-репорт. Название есть, история есть, фотки загружены, ссылка на них есть в комментариях. Скидываем друзьям ссылку на доски из вашего проекта (не забыв сделать его публичным) и что они видят? Аккуратный таймлайн вашего путешествия с отчётами по каждому городу и месту в этом городе, с прикреплёнными автоматом ссылками на фотографии.
Охапка дров, тревелблог готов.
Один минус. Если хочется загрузить сразу несколько файлов - придётся освоить работу с гитом через терминал. Но мы ведь здесь собрались чтобы насиловать систему, заставляя делать её то, чего она делать не должна, верно? Без издержек никуда.
Идей для использования гита не по назначению масса. Зарегистрируйтесь, попробуйте что-то новое для себя. Включите фантазию и выдумайте свой сценарий. А затем можете присоединиться к чату и вкинуть свою охуительную идею в общую копилку, ну или же сообщить мне всё, что вы думаете об этом посте, мне, моей родословной.
Просто сохраняйте файлы, постигайте (селф)менеджмент или ведите тревелблог с Git. Никогда и ни в чём не довольствуйтесь лишь одним сценарием использования. Будьте голодными, генерируйте идеи, реализуйте их или делитесь ими с остальными.
Ну а руки мойте с мылом. Маму - любите.