Обновить
17

Git *

Система управления версиями файлов

Сначала показывать
Порог рейтинга
Уровень сложности

25 лучших репозиториев GitHub для разработчиков Python

Время на прочтение3 мин
Количество просмотров28K
Согласно опросу разработчиков на StackOverflow в 2020 году*, Python — один из самых любимых языков в мире. Что еще более интересно, Python — это язык, который разработчики больше всего хотят попробовать в своей работе. Если вы один из тех, кто использует Python и хочет прокачать свои знания, или один из тех, кто хочет изучить Python, вы попали в нужное место. Под катом 25 лучших репозиториев Python на GitHub.

Читать дальше →

Поддерживаем разработку нескольких версий продукта в Git. Станислав Лукьянов (GridGain)

Время на прочтение19 мин
Количество просмотров9.5K


Всем привет! Меня зовут Станислав Лукьянов. Я работаю в компании GridGain. Сегодня я хотел поговорить о том, как мы поддерживаем старые версии в Git.

Система контроля версий для hardware или чем на самом деле должен заниматься отдел стандартизации

Время на прочтение9 мин
Количество просмотров6.6K

До 2020 года я работал конструктором (разрабатывал электронику и электрику). Сейчас я сменил сферу деятельности, но считаю важным поднять вопрос, который возник в свое время пока он совсем не выветрился из головы. В статье затронута важность разработки стандартов в команде hardware разработчиков, а также приведен пример одного из стандартов для ведения репозитория для сборку.

Читать далее

И полгода не прошло: выпущена система управления версиями Git 2.29

Время на прочтение3 мин
Количество просмотров14K

Привет, %username%, сегодня отличная новость: в открытом доступе появился выпуск распределенной системы управления версиями Git 2.29.0. Наверное, на Хабре не стоит рассказывать, что это такое, ведь Git по-прежнему остается одной из лучших систем.

В новом выпуске — сразу 627 изменений, которые внесли 89 разработчиков. О главных изменениях и доработках рассказываем под катом.
Читать дальше →

Нетривиальное слияние репозиториев с помощью GitPython

Время на прочтение8 мин
Количество просмотров3.6K

Задача


Дано: проект на основе OpenWRT (а он — на основе BuildRoot) с одним дополнительным репозиторием, подключенным как feed. Задача: слить дополнительный репозиторий с основным.

Предыстория


Мы делаем маршрутизаторы и, однажды, захотели дать клиентам возможность включать свои приложения в прошивку. Чтобы не мучаться с выделением SDK, toolchain и сопутствующими сложностями, решили выложить весь проект на github в закрытый репозиторий. Структура репозитория:

/target   // скрипты для сборки ядер
/toolchain   // скрипты для сборки gcc, musl и прочих инструментов сборки 
/feeds   // дополнительные репозитории с приложениями
/package   // скрипты для сборки приложений
...

Было решено часть приложений собственной разработки перенести из основного репозитория в дополнительный, чтоб никто не подсмотрел. Мы всё это сделали, выложили на github и стало хорошо.

Много воды утекло с тех пор…
Читать дальше →

# Вышел релиз GitLab 13.4 с хранилищем HashiCorp для переменных CI и Kubernetes Agent

Время на прочтение31 мин
Количество просмотров3.5K

Картинка для привлечения внимания


Вышел релиз 13.4 с хранилищем HashiCorp для переменных CI, Kubernetes Agent и центром безопасности, а также переключаемыми фичами в Starter


В GitLab мы всегда думаем о том, как помочь пользователям снизить риски, повысить эффективность и скорость поставки на вашей любимой платформе. В этом месяце мы добавили немало полезных новшеств, которые расширяют возможности безопасности, снижают количество уязвимостей, повышают эффективность, упрощают работу с GitLab и помогают вашей команде поставлять фичи ещё быстрее. Мы надеемся, что вам пригодятся основные фичи релиза, а также 53 другие новые фичи, добавленные в этом релизе.

Читать дальше →

GitOps: очередной модный термин или прорыв в автоматизации?

Время на прочтение4 мин
Количество просмотров6.1K

Большинство из нас, подмечая очередной новый термин в IT блогосфере или конференции, рано или поздно задается подобным вопросом: “Что это? Очередное модное слово, “buzzword” или действительно что-то стоящее пристального внимания, изучения и обещающее новые горизонты?” Точно также вышло у меня и с термином GitOps некоторое время назад. Вооружившись множеством уже существующих статей, а также знанием коллег из компании GitLab, я попытался разобраться, что же это за зверь, и как его применение может выглядеть на практике.

Читать далее

Приглашаем на Live-Вебинар — Автоматизация процессов с GitLab CI/CD — 29 Окт., 15:00 -16:00 (MST)

Время на прочтение1 мин
Количество просмотров1.9K

Расширяем знания и переходим на следующий уровень




Вы только начинаете изучать основные принципы Continuous Integration / Continuous Delivery или написали уже не один десяток пайплайнов? Вне зависимости от уровня Ваших знаний, присоединяйтесь к нашему вебинару, чтобы на практике разобраться, почему тысячи организаций по всему миру выбирают GitLab в качестве ключевого инструмента для автоматизации IT процессов.
Читать дальше →

Автоматизация рабочего процесса Java-проекта с помощью модифицированной модели ветвления Gitflow

Время на прочтение14 мин
Количество просмотров5.9K

Автоматизация рабочего процесса Java-проекта с помощью модифицированной модели ветвления Gitflow


Ключевые выводы


  • Gitflow — это совместная модель ветвления, которая пытается использовать мощность, скорость и простоту ветвления Git. Этот метод хорошо работал в ситуации, которую мы описываем здесь, но другие отмечали, что использование Gitflow сопряжено со своими проблемами.
  • Документация по использованию Gitflow в размещения в источнике информации в лучшем случае является нечеткой.
  • Функции изолированы внутри ветвей. Вы можете управлять своими собственными изменениями функций изолированно. Этот подход отличается от разработки на основе магистралей, когда каждый разработчик фиксируется в основной ветке не реже одного раза в 24 часа.
  • Разделение функций с использованием изолированных ветвей позволяет вам решить, какие функции включать в каждый релиз. Компромисс здесь может заключаться в сложных слияниях.

Читать дальше →

Монорепозитории NX и Lerna, или Туда и обратно

Время на прочтение12 мин
Количество просмотров17K

Как все знают, монорепозиторий - это несколько частей проекта (приложения, сервисы, библиотеки и т.д.), которые хранятся в одном репозитории. Плохо это или хорошо - не тема данной публикации. Но все же упомяну некоторые причины по которым я решил их использовать.

В скриптах деплоймента (или в моем случае еще и в настройках GitLab репозитория), нужно сформировать токены/ключи доступов к докер реджистри, кубернетесу, разным кластерам и т.д. И если у вас пару сервисов, то это не проблема, но если сервисов 15-20, то это весьма болезненный процесс. Особенно, когда настройки кластера меняются и нужно эти изменения вносить во все репозитории.

В определенных случаях среди нескольких сервисов, можно выделить общий код, который можно переиспользовать (описание интерфейсов, утилиты и т.д.) и особенно важно на самом старте проекта, когда эти общие куски кода только формируются не тратить время на коммиты в отдельные репозитории, если нужно всего лишь добавить поле в общий интерфейс.

После того как мы перешли на монорепозиторий появилось еще несколько преимуществ, без которых, в принципе, тоже можно жить, но все равно это был приятный бонус.

И вот мы решили использовать монорепозиторий, но с чего начать и как все организовать?

Поехали!

Автоматизация семантического управления версиями с помощью Maven (SemVer GitFlow Maven)

Время на прочтение8 мин
Количество просмотров6.8K

Вы используете семантический подход к управлению версиями? Вы используете gitflow? Скорее всего, вы знакомы с процессом корректировки версий, создания веток, слияния с master/dev, повторной корректировки версий, борьбы с конфликтами слияния,…


В этой статье я кратко объясню процесс выпуска, который мы, по сути, используем для наших библиотек, и то, как мы его автоматизировали. Обычно мы используем подход CI/CD, используя номера сборок, но для наших библиотек мы решили использовать семантическое управление версиями. Я столкнулся с утомительным процессом выпуска, который сопровождает это в нескольких компаниях, и теперь я наконец нашел решение.

Читать дальше →

Git GUI моей мечты

Время на прочтение5 мин
Количество просмотров24K

Я разработчик игр и мобильных приложений. Я написал немало кода на C++ и Swift. И, как и многие из вас, я пользуюсь системами контроля версий, в частности, гитом.

Гит имеет максимально функциональный command-line интерфейс и десятки если не сотни приложений для работы с ним локально при помощи графического интерфейса, которые умеют выполнять только часть функционала гита. Беда в том, что я пишу код уже 10 лет, но никак не нашел идеальный (подходящий для меня) git GUI клиент. Пример: недавно вышел Github Desktop. Я его использовал до тех пор, пока мне не понадобилось сделать checkout на конкретный коммит. И я испытал уже привычную боль от того, что данное приложение так делать не умеет. И вновь вернулся в терминал (с автодополнением для гита). И такие вещи есть в каждом GUI приложении для гита. Однако, я сюда пришел не критиковать их. Уверен, что вы и без меня имеете много претензий к этим приложениям. Я долго думал о том каким должно быть идеальное git GUI приложение. Это были мимолетные обрывки желаний, из которых трудно собрать что-то цельное. И совсем недавно эти обрывки мыслей у меня собрались в единую картину. Ниже я опишу это в формате ТЗ (технического задания) в максимально понятной форме.

Читать далее

Как отменить commit и не облажаться

Время на прочтение2 мин
Количество просмотров138K

Не только разработчикам-новичкам, но и ярым профессионалам приходится прибегать к отмене каких-либо изменений. И тогда, первое, что приходит на ум, — это команда git revert, как самый безопасный способ. И тут есть подводные камни, про которые я хочу рассказать.


Возьмем простую ситуацию: разработчик решает реализовать математические функции. Но на половине пути понимает, что данную задачу было бы хорошо декомпозировать, допустим, на две подзадачи:


  • Реализовать арифметические операции (сложение, вычитание, деление и т.д.)
  • Реализовать числовые операции (максимальное значение, минимальное значение, модуль числа и т.д.)

Проверять будет проще да и тестировать. Но он уже начал ее реализовывать, коммиты уже созданы, и что же делать? Не переписывать же!


Читать дальше →

Ближайшие события

Git compare: быстрый способ сравнить две ветки

Время на прочтение2 мин
Количество просмотров15K

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


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


В результате локальная ветка законченной задачи выглядит примерно так:


image

Читать дальше →

Путешествие в мир Linux и Git

Время на прочтение9 мин
Количество просмотров33K
Во время пандемии я, честно говоря, не собиралась изучать Linux, не думала, что умение работать в этой ОС сделает меня продуктивнее. Но, как оказалось, Linux-навыки, и правда, помогают мне быстрее справляться с делами. Всё началось с того, что мне посоветовали «взглянуть на Linux». Я тогда подумала, что делать мне, всё равно, нечего, да ещё и сентябрьский выпуск #IBelieveinDoing оказался как раз о Linux.

Я почувствовала, что всё у меня получится, и отправилась в путешествие по миру Linux. В том выпуске #IBelieveinDoing были уроки не только по Linux, но и по Git. Между этими системами можно провести некоторые параллели. Linux — это опенсорсная ОС, которой пользуются программисты, а Git — это система управления версиями, которую применяют для отслеживания изменений в исходном коде при разработке программ. Надо отметить, что изучение Linux и Git оказалось весьма увлекательным занятием. Но Git — довольно сложная система, поэтому и освоить её основы было тяжелее, чем основы Linux.



В этом материале я хочу поделиться с вами тем, что узнала, осваивая Linux и Git.
Читать дальше →

Переписывание истории репозитория кода, или почему иногда можно git push -f

Время на прочтение7 мин
Количество просмотров24K


Одно из первых наставлений, которое молодой падаван получает вместе с доступом к git-репозиториям, звучит так: «никогда не ешь жёлтый снег делай git push -f». Поскольку это одна из сотен максим, которые нужно усвоить начинающему инженеру-разработчику ПО, никто не тратит время на уточнение, почему именно так нельзя делать. Это как младенцы и огонь: «спички детям не игрушки» и баста. Но мы растём и развиваемся как люди и как профессионалы, и однажды вопрос «а почему, собственно?» встаёт в полный рост. Эта статья написана по мотивам внутреннего митапа на тему: «Когда можно и нужно переписывать историю коммитов», который я проводил, когда работал в компании FunCorp.
Читать дальше →

С нуля до автоматизации контейнеров за 7 минут

Время на прочтение6 мин
Количество просмотров3.4K

В статье ранее (на португальском) я рассказал, как создать полнофункциональный бэкенд GraphQL, используя только образ Docker и файл конфигурации. Все это можно найти на сайте Azure. А сейчас давайте поговорим о том, как автоматизировать развертывания, созданные для нашего хостинга, и обновления нашей серверной части!


Целью всего этого проекта является создание серверной части для моего будущего архива содержимого, который будет размещен на моем сайте. Однако всякий раз, когда я обновляю серверную часть или меняю схему GraphQL, мне придется выполнять полное развертывание службы снова.


Вместо этого мне бы хотелось, чтобы с каждым push в главной ветке генерировалась новая версия файла и обновление отправлялось на сайт Azure. Однако я не хочу использовать для этого другие инструменты. Мне бы хотелось, чтобы весь стек был максимально простым, так как мы пользуемся только GitHub и Azure. Нет ничего проще, чем продолжать пользоваться GitHub для автоматизации, верно?


Вот почему мы будем использовать GitHub Actions


Читать дальше →

Как убрать из Git-репозитория файлы с конфиденциальной информацией

Время на прочтение4 мин
Количество просмотров33K
Файлы проиндексированы, написано сообщение коммита, данные отправлены на сервер… И вдруг хочется повернуть время вспять. В коммит попал файл, которого там быть не должно. Когда такое случается, приходит время обращаться к поисковику.

Каждый разработчик когда-то по ошибке коммитил в общедоступный репозиторий файлы с конфиденциальной информацией. Как справиться с такой проблемой? Как сделать так, чтобы ничего подобного больше не случилось бы?

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


Удаление файлов с конфиденциальной информацией из Git-репозитория (изображение большого размера)
Читать дальше →

Почему Trunk Based Development – лучшая модель ветвления. Андрей Александров

Время на прочтение10 мин
Количество просмотров115K


В State Of DevOps 2018 от DORA мы видим, что Нigh Performing компании используют Trunk Based Development. Разберемся, почему именно ее, какие ее преимущества и недостатки имеет эта модель.

Читать дальше →

Вышел релиз GitLab 13.3 с полным покрытием фаззинг-тестированием и матрицей сборки для CI/CD

Время на прочтение35 мин
Количество просмотров3.7K

Картинка для привлечения внимания


DevSecOps помогает командам обнаруживать и устранять неисправности и уязвимости на ранних стадиях разработки ПО. В GitLab 13.3 создавать безопасное программное обеспечение стало проще благодаря тестированию фаззингом, интегрированному в ваш рабочий процесс разработки. Фаззинг-тестирование, направленное на полное покрытие кода, вместе с запуском DAST (динамического тестирования безопасности приложений) по требованию помогут обнаруживать реальные уязвимости программного обеспечения быстрее и эффективнее. Кроме того, с новой матрицей сборки для CI/CD станет проще выпускать релизы более часто. Наконец, панель состояния подов повысит эффективность работы специалистов по эксплуатации за счёт сокращения переключений контекста: все данные о состоянии подов Kubernetes теперь находятся в одной панели. Мы надеемся, что вам понравятся основные фичи релиза, а также ещё 69 новых фич, включённых в этот релиз.

Читать дальше →

Вклад авторов