<?xml version="1.0" encoding="UTF-8"?>

<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" >

  <channel>
    <title><![CDATA[Все посты подряд / Git / Хабр]]></title>
    <link>https://habr.com/ru/hubs/git/posts/</link>
    <description><![CDATA[Git – система управления версиями файлов]]></description>
    <language>ru</language>
    <managingEditor>editor@habr.com</managingEditor>
    <generator>habr.com</generator>
    <pubDate>Sun, 03 May 2026 11:38:14 GMT</pubDate>
    
    
      <image>
        <link>https://habr.com/ru/</link>
        <url>https://habrastorage.org/webt/ym/el/wk/ymelwk3zy1gawz4nkejl_-ammtc.png</url>
        <title>Хабр</title>
      </image>
    

    
      
        
    

  

  
  <item>
    <title><![CDATA[Пост @AlexErf13 — Git (+3) — 07.04.2026 19:08]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/1020502/</guid>
    <link>https://habr.com/ru/posts/1020502/?utm_campaign=1020502&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p><strong>Отказ от Cursor</strong> 🙅‍♂️</p><p>Луну обогнули 🌔, вернёмся на землю.</p><p>Я писал про <a href="https://t.me/aigentto/166" rel="noopener noreferrer nofollow">кейс</a> перевода всех сайтов на&nbsp;OpenClaw. Теперь переводим разработку больших продуктов.&nbsp;</p><p>Было так: Cursor пишет код как&nbsp;ассистент разработчика. Говоришь ему «построй план», корректируешь, и с&nbsp;нуля&nbsp;быстро можешь написать довольно масштабную систему.</p><p>После этого начинается просто корректировка, новые фичи и фиксы багов. И как&nbsp;правило, в&nbsp;большой системе, обросшей фичами, внедрение нового занимает время, особенно если команда не&nbsp;Full Stack (отдельно Front и отдельно Back разработка).</p><p>Но&nbsp;я попробовал и вынес дальнейшую разработку двух больших систем в&nbsp;OpenClaw.</p><p>По&nbsp;сути, на&nbsp;VPS с&nbsp;OpenClaw (полный sudo доступ) подтягиваем нужные репозитории. И в&nbsp;чате ему говорим: в&nbsp;репо A добавь X, почини Y, найди баги. Вроде все то&nbsp;же самое, как&nbsp;и в&nbsp;Cursor, но&nbsp;нет, все мгновенно оказывается в&nbsp;Prod, и в&nbsp;цикле там уже включено UI тестирование, потому что&nbsp;есть playwright + browser.</p><p>Dev Pipeline теперь это не 3&nbsp;отдельные среды (prod + test + dev), а&nbsp;Front+Back Dev + QA + DevOps со средним time-2-market в 3&nbsp;недели, а&nbsp;просто три ветки prod/test/dev, все три постоянно подняты, и time-2-market падает до&nbsp;часов.</p><p>Этап дизайна в&nbsp;Figma тоже уходит. Зачем просить дизайнера, который все время занят, сделать новый дизайн, если можно просто сказать боту: «<em>Накидай три версии дизайна новой фичи сразу с&nbsp;самой фичей прямо в&nbsp;dev‑ветке</em>», и уже через 5&nbsp;минут смотреть, выбирать и корректировать.</p><p>Написание больших систем с&nbsp;нуля все еще удобнее в&nbsp;Cursor, но&nbsp;дальнейшее развитие работает на&nbsp;OpenClaw на 4+.</p> <a href="https://habr.com/ru/posts/1020502/?utm_campaign=1020502&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Tue, 07 Apr 2026 16:08:40 GMT</pubDate>
    <dc:creator><![CDATA[AlexErf13]]></dc:creator>
      
      <category><![CDATA[openclaw]]></category><category><![CDATA[ии]]></category><category><![CDATA[ии-ассистент]]></category><category><![CDATA[ии-агенты]]></category><category><![CDATA[ии чат-бот]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @Xak-Tak — Git — 07.04.2026 11:10]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/1020214/</guid>
    <link>https://habr.com/ru/posts/1020214/?utm_campaign=1020214&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p><strong>Сегодня у Git день рождения — 21 год! 🥳</strong></p><p><strong><em>В честь праздника собрали для вас популярные Git-тренажёры и игры:</em></strong></p><p>🟢 <a href="https://ohmygit.org/" rel="noopener noreferrer nofollow">Oh My Git</a> — карточная игра с открытым исходным кодом, которая учит логике Git. Исходники на <a href="https://github.com/git-learning-game/oh-my-git/" rel="noopener noreferrer nofollow">GitHub</a>.</p><p>🟢 <a href="https://learngitbranching.js.org/?locale=ru_RU" rel="noopener noreferrer nofollow">Learn Git Branching</a> — без преувеличения лучший визуальный тренажёр для понимания веток, merge и rebase.</p><p>🟢 <a href="https://github.com/git-game" rel="noopener noreferrer nofollow">The Git Game</a> — квест в терминале. Всё как мы любим: клонируешь репу, читаешь README и идёшь решать загадки в консоли. Всего 10 уровней.</p><p>🟢 <a href="https://gitbybit.com/" rel="noopener noreferrer nofollow">GitByBit</a> — классный тренажёр-курс из 48 уроков, которые можно проходить прямо в VS Code. Есть квизы и даже встроенная «Gitopedia».</p><p>🟢 <a href="https://github.com/benthayer/git-gud" rel="noopener noreferrer nofollow">Git Gud</a> — CLI-игра с различными уровнями сложности, которая поможет освоить Git от базы до профи.</p><p>Сохраняем ☕️</p><p>А ещё в честь праздника откопал для вас красивую шпаргалку с основными командами.</p><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/e44/f87/830/e44f878308d1fde3d875c0447d65222d.jpg" width="1280" height="1275"></figure><p><strong>Источник:</strong> Мой телеграм канал <strong><a href="https://t.me/Xak_Tak/340" rel="noopener noreferrer nofollow">Хак Так</a></strong> ⬅ поддержите подпиской!</p> <a href="https://habr.com/ru/posts/1020214/?utm_campaign=1020214&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Tue, 07 Apr 2026 08:10:44 GMT</pubDate>
    <dc:creator><![CDATA[Xak-Tak]]></dc:creator>
      
      <category><![CDATA[git]]></category><category><![CDATA[день рождения]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @runity — Блог компании Рунити (+2) — 30.03.2026 14:56]]></title>
    <guid isPermaLink="true">https://habr.com/ru/companies/runity/posts/1016932/</guid>
    <link>https://habr.com/ru/companies/runity/posts/1016932/?utm_campaign=1016932&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p><strong>Установка Git на Ubuntu: три способа и базовая настройка</strong>&nbsp;</p><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/c2a/753/e30/c2a753e309a9b080fd06e0e8c6ceaafd.png" width="1920" height="1080"></figure><p>Git есть почти везде, но версия из стандартного репозитория Ubuntu может сильно отставать от актуальной — и это уже повод разобраться, какой способ установки выбрать. В блоге разобрали все три варианта: через APT, через PPA и сборку из исходников — плюс базовую настройку и первые команды для старта.&nbsp;</p><p>Читайте полный разбор на<a href="https://reg.cloud/blog/ustanovka-git-na-ubuntu/?utm_source=habr&amp;utm_medium=post&amp;utm_campaign=gitubuntu" rel="noopener noreferrer nofollow"> сайте Рег.облака</a>.</p> <a href="https://habr.com/ru/posts/1016932/?utm_campaign=1016932&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Mon, 30 Mar 2026 11:56:06 GMT</pubDate>
    <dc:creator><![CDATA[runity (Рунити)]]></dc:creator>
      
      <category><![CDATA[рег.облако]]></category><category><![CDATA[git]]></category><category><![CDATA[ubuntu]]></category><category><![CDATA[репозиторий]]></category><category><![CDATA[репозитории]]></category><category><![CDATA[настройки]]></category><category><![CDATA[настройка]]></category><category><![CDATA[сборка]]></category><category><![CDATA[облако]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @CIOlogia — Git (+1) — 19.03.2026 12:37]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/1012194/</guid>
    <link>https://habr.com/ru/posts/1012194/?utm_campaign=1012194&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p>GitHub тихо превратили в Store.<br>Ну почти.<br></p><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/aa0/801/c06/aa0801c06c03b5aae9460338aacf9751.png" width="1898" height="936"></figure><p>Недавно наткнулся на занятный опенсорс‑проект —&nbsp;GitHub Store&nbsp;(github.com/OpenHub-Store/GitHub-Store). Это такая «оболочка» поверх GitHub, которая делает с репозиториями то же самое, что App Store / Google Play делают с приложениями.</p><p>В чём суть</p><p>По факту GitHub Store пытается ответить на давно назревший вопрос:</p><blockquote><p>«Почему, чтобы поставить простую утилиту с GitHub, мне нужно идти читать README, искать бинарники, разбираться с релизами, а потом ещё помнить, как это всё обновлять?»</p></blockquote><p>Авторы решили: хватит так жить. Давайте сделаем нормальный&nbsp;стор поверх GitHub, но без своей отдельной экосистемы:</p><p>есть&nbsp;лента с трендами и популярными репозиториями&nbsp;— можно просто полистать и найти что‑нибудь полезное, как в обычном магазине приложений;</p><p>установка в один клик&nbsp;(ну, почти) — не надо руками лазить по релизам и думать, какой файл скачать;</p><p>автоматические обновления уже установленных программ&nbsp;— не нужно помнить, что там выходило, кто из них обновился, а кто нет;</p><p>работает на&nbsp;Android, Windows, macOS и Linux&nbsp;— то есть это не очередной «только под одну платформу, остальным держаться».</p><p>С точки зрения пользователя это выглядит как нормальный стор: плитки, поиск, категории, тренды. Но под капотом — обычные GitHub‑репозитории. Никакого своего «реестра пакетов», зависимостей и т.п. Всё, что уже лежит на GitHub, становится чуть более человечно упакованным.</p><p>Зачем это вообще нужно</p><p>Если вы давно сидите на GitHub, то знаете эту боль:</p><ul><li><p>находишь классный проект на Hacker News / Хабре / Реддите;</p></li><li><p>переходишь в репу;</p></li><li><p>в README: «build it yourself», 15 шагов, три тулчейна и «tested only on Arch btw»;</p></li><li><p>если повезло — есть бинарник где‑то глубоко в релизах, но без автообновлений.</p></li></ul><p>GitHub Store как раз пытается это сгладить:<br>вместо «репозиторий с набором файлов» —&nbsp;понятное приложение, которое можно установить и потом обновлять как нормальный софт.</p><p>Причём это не замена package manager’ам (apt, brew, winget и прочие), а именно интерфейс к тем проектам, которые туда никогда не доедут: личные тулзы, мелкие утилиты, нишевые программы, эксперименты.</p><p>Автор проекта прямо пишет, что идея — собрать в одном месте&nbsp;тысячи программ, которых вы не увидите ни в одном официальном сторе, но которые живут на GitHub, звёзды собирают, а до пользователя так и не доезжают.</p><p>Чем это похоже на App Store, а чем — нет</p><p>Похоже:</p><p>есть&nbsp;витрина: тренды, популярное, поиск;</p><p>есть&nbsp;установка в одно действие;</p><p>есть&nbsp;обновления, о которых думать не нужно.</p><p>Не похоже:</p><p>нет централизованной модерации в духе Apple/Google — это всё равно GitHub, со всеми вытекающими;</p><p>нет единого UX по установке/запуску (проекты разные, и у каждого свои особенности);</p><p>безопасность пока, очевидно, на уровне «как в GitHub»: вы сами решаете, кому верить.</p><p>То есть это не «новый стор, который победит все остальные», а&nbsp;надстройка&nbsp;над тем, чем GitHub по факту давно является — огромным складом софта, где интерфейс для обычного пользователя исторически был «так себе».</p><p>Кому это вообще может зайти</p><p>Тем, кто любит ковыряться в GitHub и искать новые инструменты, но устал превращать каждый проект в квест.</p><p>Тем, кто живёт на Linux / Windows / macOS, использует кучу мелких утилит и хочет держать их в одном месте с автообновлениями.</p><p>Тем, кто сам пилит опенсорс: это ещё один канал донести свой проект до людей, которые не любят GitHub, но любят «поставить и пользоваться».</p><p>Что в итоге</p><p>Идея «сделать стор поверх GitHub» витала довольно давно, но тут её хоть кто‑то нормально попробовал свернуть в рабочий вид, да ещё и кроссплатформенно.</p><p>Пока это выглядит как&nbsp;удобная человеческая морда к GitHub, а не очередной велосипед ради велосипеда. Если у вас жизнь связана с опенсорсом (или вы просто любите новые игрушки), проект точно стоит хотя бы посмотреть.</p><p>Ну и по классике: это опенсорс, так что можете не только поставить, но и прийти с PR’ами, если чего‑то не хватает или кажется сделанным криво.</p> <a href="https://habr.com/ru/posts/1012194/?utm_campaign=1012194&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Thu, 19 Mar 2026 09:37:47 GMT</pubDate>
    <dc:creator><![CDATA[CIOlogia]]></dc:creator>
      
      <category><![CDATA[store]]></category><category><![CDATA[github]]></category><category><![CDATA[git]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @runity — Блог компании Рунити (+1) — 18.03.2026 14:58]]></title>
    <guid isPermaLink="true">https://habr.com/ru/companies/runity/posts/1011800/</guid>
    <link>https://habr.com/ru/companies/runity/posts/1011800/?utm_campaign=1011800&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p><strong>Что такое GitOps? Обзор методологии и знакомство с Argo CD</strong></p><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/346/c00/9e3/346c009e39c52aba0ccefbaa7d4f638b.png" width="2048" height="1152"></figure><p>Ручные операции при деплое — это не только медленно, но и опасно: одна неверная команда в проде, и разбирайся потом, кто и что поменял.</p><p>В блоге разобрали GitOps как подход, плюс познакомились с Argo CD — как он работает, чем отличается от Flux и как развернуть его с нуля.</p><p>Читайте полный разбор на<a href="https://reg.cloud/blog/chto-takoe-gitops/?utm_source=habr&amp;utm_medium=post&amp;utm_campaign=gitops" rel="noopener noreferrer nofollow"> сайте Рег.облака</a>.</p> <a href="https://habr.com/ru/posts/1011800/?utm_campaign=1011800&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Wed, 18 Mar 2026 11:58:08 GMT</pubDate>
    <dc:creator><![CDATA[runity (Рунити)]]></dc:creator>
      
      <category><![CDATA[gitops]]></category><category><![CDATA[gitops-практики]]></category><category><![CDATA[flux]]></category><category><![CDATA[argo]]></category><category><![CDATA[argocd]]></category><category><![CDATA[argo cd]]></category><category><![CDATA[деплой]]></category><category><![CDATA[деплой на сервер]]></category><category><![CDATA[деплой приложения]]></category><category><![CDATA[рег.облако]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @krakenkaken — Блог компании Gramax (+4) — 05.03.2026 13:27]]></title>
    <guid isPermaLink="true">https://habr.com/ru/companies/gram_ax/posts/1006886/</guid>
    <link>https://habr.com/ru/companies/gram_ax/posts/1006886/?utm_campaign=1006886&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/9a9/8c8/14d/9a98c814d2a6fdfb80730068fe664da9.png" width="1560" height="475"></figure><p>💥&nbsp;<strong>Новое в Gramax</strong>&nbsp;💥</p><p><strong>Gramax Enterprise Server:</strong></p><ul><li><p><strong>Корректные ссылки из приложения</strong>. Раньше ссылки на статью или каталог копировались как <code>https://app.gram.ax/repo-name...</code>. Теперь приложение подставляет домен вашей компании (где развернут веб-редактор), поэтому ссылки ведут в приложение в вашем контуре.</p></li><li><p><strong>Фильтр по файлам</strong> <strong>в поиске</strong>. Добавили режимы «Без вложений», «С вложениями» и «Только во вложениях», чтобы искать не только по тексту статей, но и по содержимому PDF и DOCX-файлов.</p></li></ul><p><strong>Другие улучшения:</strong></p><ul><li><p><strong>Автоматическое решение конфликтов в комментариях</strong>. Если несколько пользователей одновременно отвечают или редактируют один и тот же комментарий, изменения корректно объединяются и не ломают комментарии. В связи с этим в «Проверить на ошибки» появился пункт «Комментарии» — он показывает статьи с комментариями, которые не привязаны ни к одному блоку.</p></li><li><p><strong>Улучшения поиска</strong>:</p><ul><li><p>Поиск стал быстрее. Ускорили примерно в 2 раза и оптимизировали индексацию.</p></li><li><p>Обязательные слова в запросе. Добавили оператор +: поставьте его перед словом или фразой, и они точно будут учитываться в результатах.</p></li><li><p>Окно поиска по статье сохраняет состояние. При переходе между статьями окно закрывается, но при повторном открытии сохраняется введенный текст (пока приложение открыто).</p></li><li><p>ИИ-поиск стал точнее. Мы улучшили RAG, поэтому ответы в поиске стали более релевантными и полезными. Подробнее — в статье на Хабре.</p></li></ul></li><li><p><strong>Инлайн-тулбар в комментариях, сниппетах и шаблонах</strong>. Теперь над полем ввода комментария доступно базовое форматирование: жирный, курсив, код и вставка ссылок. А в редакторе сниппетов и шаблонах появился полный набор инструментов, включая редактирование таблиц.</p></li><li><p><strong>Превью Excel-файлов</strong>. Теперь Excel-файлы можно открыть в режиме предпросмотра: при клике отображается превью в модальном окне.</p></li><li><p><strong>Быстрая публикация</strong>. Список изменений загружается в 3 раза быстрее.</p></li><li><p><strong>Автоматическое обновление ссылок при редактировании</strong>. Если вы меняете текст ссылки и он совпадает с ее адресом, адрес тоже обновится. Если текст и адрес разные — ссылка не меняется.</p></li><li><p><strong>Сохранение позиции прокрутки между статьями</strong>. Если вы перешли в другую статью и вернулись назад, статья откроется там, где вы остановились, а не в начале.</p></li><li><p><strong>Версия приложения в деталях ошибки</strong>. Это помогает быстрее понять, на какой версии возникла проблема и быстрее ее воспроизвести.</p></li><li><p><strong>Исправление уязвимостей</strong>. Теперь перед выпуском новых версий мы автоматически проверяем используемые библиотеки на известные уязвимости.</p></li></ul><p>Подробнее об изменениях читайте в статье — <a href="https://gram.ax/resources/docs/whats-new" rel="noopener noreferrer nofollow">https://gram.ax/resources/docs/whats-new</a></p> <a href="https://habr.com/ru/posts/1006886/?utm_campaign=1006886&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Thu, 05 Mar 2026 10:27:28 GMT</pubDate>
    <dc:creator><![CDATA[krakenkaken (Gramax)]]></dc:creator>
      
      <category><![CDATA[Вики]]></category><category><![CDATA[База знаний]]></category><category><![CDATA[Документация]]></category><category><![CDATA[Управление знаниями]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @krakenkaken — Блог компании Gramax (+4) — 03.03.2026 13:57]]></title>
    <guid isPermaLink="true">https://habr.com/ru/companies/gram_ax/posts/1005956/</guid>
    <link>https://habr.com/ru/companies/gram_ax/posts/1005956/?utm_campaign=1005956&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p>🌟 <strong>505 звездочек на GitHub у российского Open Source-проекта</strong> 🌟</p><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/599/030/d5c/599030d5c969a7fcefd58124f6464d3c.png" width="5010" height="1878"></figure><p>И ровно 505 участников в комьюнити. Друзья, спасибо, что вы с нами 💝</p><p>Gramax — это база знаний для ИТ-команда и платформа для документации. Присоединяйтесь  к сообществу лучших практик документирования!</p><ul><li><p>Узнать о Gramax — <a href="https://gram.ax/ru" rel="noopener noreferrer nofollow">https://gram.ax/ru</a></p></li><li><p>Поставить звездочку на GitHub — <a href="https://github.com/Gram-ax/gramax" rel="noopener noreferrer nofollow">https://github.com/Gram-ax/gramax</a></p></li><li><p>Вступить в комьюнити — <a href="https://t.me/gramax_chat" rel="noopener noreferrer nofollow">https://t.me/gramax_chat</a></p></li></ul> <a href="https://habr.com/ru/posts/1005956/?utm_campaign=1005956&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Tue, 03 Mar 2026 10:57:41 GMT</pubDate>
    <dc:creator><![CDATA[krakenkaken (Gramax)]]></dc:creator>
      
      <category><![CDATA[база знаний]]></category><category><![CDATA[документация]]></category><category><![CDATA[docs as code]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @denis-19 — Open source (+2) — 02.03.2026 18:12]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/1005650/</guid>
    <link>https://habr.com/ru/posts/1005650/?utm_campaign=1005650&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p>Ресурс <a href="https://techgaun.github.io/active-forks/index.html#vim/vim" rel="noopener noreferrer nofollow">Active GitHub Forks</a> позволяет быстро найти форки проектов на GitHub. </p><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/ba7/c8d/c91/ba7c8dc91f8bb1e30e68fc31e5f25d66.png" width="1304" height="798"></figure> <a href="https://habr.com/ru/posts/1005650/?utm_campaign=1005650&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Mon, 02 Mar 2026 15:12:20 GMT</pubDate>
    <dc:creator><![CDATA[denis-19]]></dc:creator>
      
      <category><![CDATA[Active GitHub Forks]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @FaryaRos — История IT (+2) — 27.02.2026 14:22]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/1004526/</guid>
    <link>https://habr.com/ru/posts/1004526/?utm_campaign=1004526&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p><strong>Как появился Docker?</strong></p><blockquote><p>Продолжаю писать серию коротких постов про историю айти. В последнее время нам очень интересна тема нашего наследия и почитывая разные источники, я пишу об этом коротко и простым языком.</p></blockquote><p>В 2013 году биткойн впервые пробивает тысячу долларов, а Сноуден сливает PRISM. У людей начинает появляться ощущение и понимание, что интернет-сервисы, которыми они пользуются каждый день, могут быть частью конвейера доступа к данным. На этом фоне у всего IT живёт боль в виде окружения. Чтобы запустить приложение в среде, нужно было вручную настраивать сотни зависимостей. Малейшее несовпадение версии и всё падает. Виртуальные машины помогали, но они были слишком тяжелыми. </p><p>В этом же году в компании dotCloud во главе с его основателем Соломоном Хайксом делали сервис, в котором ты загружаешь код и он запускается на сервере без ручной настройки. <strong>Для этого им нужен был внутренний инструмент, который упаковывает приложение вместе с окружением.</strong>В какой-то момент они поняли, что их облачный бизнес идет так себе, а вот штука для управления контейнерами получился бриллиант. </p><p>Так Хайкс впервые представил Docker на PyCon. В своем докладе он упоминал, что айти индустрия страдала от проблемы под названием “матрица ада”. То есть чтобы запустить каждое приложение в каждой среде, нужно было вручную настраивать сотни зависимостей. Малейшее несовпадение версии библиотеки и всё падает. Виртуальные машины помогали, но они были слишком тяжелыми. Это оказалось сильнее, чем первоначальная бизнес-идея dotCloud. </p><p>В Linux уже были на тот момент механизмы изоляции, но собрать это можно было, однако повторить - сложно. Первопроходцы Solaris Zones в 2004 году были не хуже. Но Docker единственный упаковал контейнеры так, что ими стало <strong>удобно</strong> пользоваться: рецепт сборки в Dockerfile, слои для переиспользования и публичный реестр по умолчанию. Он победил за счет удобного UX.</p><p>Докер так быстро стал стандартом, что другие игроки испугались монополии на формат. И чтобы не расколоть индустрию, закрепили нейтральный стандарт - OCI (Open Container Initiative).</p><p>Подписывайтесь на наш&nbsp;<a href="https://t.me/+2rkD-gQVFwQzZDNi" rel="noopener noreferrer nofollow">Telegram-канал</a><strong>.</strong>&nbsp;Там мы публикуем полезные подборки от инженеров и делимся инсайтами.</p> <a href="https://habr.com/ru/posts/1004526/?utm_campaign=1004526&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Fri, 27 Feb 2026 11:22:43 GMT</pubDate>
    <dc:creator><![CDATA[FaryaRos]]></dc:creator>
      
      <category><![CDATA[docker]]></category><category><![CDATA[docker-compose]]></category><category><![CDATA[dockerfile]]></category><category><![CDATA[dockerhub]]></category><category><![CDATA[история it]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @anna_lesnykh — Блог компании Флант (+4) — 20.02.2026 10:43]]></title>
    <guid isPermaLink="true">https://habr.com/ru/companies/flant/posts/1001758/</guid>
    <link>https://habr.com/ru/companies/flant/posts/1001758/?utm_campaign=1001758&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p><strong>Где хранить код и как настроить CI/CD, если GitLab CE уже не хватает</strong></p><p>Иногда возможностей&nbsp;бесплатного GitLab уже недостаточно, при этом платная версия по понятным причинам недоступна. Собственные форки требуют постоянной возни с обновлениями и закрытием CVE, а написание своей системы — больших затрат ресурсов. </p><p>У нас есть готовое решение для такого случая. На&nbsp;вебинаре&nbsp;27&nbsp;февраля&nbsp;мы расскажем о Deckhouse Code&nbsp;— единой платформе для непрерывной разработки и управления жизненным циклом&nbsp;ПО: </p><ul><li><p>Покажем, как настроить правила слияния, CODEOWNERS, push rules и безопасно хранить секреты вне платформы.</p></li><li><p>Обсудим, как сократить нагрузку на команды за счёт managed-подхода.</p></li><li><p>Проведём живое демо от коммита в консоли до артефакта в registry.</p></li></ul><p><a href="https://clc.to/web_09" rel="noopener noreferrer nofollow">Регистрируйтесь</a> и подключайтесь, если вы отвечаете за CI/CD в корпоративной среде. Автор лучшего вопроса в чате вебинара получит персональное демо под свою задачу. </p><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/182/2e8/c97/1822e8c97fa1d05a2020017d2070e48e.png" width="1800" height="900"></figure> <a href="https://habr.com/ru/posts/1001758/?utm_campaign=1001758&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Fri, 20 Feb 2026 07:43:09 GMT</pubDate>
    <dc:creator><![CDATA[anna_lesnykh (Флант)]]></dc:creator>
      
      <category><![CDATA[deckhouse code]]></category><category><![CDATA[вебинар]]></category><category><![CDATA[gitlab]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @VamWebStore — Git (+4) — 11.02.2026 14:55]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/995354/</guid>
    <link>https://habr.com/ru/posts/995354/?utm_campaign=995354&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/31b/e40/eef/31be40eef6492e93894c2e00c8192c11.png" width="2496" height="1154"></figure><p><strong>OAuth на практике: что оказалось удобным, а что отпугнуло пользователей</strong></p><blockquote><p>Мы запустили молодую платформу с двумя типами аккаунтов: обычные пользователи и разработчики (публикуют PWA и управляют приложениями).</p><p>Бренда и доверия пока нет, поэтому вопрос авторизации быстро стал не техническим, а психологическим.</p></blockquote><p>С чего начали</p><p>Для обычных пользователей:<br> •	Email / пароль<br> •	Google<br> •	GitHub</p><p>Для разработчиков — жёстче:<br> •	Обязательная привязка Google<br> •	Обязательная привязка GitHub</p><p>Логика казалась разумной:<br> «Разработчик = есть GitHub»<br> «Двойная верификация = меньше спама»</p><p>На практике это не сработало.</p><p>Первые тревожные сигналы</p><p>Регистрация разработчиков шла крайне медленно, несмотря на интерес к публикации приложений.</p><p>Сначала списывали на:<br> •	новый продукт<br> •	низкое доверие<br> •	отсутствие аудитории</p><p>Но после общения с разработчиками (в том числе через Habr) картина прояснилась.</p><p>Что отпугивало разработчиков</p><ol><li><p>Новый сервис → нежелание делиться данными</p></li></ol><p>Даже если это «просто email», психологический барьер остаётся.</p><p>Когда с первого шага нужно:<br> •	линковать внешние аккаунты<br> •	проходить несколько этапов подтверждения<br> •	подключать сторонние сервисы</p><p>это воспринимается как лишний фрикцион.</p><p>Особенно для соло-разработчиков и небольших команд.</p><ol start="2"><li><p>Git ≠ GitHub</p></li></ol><p>Ключевой инсайт.</p><p>Мы обнаружили, что:<br> •	не все хотят логиниться через GitHub<br> •	часть использует GitLab или Bitbucket<br> •	некоторые принципиально не хотят связывать GitHub с новым сервисом</p><p>Обязательная привязка GitHub стала серьёзным барьером.</p><p>А мнение стандартных пользователей разделилось:</p><p>Часть говорила:</p><p>«Чем больше OAuth-кнопок, тем солиднее выглядит платформа».</p><p>Логика простая:<br> •	если есть Google / Facebook / Discord — значит не ноунейм<br> •	интеграции с крупными сервисами повышают доверие</p><p>Это не про безопасность — это про ощущение легитимности.</p><p>Другие говорили ровно противоположное:</p><p>«Слишком много кнопок — ощущение перегруженности».</p><p>И это тоже справедливый аргумент.</p><p>Что мы изменили</p><ol><li><p>Упростили форму для пользователей</p></li></ol><p>Оставили:<br> •	Google<br> •	Facebook<br> •	Discord</p><p>Достаточно выбора для доверия, без визуального шума.</p><ol start="2"><li><p>Git-провайдеры вынесли в отдельную группу</p></li></ol><p>Под отдельной кнопкой:<br> •	GitHub<br> •	GitLab<br> •	Bitbucket</p><p>Для разработчиков это стало понятнее и логичнее.</p><ol start="3"><li><p>Убрали обязательный GitHub</p></li></ol><p>Теперь для developer-аккаунта нужно подключить любой Git-аккаунт, если ни один не подключён.</p><p>Без принудительного GitHub.</p><p>Первые цифры (осторожно)</p><p>Прошла всего неделя, выборка маленькая, платформа всё ещё молодая.</p><p>Тем не менее:<br> •	Зарегистрированные пользователи: +13%<br> (было 0–6% в неделю)<br> •	Зарегистрированные разработчики: +16%<br> (было 0–3%)</p><p>Похоже, это те разработчики, которые знали о платформе, но их останавливало требование GitHub.</p><p>Выводы (пока не финальные)<br> •	OAuth — это не только безопасность, но и психология доверия<br> •	Жёсткие требования на старте почти всегда бьют по росту<br> •	Git ≠ GitHub — и это важно<br> •	Много провайдеров могут как повышать доверие, так и перегружать UI</p><p>Для молодой платформы даже такие ранние сигналы уже показательны.</p><p>Интересно услышать опыт коллег:<br> добавляли ли вы OAuth-провайдеров после запуска?<br> были ли случаи, когда обязательная авторизация через конкретный сервис тормозила рост?</p> <a href="https://habr.com/ru/posts/995354/?utm_campaign=995354&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Wed, 11 Feb 2026 11:55:09 GMT</pubDate>
    <dc:creator><![CDATA[VamWebStore]]></dc:creator>
      
      <category><![CDATA[OAuth]]></category><category><![CDATA[аутентификация]]></category><category><![CDATA[авторизация]]></category><category><![CDATA[GitHub]]></category><category><![CDATA[GitLab]]></category><category><![CDATA[Bitbucket]]></category><category><![CDATA[доверие пользователей]]></category><category><![CDATA[рост продукта]]></category><category><![CDATA[pwa]]></category><category><![CDATA[store]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @krakenkaken — Блог компании Gramax (+4) — 09.02.2026 10:46]]></title>
    <guid isPermaLink="true">https://habr.com/ru/companies/gram_ax/posts/994276/</guid>
    <link>https://habr.com/ru/companies/gram_ax/posts/994276/?utm_campaign=994276&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/5d0/ad7/92d/5d0ad792d6205d3b13f9126272dbfd24.png" width="1560" height="475"></figure><p>💥 <strong>Новое в Gramax</strong> 💥</p><ul><li><p><strong>Модуль метрик в Gramax Enterprise Server.</strong>&nbsp;Появились отчеты с метриками просмотров, визитов и посетителей на портале документации. А также статистика поисковых запросов. Отчеты можно фильтровать по дате и пользователям, выбирать период (день, неделя, месяц). </p></li><li><p><strong>Поддержка Git LFS</strong>&nbsp;. Добавили возможность работать большими бинарными файлами (изображения, архивы, PDF и др.) через спецификацию Git LFS.&nbsp;</p></li><li><p><strong>Превью файлов.</strong>&nbsp;На портале для читателей доступно превью файлов PDF и DOCX по клику. Читателю не обязательно скачивать файл на компьютер — он может просмотреть его прямо в браузере.</p></li><li><p><strong>Свойства на портале</strong>. Раньше свойства отображались только в приложении, теперь можно настроить отображение и на портале для читателей. Читатель увидит их на статье, а также сможет отфильтровать результаты в поисковой строке.&nbsp;</p></li><li><p><strong>Ссылки между каталогами</strong>. Добавили возможность добавлять относительные ссылки на статьи в других каталогах.&nbsp;</p></li><li><p><strong>Удаление запроса на слияние.</strong>&nbsp;Теперь можно закрыть&nbsp;<em>запрос на слияние</em>&nbsp;в интерфейсе Gramax — он будет удален для всех пользователей после публикации изменений.</p></li><li><p><strong>История комментариев.</strong>&nbsp;В просмотре изменений теперь проще отслеживать обновления комментариев: слева появляется иконка комментария, которая показывает, что в тексте изменились или появились комментарии. Там же можно кликнуть по комментарию, открыть его и отредактировать.</p></li></ul><p>Подробнее об изменениях читайте в статье — <a href="https://gram.ax/resources/docs/whats-new?utm_source=rn-feb" rel="noopener noreferrer nofollow">https://gram.ax/resources/docs/whats-new</a><br></p> <a href="https://habr.com/ru/posts/994276/?utm_campaign=994276&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Mon, 09 Feb 2026 07:46:30 GMT</pubDate>
    <dc:creator><![CDATA[krakenkaken (Gramax)]]></dc:creator>
      
      <category><![CDATA[документация проекта]]></category><category><![CDATA[документация кода]]></category><category><![CDATA[документация по]]></category><category><![CDATA[документация it]]></category><category><![CDATA[база знаний]]></category><category><![CDATA[docs as code]]></category><category><![CDATA[everything as code]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @tsb99x — Git (+2) — N/P]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/990482/</guid>
    <link>https://habr.com/ru/posts/990482/?utm_campaign=990482&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p><strong><em>Книга Pro Git.</em></strong></p><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/fc4/4d6/07c/fc44d607c49e2e7e2db3c43c7ec32d34.png" width="2072" height="1552"></figure><p>Несмотря на кажущуюся сложность, на повседневной основе для работы с Git не требуется большой набор знаний. Checkout, fetch, branch, commit, amend, rebase, revert, reset, pull и, наконец, log. Это — большинство нужных команд. Изредка пользуюсь еще config, бывает нужно.</p><p>В общем-то, Git достаточно прост с точки зрения пользователя. Проблема: понимание простоты Git приходит именно с опытом работы с тем самым Git. А по началу хочется иметь под рукой какую-нибудь книжку.</p><p>Скотт Чакон и Бен Страуб составили замечательное справочное пособие для тех, кто хочет окунуться с головой в детали работы с Git. Издание есть в виде сайта, PDF, EPUB и MOBI. Распространяется Pro Git бесплатно.</p><p>Книга рассчитана на начинающих пользователей или тех, кто имеет конкретные вопросы по механикам Git и им нужен подручный справочник. Что немаловажно, сайт и книга переведены на русский язык.</p><p>Pro Git не раз мне пригодился в прошлом, рекомендую.<br><br>Страница Pro Git: <a href="https://git-scm.com/book/ru/v2" rel="noopener noreferrer nofollow">https://git-scm.com/book/ru/v2</a></p> <a href="https://habr.com/ru/posts/990482/?utm_campaign=990482&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Thu, 29 Jan 2026 08:01:16 GMT</pubDate>
    <dc:creator><![CDATA[tsb99x]]></dc:creator>
      
      <category><![CDATA[скотт чакон]]></category><category><![CDATA[бен страуб]]></category><category><![CDATA[pro git]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @skargik — Git (+2) — 15.01.2026 15:29]]></title>
    <guid isPermaLink="true">https://habr.com/ru/companies/gram_ax/posts/985532/</guid>
    <link>https://habr.com/ru/companies/gram_ax/posts/985532/?utm_campaign=985532&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p>Новый поиск в Gramax!</p><p>Мы сделали быстрый офлайн-поиск по всей документации.<br>Открывается через <code>Cmd/Ctrl+/</code>, навигация стрелками, <code>Enter</code> – переход с подсветкой найденного фрагмента. Подхватывает опечатки и кривую раскладку.</p><p>Помогает быстро переключаться между статьями и проектами.<br>Работает одинаково в приложении и в докпортале.</p><iframe id="6968db001aac239ea30faacf" src="https://embedd.srv.habr.com/iframe/6968db001aac239ea30faacf" class="embed_video embed__content" allowfullscreen="true"></iframe><p>---<br>Gramax –&nbsp;это база знаний с хранением контента в Git в Markdown-файлах и с визуальным редактором.<br>Подробнее о проекте: <a href="https://gram.ax/ru" rel="noopener noreferrer nofollow">https://gram.ax/ru</a></p> <a href="https://habr.com/ru/posts/985532/?utm_campaign=985532&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Thu, 15 Jan 2026 12:29:57 GMT</pubDate>
    <dc:creator><![CDATA[skargik (Gramax)]]></dc:creator>
      
      <category><![CDATA[git]]></category><category><![CDATA[markdown]]></category><category><![CDATA[поиск]]></category><category><![CDATA[база знаний]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @kapellmaister — Блог компании Yandex Cloud & Yandex Infrastructure (+4) — N/P]]></title>
    <guid isPermaLink="true">https://habr.com/ru/companies/yandex_cloud_and_infra/posts/978428/</guid>
    <link>https://habr.com/ru/companies/yandex_cloud_and_infra/posts/978428/?utm_campaign=978428&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p><strong>Запуск GitLab Runner в&nbsp;Yandex Cloud Serverless Containers</strong></p><p>Я Павел Елисеев, старший разработчик в&nbsp;команде Serverless в&nbsp;Yandex Cloud. Мы реализовали сценарий использования сервиса&nbsp;—&nbsp;<strong>Serverless GitLab Runner</strong>. В&nbsp;посте покажу архитектуру и поделюсь кодом решения.</p><p><strong>GitLab Runner</strong>&nbsp;— агент, выполняющий задачи (<em>jobs</em>) из&nbsp;CI/CD‑пайплайнов GitLab. Он получает инструкции от&nbsp;GitLab, запускает сборку, тесты или&nbsp;деплой в&nbsp;нужной среде и передаёт результат обратно.</p><p>Раннер работает в&nbsp;разных окружениях:</p><ul><li><p>на&nbsp;общих серверах GitLab (<em>shared runners</em>);</p></li><li><p>на&nbsp;выделенных VM;</p></li><li><p>в&nbsp;K8s‑кластере.</p></li></ul><p>В&nbsp;первом варианте репозитории должны размещаться на&nbsp;<a href="http://gitlab.com" rel="noopener noreferrer nofollow">gitlab.com</a>. В&nbsp;случае&nbsp;<strong><a href="https://yandex.cloud/ru/services/managed-gitlab" rel="noopener noreferrer nofollow">Managed GitLab</a></strong>&nbsp;или&nbsp;self‑hosted GitLab развёртывание выполняется самостоятельно.</p><p>Для&nbsp;shared‑раннеров free‑tier ограничен 400&nbsp;мин./мес. Учёт идёт по&nbsp;формуле&nbsp;<code>(duration × price-factor)</code>, так что&nbsp;число доступных минут зависит от&nbsp;используемого типа раннера. А&nbsp;за&nbsp;пределами&nbsp;лимита нужна привязка не&nbsp;российской банковской карты.</p><p>Serverless‑сценарии&nbsp;<a href="https://ruitunion.org/posts/2022-11-02-gitlab-runners-in-yandex-cloud/" rel="noopener noreferrer nofollow">пытались реализовать</a>&nbsp;на&nbsp;<strong>Cloud Functions</strong>, что&nbsp;требовало отдельной VM и сложной конфигурации. А&nbsp;мы хотели объединить плюсы serverless‑модели с&nbsp;CI‑задачами:</p><ul><li><p>оплата за&nbsp;время</p></li><li><p>масштабирование за&nbsp;секунды</p></li><li><p>изоляция выполнения</p></li><li><p>отсутствие инфраструктурной рутины</p></li></ul><p><strong>Архитектура</strong></p><p>GitLab Runner работает по&nbsp;модели pull: запускает процесс, устанавливающий long‑polling‑соединение с&nbsp;GitLab API, и ожидает появления задач.</p><p>Пришла задача&nbsp;— раннер выбирает&nbsp;<em>executor</em>:</p><ul><li><p><strong>shell</strong>&nbsp;— job выполняется в&nbsp;текущем окружении</p></li><li><p><strong>docker</strong>&nbsp;— под&nbsp;job создаётся отдельный контейнер со всеми зависимостями</p></li></ul><p>Эта модель плохо подходит для&nbsp;serverless‑окружения, где нельзя держать постоянно активный процесс.</p><p>Для&nbsp;перехода на&nbsp;<em>push</em>‑модель используем&nbsp;<strong>GitLab Webhooks</strong>&nbsp;— HTTP‑уведомления о&nbsp;событиях. С&nbsp;появлением задач GitLab отправляет вебхук в&nbsp;Serverless Container, который:</p><ul><li><p>запускает раннер;</p></li><li><p>получает информацию о&nbsp;задаче;</p></li><li><p>выполняет её и возвращает результат в&nbsp;GitLab.</p></li></ul><p>Так, выполнение задачи инициируется событием, а&nbsp;не&nbsp;постоянным опросом API.</p><figure class="full-width "><img src="https://habrastorage.org/r/w1560/getpro/habr/upload_files/aa5/045/e60/aa5045e605c887a04fe56e1bd4b2eb04.png" alt="Для упрощённого развёртывания есть лёгкий образ раннера с поддержкой docker-executor, размещённый в Container Registry. Раннер автоматически загружает и запускает контейнер, указанный в конфигурации job. Секреты для аутентификации в GitLab API хранятся в Lockbox." title="Для упрощённого развёртывания есть лёгкий образ раннера с поддержкой docker-executor, размещённый в Container Registry. Раннер автоматически загружает и запускает контейнер, указанный в конфигурации job. Секреты для аутентификации в GitLab API хранятся в Lockbox." width="1349" height="933"><div><figcaption>Для упрощённого развёртывания есть лёгкий образ раннера с поддержкой docker-executor, размещённый в Container Registry. Раннер автоматически загружает и запускает контейнер, указанный в конфигурации job. Секреты для аутентификации в GitLab API хранятся в Lockbox.</figcaption></div></figure><p>GitLab требует от&nbsp;обработчика вебхуков&nbsp;быстрого ответа без&nbsp;ошибки. А&nbsp;выполнение задачи может занимать часы. Поэтому вебхуки обрабатываются&nbsp;<strong>асинхронно</strong>:</p><ol><li><p>GitLab отправляет вебхук.</p></li><li><p>Платформа проверяет авторизацию и сразу отвечает&nbsp;<code>202 Accepted.</code></p></li><li><p>Обработка выполняется асинхронно в&nbsp;фоне.</p></li></ol><p>Платформа решает, запускать&nbsp;ли новый экземпляр контейнера. Когда job завершается, контейнер остаётся активным какое‑то время, чтобы обработать вызовы без&nbsp;cold‑start.</p><p>GitLab не&nbsp;отправляет событие «создание job», поэтому раннер сперва проверяет, есть&nbsp;ли задачи со статусом&nbsp;<code>pending</code>.</p><p>Для&nbsp;docker‑executor требуется dockerd. Инициализация демона и подготовка окружения выполняются 1&nbsp;раз при&nbsp;старте контейнера. Если job найдётся, запускается эфемерный раннер, исполняющий ровно 1&nbsp;задачу.</p><p>Раннер загружает docker‑образ, выполняет команды, передаёт результат обратно через GitLab API.</p><p><strong>Используемые возможности Serverless Containers</strong></p><ol><li><p><strong><a href="https://yandex.cloud/ru/docs/serverless-containers/concepts/mounting#mount-ephemeral-storage" rel="noopener noreferrer nofollow">Эфемерные диски до 10&nbsp;ГБ</a></strong>&nbsp;на&nbsp;контейнер</p></li><li><p><strong><a href="https://yandex.cloud/ru/docs/serverless-containers/concepts/invoke-async" rel="noopener noreferrer nofollow">Асинхронный запуск контейнеров</a></strong></p></li><li><p><strong><a href="https://yandex.cloud/ru/docs/serverless-containers/concepts/long-lived-containers" rel="noopener noreferrer nofollow">Таймаут выполнения до 1&nbsp;часа</a></strong></p></li><li><p><strong>Docker внутри Serverless Containers</strong>. Это не&nbsp;<em>Docker‑in‑Docker</em>: внутри serverless‑контейнера jobs исполняются без&nbsp;отдельного демона Docker, но&nbsp;с&nbsp;аналогичной логикой. Примеры есть в&nbsp;<a href="https://sourcecraft.dev/yandex-cloud-examples/serverless-gitlab-runner?rev=main" rel="noopener noreferrer nofollow">исходном коде</a>.</p></li></ol><p><strong>Важные особенности serverless‑подхода</strong></p><ul><li><p><strong>Эфемерность:</strong>&nbsp;кеш между вызовами отсутствует. Для&nbsp;хранения артефактов используйте Object Storage или&nbsp;свои базовые образы.</p></li><li><p><strong>Загрузка образов:</strong>&nbsp;выполняется при&nbsp;каждом запуске. Рекомендуем использовать оптимизированные образы и близкий реестр (Cloud Registry), а&nbsp;при&nbsp;критичных требованиях к&nbsp;скорости старта&nbsp;— перейти на&nbsp;shell‑executor, собрав образ с&nbsp;установленным раннером и нужными зависимостями.</p></li><li><p><strong>Ограничение времени:</strong>&nbsp;не&nbsp;более 1&nbsp;часа. Для&nbsp;длинных задач разделите пайплайн на&nbsp;этапы с&nbsp;промежуточным сохранением результатов.</p></li><li><p><strong>Ограничение по&nbsp;диску:</strong>&nbsp;до 10&nbsp;ГБ.</p></li></ul><p>Сценарий Serverless GitLab Runner позволяет выполнять CI/CD‑задачи GitLab, оплачивая&nbsp;лишь время выполнения job. Serverless Containers дают возможности для&nbsp;CI‑нагрузок: асинхронные вызовы, часовой таймаут, эфемерный диск и поддержку docker‑executor внутри контейнера.</p><ul><li><p><a href="https://yandex.cloud/ru/docs/serverless-containers/tutorials/serverless-gitlab-runner" rel="noopener noreferrer nofollow">Руководство</a></p></li><li><p><a href="https://sourcecraft.dev/yandex-cloud-examples/serverless-gitlab-runner" rel="noopener noreferrer nofollow">Исходный код</a></p></li></ul> <a href="https://habr.com/ru/posts/978428/?utm_campaign=978428&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Mon, 22 Dec 2025 07:00:36 GMT</pubDate>
    <dc:creator><![CDATA[kapellmaister (Yandex Cloud & Yandex Infrastructure)]]></dc:creator>
      
      <category><![CDATA[gitlab]]></category><category><![CDATA[gitlab-runner]]></category><category><![CDATA[gitlab-ci]]></category><category><![CDATA[serverless]]></category><category><![CDATA[бессерверность]]></category><category><![CDATA[бессерверные вычисления]]></category><category><![CDATA[cloud functions]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @krakenkaken — Блог компании Gramax (+4) — 19.12.2025 10:57]]></title>
    <guid isPermaLink="true">https://habr.com/ru/companies/gram_ax/posts/978394/</guid>
    <link>https://habr.com/ru/companies/gram_ax/posts/978394/?utm_campaign=978394&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/c32/6ab/edd/c326abedd9bd246574c2988b1e1ac427.jpg" width="1280" height="1280"></figure><p>Друзья, классная новость! Мы с коллегами из GitVerse закончили разработку интеграции!&nbsp;</p><p>Теперь в <a href="https://gram.ax/ru?utm_source=habr-gitverse" rel="noopener noreferrer nofollow">Gramax</a> можно подключить <a href="https://gitverse.ru/?utm_source=gramax-girverse" rel="noopener noreferrer nofollow">GitVerse</a> в качестве хранилища. Работает в лучшем виде: клонирование, синхронизация, коммит, пуш — все как и должно быть ✨</p><p>Это была масштабная и интересная работа: мы вместе анализировали API, чтобы получилось максимально удобно. Потому будем очень рады увидеть ваши плюсики!</p><blockquote><p><strong>Gramax</strong> — Open Source-платформа для работы с документацией в подходе Docs as Code. <strong>GitVerse</strong> — AI-first платформа для работы с кодом.</p></blockquote> <a href="https://habr.com/ru/posts/978394/?utm_campaign=978394&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Fri, 19 Dec 2025 07:57:44 GMT</pubDate>
    <dc:creator><![CDATA[krakenkaken (Gramax)]]></dc:creator>
      
      <category><![CDATA[git]]></category><category><![CDATA[docs as code]]></category><category><![CDATA[документация]]></category><category><![CDATA[gitflow]]></category><category><![CDATA[управление знаниями]]></category><category><![CDATA[база знаний]]></category><category><![CDATA[git workflow]]></category><category><![CDATA[github pages]]></category><category><![CDATA[gitverse]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @krakenkaken — Блог компании Gramax (+4) — 11.12.2025 11:12]]></title>
    <guid isPermaLink="true">https://habr.com/ru/companies/gram_ax/posts/975620/</guid>
    <link>https://habr.com/ru/companies/gram_ax/posts/975620/?utm_campaign=975620&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/1eb/226/6f9/1eb2266f9501b66aeb4821ae00099db0.png" width="1780" height="542"></figure><p>💥 <strong>Новое в Gramax </strong>💥</p><p>Всем привет! Меня зовут Катя, я развиваю&nbsp;<a href="https://gram.ax/ru?utm_source=habr-release1" rel="noopener noreferrer nofollow">Gramax</a>, open source-платформу для управления технической документацией. За последние 3 месяца мы сделали много новых полезных функций, коротко расскажу о самых важных.</p><ul><li><p><strong>Интеграция с GitVerse</strong>. Теперь в качестве хранилища можно использовать GitVerse. Как подключить GitVerse к Gramax читайте&nbsp;<a href="https://gram.ax/resources/docs/storage/gitverse" rel="noopener noreferrer nofollow">в статье</a>.</p></li><li><p><strong>Поддержка Gitea</strong>. Также добавили поддержку <a href="https://gram.ax/resources/docs/storage/gitea" rel="noopener noreferrer nofollow">Gitea</a>: доступно подключение в качестве хранилища и использование всех возможностей Gramax.</p></li><li><p><strong>Экспорт в PDF и DOCX в собственных стилях</strong>. Можно <a href="https://gram.ax/resources/docs/collaboration/export-docx-pdf/add-custom-template-docx" rel="noopener noreferrer nofollow">настроить вид документа</a>: добавить титульную страницу, оглавление, номера заголовков, собственные шрифты и отступы и так далее. Для DOCX — с помощью стилей, для PDF — с помощью CSS. Применяется при экспорте из приложения, портала документации и в CI/CD.</p></li><li><p><strong>Новые возможности для статического сайта</strong>. В новой версии Gramax CLI поддерживается:&nbsp;<a href="https://gram.ax/resources/docs/doc-portal/static-site-generator#%D1%80%D0%B0%D0%B7%D0%B2%D0%B5%D1%80%D1%82%D1%8B%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5-%D0%B2-%D0%BF%D0%BE%D0%B4%D0%B4%D0%B8%D1%80%D0%B5%D0%BA%D1%82%D0%BE%D1%80%D0%B8%D1%8E" rel="noopener noreferrer nofollow">развертывание в поддиректорию</a>,&nbsp;<a href="https://gram.ax/resources/docs/doc-portal/static-site-generator#%D0%BF%D0%BE%D0%B4%D0%B4%D0%B5%D1%80%D0%B6%D0%BA%D0%B0-%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D1%8B-404" rel="noopener noreferrer nofollow">кастомная страница 404</a>,&nbsp;<a href="https://gram.ax/resources/docs/doc-portal/css-styles" rel="noopener noreferrer nofollow">настройка стилей</a>,&nbsp;<a href="https://gram.ax/resources/docs/doc-portal/indexing-in-search-engines#%D0%B4%D0%BB%D1%8F-%D1%81%D1%82%D0%B0%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B3%D0%BE-%D1%81%D0%B0%D0%B9%D1%82%D0%B0" rel="noopener noreferrer nofollow">индексации</a>,&nbsp;<a href="https://gram.ax/resources/docs/doc-portal/yandex-metrics" rel="noopener noreferrer nofollow">сбора метрик&nbsp;</a>и&nbsp;<a href="https://gram.ax/resources/docs/doc-portal/logo-and-go-to-site" rel="noopener noreferrer nofollow">логотипа</a>.</p></li><li><p><strong>Предпросмотр загруженных файлов</strong>. Теперь при клике на загруженный файл в статье открывается окно предпросмотра. Отображаются файлы форматов DOCX и PDF. Остальные форматы — скачиваются.</p></li><li><p><strong>Улучшения поиска.</strong></p><ul><li><p><strong>Новое ранжирование</strong>. Больший вес дается результатам, в которых искомое слово содержится в названии статьи или в одном из заголовков.</p></li><li><p><strong>Переход к поисковой фразе</strong>. После клика на результат поиска статья откроется на том фрагменте, в котором есть поисковый запрос.</p></li><li><p><strong>Настройка поисковой выдачи.</strong>&nbsp;Для статей можно указать поисковые запросы: если в поиске ввести один из них, статья отобразится выше остальных.</p></li><li><p><strong>Поиск по свойствам в приложении</strong>. Если на статьях установлены <a href="https://gram.ax/resources/docs/article/properties" rel="noopener noreferrer nofollow">свойства</a> — в поисковой строке можно отфильтровать по ним.</p></li><li><p><strong>Улучшение внешнего вида</strong>. Теперь в результатах есть указание на каталог, в котором содержится запрос. А также отображается иерархия заголовков в статье.</p></li></ul></li><li><p><strong>Улучшения Gramax Enterprise Server.</strong></p><ul><li><p><strong>Разворачивание с помощью Helm</strong>. Добавили новый способ разворачивания Gramax Enterprise Server в Kubernetes. </p></li><li><p><strong>Тестирование знаний</strong>. Реализовали модуль проверки знаний читателей: в статью можно добавить тест с разными типами вопросов. После прохождения статистика пользователей отобразится в панели администрирования.</p></li><li><p><strong>Поиск по вложенным файлам</strong>. Теперь поиск учитывает не только контент статьи, но и контент из PDF и DOCX-файлов.</p></li></ul></li></ul><p>О других изменениях читайте в <a href="https://gram.ax/resources/docs/whats-new" rel="noopener noreferrer nofollow">Release Notes.</a> </p> <a href="https://habr.com/ru/posts/975620/?utm_campaign=975620&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Thu, 11 Dec 2025 08:12:12 GMT</pubDate>
    <dc:creator><![CDATA[krakenkaken (Gramax)]]></dc:creator>
      
      <category><![CDATA[база знаний]]></category><category><![CDATA[ии помощник]]></category><category><![CDATA[пользовательская документация]]></category><category><![CDATA[docops]]></category><category><![CDATA[docs as code]]></category><category><![CDATA[ssg]]></category><category><![CDATA[проектная документация]]></category><category><![CDATA[продуктовая документация]]></category><category><![CDATA[управление знаниями]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @denis-19 — Программирование (+4) — 03.09.2025 14:56]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/943544/</guid>
    <link>https://habr.com/ru/posts/943544/?utm_campaign=943544&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p>«СберТех», Cloud.ru и Хабр заколлабились и <a href="https://gitverse.habr.io/files/terms.pdf" rel="noopener noreferrer nofollow">запустили</a> грантовую программу «Код без&nbsp;границ». Это отличная мотивация для&nbsp;разработчиков и ресурсы для&nbsp;проектов. Можно доработать свой проект с&nbsp;поддержкой сообщества, найти единомышленников и показать свои возможности. </p><p>Участвовать просто: </p><ul><li><p>разместить свой проект на&nbsp;GitVerse (СберТех) или <a href="https://gitverse.habr.io/" rel="noopener noreferrer nofollow">импортировать</a> его с&nbsp;другой площадки. </p></li><li><p>делится кодом и вдохновляться чужими разработками. </p></li></ul><p>Номинации следующие: ИИ‑инновации, «Наука и образование», «Проекты для&nbsp;всех», «Разработка для&nbsp;разработчиков». </p><p>Заявки на грантовую программу «Код без&nbsp;границ» <a href="https://gitverse.habr.io/" rel="noopener noreferrer nofollow">принимаются</a> с 3&nbsp;сентября по 31&nbsp;октября. Отбор проведут в&nbsp;ноябре, а&nbsp;результаты огласят в&nbsp;декабре. </p><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/4a5/882/86e/4a588286e628e3829bea0562aa3c50c3.png" width="943" height="586"></figure> <a href="https://habr.com/ru/posts/943544/?utm_campaign=943544&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Wed, 03 Sep 2025 11:56:40 GMT</pubDate>
    <dc:creator><![CDATA[denis-19]]></dc:creator>
      
      <category><![CDATA[Код без границ]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @IT-VAVILON — ReactJS (+3) — N/P]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/935734/</guid>
    <link>https://habr.com/ru/posts/935734/?utm_campaign=935734&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p><strong>7 полезных плагинов для фронтенд-разработки в VS Code!</strong></p><p>Сегодня хочу поделиться с вами списком полезных плагинов для Visual Studio Code, которые упростят вашу работу и повысят производительность.</p><ol><li><p><strong>ESLint </strong>— находит ошибки и баги в JS/TS коде. Незаменим для профессиональной разработки. 🛠</p></li><li><p><strong>Prettier </strong>— автоматически форматирует код по стандартам. Никаких споров о стилях! 📊</p></li><li><p><strong>Code Spell Checker</strong> — ищет опечатки в коде и комментариях. Больше никаких ошибок из-за опечаток! Для русского языка нужно установить дополнительный плагин <strong>Russian - Code Spell Checker</strong> 🔍</p></li><li><p><strong>DotENV </strong>— подсветка синтаксиса для .env файлов. Переменные окружения больше не путаются! 📦</p></li><li><p><strong>GitLens </strong>— показывает, кто и когда менял каждую строку кода. Незаменим для работы в команде.</p></li><li><p><strong>NPM outdated</strong> — показывает устаревшие зависимости в проекте. Не пропустите важные обновления! ⏳</p></li><li><p><strong>SonarQube </strong>— анализирует качество кода, ищет уязвимости. 🔐</p></li></ol><p>Установите эти плагины и сделайте свою работу ещё эффективнее! 💻</p> <a href="https://habr.com/ru/posts/935734/?utm_campaign=935734&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Wed, 20 Aug 2025 06:30:36 GMT</pubDate>
    <dc:creator><![CDATA[IT-VAVILON]]></dc:creator>
      
      <category><![CDATA[vs code]]></category><category><![CDATA[vs code плагины фронтенд]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @kirillkosolapov — Блог компании Amvera (+4) — 25.07.2025 14:44]]></title>
    <guid isPermaLink="true">https://habr.com/ru/companies/amvera/posts/931102/</guid>
    <link>https://habr.com/ru/companies/amvera/posts/931102/?utm_campaign=931102&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p><strong>Быстрые сборки с функцией Rollback в Amvera Cloud</strong></p><p>Ранее в Amvera Cloud, были возможны откаты только путём новой сборки из нужного коммита в Git-репозитории. Помимо этого, использовалась&nbsp;медленная технология сборки. </p><p><strong>Мы ускорили сборки до 10 раз и сделали возможность быстрого отката к предыдущим версиям!</strong></p><p>Стало легче откатывать приложение, в случае ошибок.</p><p>Подключить быстрые сборки можно в разделе проекта «Контроль версий».</p><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/176/6c2/ffe/1766c2ffe720113c261c90f91209d336.png" alt="Интерфейс управления версиями сборок" title="Интерфейс управления версиями сборок" width="3404" height="1454"><div><figcaption>Интерфейс управления версиями сборок</figcaption></div></figure><p>Новые сборки</p><ol><li><p>Быстрее старых до 10 раз.</p></li><li><p>Позволяют откатываться к предыдущим версиям одной кнопкой. Это полезно, если вы случайно накатили баг и надо вернуться к прошлой версии.</p></li></ol><p><a href="https://amvera.ru/?utm_source=habr&amp;utm_medium=article&amp;utm_campaign=rokkback" rel="noopener noreferrer nofollow">Amvera Cloud</a> – облако для простого запуска проектов со встроенным CI/CD (деплой идёт через Git или загрузку файлов в интерфейсе),&nbsp;бесплатными https-доменами, мониторингом работы приложений, встроенным проксированием до ведущих LLM и собственным инференсом LLaMA. </p><p>Вам не нужно думать о настройке инфраструктуры. Git push amvera master и ваш проект запущен. Зарегистрируйтесь и получите 111 рублей на тест.&nbsp;</p> <a href="https://habr.com/ru/posts/931102/?utm_campaign=931102&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Fri, 25 Jul 2025 11:44:26 GMT</pubDate>
    <dc:creator><![CDATA[kirillkosolapov (Amvera)]]></dc:creator>
      
      <category><![CDATA[rollback]]></category><category><![CDATA[rollback amvera]]></category><category><![CDATA[сборки в amvera]]></category><category><![CDATA[контроль версий в Amvera]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @black1277 — Git (+1) — 17.07.2025 17:06]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/928690/</guid>
    <link>https://habr.com/ru/posts/928690/?utm_campaign=928690&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p><strong>⚙️ Настройка разных пользователей Git для разных проектов</strong>  <br><br>В домашней директории есть три папки:<br><br>- <code>~/ProjectHome/</code><br>- <code>~/ProjectWork/</code><br>- <code>~/ProjectOther/</code><br><br>В каждой нужно работать от своего пользователя:<br><br>- <code>userHome</code><br>- <code>userWork</code><br>- <code>userOther</code><br><br>Чтобы работать в каждом проекте <strong>без дополнительных переключений</strong>, нужно сделать следующее:  <br><strong>1. Добавить настройки в <code>.gitconfig</code></strong><br><br>Откройте файл <code>~/.gitconfig</code> и добавьте в него:<br><br><code>[includeIf "gitdir:~/ProjectHome/"]</code><br><code>  path = ~/.gitconfig-home</code><br><code>[includeIf "gitdir:~/ProjectWork/"]</code><br><code>  path = ~/.gitconfig-work</code><br><code>[includeIf "gitdir:~/ProjectOther/"]</code><br><code>  path = ~/.gitconfig-other </code><br><br><strong>2. Создать отдельные конфиги для каждого пользователя</strong><br>Создайте в домашней директории три файла:</p><p><code>- ~/.gitconfig-home</code><br><code>- ~/.gitconfig-work</code><br><code>- ~/.gitconfig-other</code><br><br><strong>3. Прописать пользователя и SSH-ключ в каждом конфиге</strong> <br>Пример содержимого для <code>~/.gitconfig-home</code>:<br><br><code>[user]</code><br><code>  name = userHome</code><br><code>  email =userHome@mail.ru</code><br><code>[core]</code><br><code>  sshCommand = "ssh -i ~/.ssh/id_userHome_ed25519"</code><br><br>Аналогично создайте <code>.gitconfig-work</code> и <code>.gitconfig-other</code>, указав соответствующего пользователя, почту и путь к ключу.<br><br>⚠️ При этом из основного <code>.gitconfig</code> нужно <strong>удалить секции [user] и [core.sshCommand]</strong>, чтобы не было конфликтов.<br><br><strong>4. Указать правильный remote для каждого проекта в своей папке</strong><br><br>Для проектов в <code>~/ProjectHome/</code>:<br><code>git remote set-url origin git@github.com:userHome/ProjectHome.git</code><br><br>Для проектов в <code>~/ProjectWork/</code>:<br><code>git remote set-url origin git@github.com:userWork/ProjectWork.git</code><br><br>Для проектов в <code>~/ProjectOther/</code>:<br><code>git remote set-url origin git@github.com:userOther/ProjectOther.git</code><br><br><br>💡 <code>ProjectHome.git, ProjectWork.git, ProjectOther.git </code>- это просто примеры названий репозиториев, они могут быть любыми.<br><br>📌 <strong>Важно:</strong> эти команды нужно выполнять <strong>для каждого проекта отдельно,</strong> а не один раз для всей папки.<br><br><strong>5. Разместить SSH-ключи</strong><br><br>В директории <code>~/.ssh/</code> должны находиться три приватных ключа, которые вы сгенерировали для каждого пользователя.<br><br>Например:<code><br>- id_userHome_ed25519<br>- id_userWork_ed25519<br>- id_userOther_ed25519</code><br><br>Убедитесь, что имя ключа соответствует указанному в параметре <code>sshCommand</code> внутри соответствующего <code>.gitconfig-*</code><br><br>✅ <strong>Результат</strong><br><br><em>Теперь можно</em>:<br>- Открыть в редакторе любой проект из этих папок.<br>- Работать, делать коммиты и пушить - <strong>без ручного переключения пользователя или ключа</strong>.<br>- Открыть сразу несколько проектов из разных папок - <strong>всё будет работать корректно</strong>.<br><br>Можно добавить и больше папок с пользователями - принцип остаётся тем же.<br></p><p>Добавлю еще вариант, подходит для Gitlab:<br><a href="https://qna.habr.com/q/1400592" rel="noopener noreferrer nofollow">https://qna.habr.com/q/1400592</a></p> <a href="https://habr.com/ru/posts/928690/?utm_campaign=928690&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Thu, 17 Jul 2025 14:06:54 GMT</pubDate>
    <dc:creator><![CDATA[black1277]]></dc:creator>
      
      <category><![CDATA[git]]></category><category><![CDATA[github]]></category><category><![CDATA[.gitconfig]]></category><category><![CDATA[gitlab]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @Prog-Time — Git (+2) — N/P]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/928048/</guid>
    <link>https://habr.com/ru/posts/928048/?utm_campaign=928048&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p><strong>Автоматическое добавление номера задачи в коммит</strong></p><p>Привет, Хабр! 👋<br>Хочу поделиться небольшой, но полезной фичей, которая упростила мне жизнь при оформлении коммитов.</p><p>В своей работе я придерживаюсь структурированного подхода к именованию веток и сообщений коммитов. Подробнее об этом можно почитать здесь:<br> 📎 <a href="https://habr.com/ru/articles/820547/" rel="noopener noreferrer nofollow">https://habr.com/ru/articles/820547/</a></p><p>Я использую предложенные в статье правила, немного адаптировав их под себя. Например, добавляю <strong>номер задачи</strong> в текст коммита — это сильно упрощает анализ изменений при подготовке релиза.</p><p><strong>Почему это удобно?</strong></p><p>Указание номера задачи позволяет быстро понять, какие именно тикеты попадают в релиз. Особенно это помогает при ревью и при деплое.</p><p>Пример структуры ветки:</p><p><code>feat/dev-123_filter или fix/dev-432_filter </code></p><p>Сообщения коммитов я пишу в следующем формате:</p><p><code>dev-123 | настроил сортировку в фильтре </code></p><p>Чтобы не вставлять руками номер задачи каждый раз, я написал небольшой shell-скрипт, который делает это автоматически.</p><p><strong>Скрипт <code>prepare-commit-msg</code></strong></p><pre><code class="bash">#!/bin/sh

COMMIT_MSG_FILE=".git/COMMIT_EDITMSG"
BRANCH_NAME=$(git rev-parse --abbrev-ref HEAD)

if echo "$BRANCH_NAME" | grep -qE 'dev-[0-9]+'; then
  TASK_ID=$(echo "$BRANCH_NAME" | grep -oE 'dev-[0-9]+')

  if ! grep -q "$TASK_ID" "$COMMIT_MSG_FILE"; then
    sed -i.bak "1s/^/$TASK_ID | /" "$COMMIT_MSG_FILE"
    rm -f "$COMMIT_MSG_FILE.bak"
  fi
fi</code></pre><p>Скрипт нужно сохранить как <code>.git/hooks/prepare-commit-msg</code> и сделать исполняемым:</p><pre><code class="bash">chmod +x .git/hooks/prepare-commit-msg</code></pre><p><strong>Как это работает?</strong></p><ul><li><p><code>COMMIT_MSG_FILE</code> — путь до файла, в который Git записывает текст коммита.</p></li><li><p><code>BRANCH_NAME</code> — название текущей ветки.</p></li><li><p>Сначала проверяется, есть ли в названии ветки номер задачи (<code>dev-123</code>).</p></li><li><p>Если он найден и ещё не указан в коммите — скрипт добавляет его в начало первой строки сообщения.</p></li></ul><p>Таким образом, ваш коммит автоматически будет выглядеть так:</p><p><code>dev-123 | добавил пагинацию в список товаров</code></p><p>Вроде мелочь, а приятно — экономит время и упрощает навигацию по истории коммитов.</p><p>Если будет интересно — это и другие полезные скрипты, на моём GitHub</p><p><a href="https://github.com/prog-time" rel="noopener noreferrer nofollow">https://github.com/prog-time</a></p><p>Спасибо за внимание! ✌️</p> <a href="https://habr.com/ru/posts/928048/?utm_campaign=928048&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Wed, 16 Jul 2025 07:10:55 GMT</pubDate>
    <dc:creator><![CDATA[Prog-Time]]></dc:creator>
      
      <category><![CDATA[shell]]></category><category><![CDATA[git]]></category><category><![CDATA[commit]]></category><category><![CDATA[git hooks]]></category><category><![CDATA[bash]]></category><category><![CDATA[автоматизация]]></category><category><![CDATA[разработка]]></category><category><![CDATA[workflow]]></category><category><![CDATA[хаки]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @krakenkaken — Блог компании Gramax (+4) — 02.07.2025 17:42]]></title>
    <guid isPermaLink="true">https://habr.com/ru/companies/gram_ax/posts/924372/</guid>
    <link>https://habr.com/ru/companies/gram_ax/posts/924372/?utm_campaign=924372&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/d6a/229/975/d6a229975021f2c78125fbe032c01219.png" width="1860" height="534"></figure><p>Новая версия Gramax!</p><ul><li><p><strong>Сравнение ревизий</strong>. Можно сравнить текущую версию каталога с одной из предыдущих.</p></li><li><p><strong>Экспорт в корпоративных шаблонах DOCX</strong>. Добавили возможность загрузить корпоративный шаблон DOCX и экспортировать статьи и каталоги в этом шаблоне.</p></li><li><p><strong>Избранное</strong>. Каталоги и статьи можно пометить как&nbsp;<em>Избранные</em>&nbsp;для быстрой навигации. Это доступно как в приложении, так и на портале документации.</p></li><li><p><strong>Связанные статьи</strong>. В меню статьи можно просмотреть: куда ссылается статья и какие статьи ссылаются на нее.</p></li></ul><p>Об этих и других изменениях читайте в <a href="https://gram.ax/resources/docs/whats-new" rel="noopener noreferrer nofollow">Release Notes</a> 🔥<br></p> <a href="https://habr.com/ru/posts/924372/?utm_campaign=924372&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Wed, 02 Jul 2025 14:42:58 GMT</pubDate>
    <dc:creator><![CDATA[krakenkaken (Gramax)]]></dc:creator>
      
      <category><![CDATA[docx]]></category><category><![CDATA[docs as code]]></category><category><![CDATA[документация как код]]></category><category><![CDATA[пользовательская документация]]></category><category><![CDATA[проектная документация]]></category><category><![CDATA[продуктовая документация]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @SomeEditor — Блог компании Yandex Cloud & Yandex Infrastructure (+4) — N/P]]></title>
    <guid isPermaLink="true">https://habr.com/ru/companies/yandex_cloud_and_infra/posts/915692/</guid>
    <link>https://habr.com/ru/companies/yandex_cloud_and_infra/posts/915692/?utm_campaign=915692&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p><strong>Обновляем платформу SourceCraft и открываем доступ к ней для всех разработчиков</strong></p><p>Сегодня Yandex B2B Tech открыла публичный доступ к&nbsp;платформе для&nbsp;разработки SourceCraft и представила её новые возможности. В&nbsp;платформу интегрированы инструменты безопасности, которые обеспечат защищённую разработку программных продуктов. А&nbsp;в&nbsp;ИИ‑помощнике SourceCraft Code Assistant появился чат‑режим, что&nbsp;увеличит скорость и эффективность разработки.</p><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/81f/0cc/32c/81f0cc32c2455d37597fe3dc22d4613e.png" width="1600" height="900"></figure><p>Удобство командной работы повысится за&nbsp;счёт бранч‑ и ревью‑политик, встроенных в&nbsp;интерфейс, а&nbsp;также аутентификации через SSO. Также появляется возможность зеркалирования репозиториев с&nbsp;GitHub и публичный API.</p><p><strong>Инструменты безопасности</strong></p><p>На&nbsp;платформе стали доступны инструменты безопасной разработки: сканер секретов в&nbsp;коде и анализ зависимостей в&nbsp;кодовой базе. </p><blockquote><p><em>По&nbsp;данным </em><a href="https://tei.forrester.com/go/Gitlab/GitLabUltimate//docs/TheTEIOfGitLabUltimate.pdf" rel="noopener noreferrer nofollow"><em>исследования</em></a><em> аналитиков Forrester интеграция инструментов безопасности в&nbsp;разработку на 81% снижает трудозатраты на&nbsp;ИБ‑поддержку всего проекта. </em> </p></blockquote><p><strong>Чат‑режим в&nbsp;SourceCraft Code Assistant </strong></p><p><a href="https://sourcecraft.dev/portal/code-assistant/" rel="noopener noreferrer nofollow">ИИ‑помощником SourceCraft Code Assistant</a> пользуются десятки тысяч разработчиков. Теперь в&nbsp;нём доступен чат‑режим, интегрированный непосредственно в&nbsp;среду разработки. В&nbsp;диалоговом режиме на&nbsp;естественном языке можно задать вопрос ИИ‑ассистенту, сгенерировать код, юнит‑тесты, документацию. Это ускорит поиск необходимой информации и оценку предлагаемых решений. Функциональность доступна в&nbsp;плагинах для&nbsp;VSCode и IDE от&nbsp;JetBrains. </p><p><strong>Зеркалирование и бесшовная миграция</strong></p><p>Миграция проектов с&nbsp;GitHub становится бесшовной&nbsp;— кроме кода переносятся Issues, PRs, Labels, Milestones, Comments. Также можно выбрать ветки для&nbsp;зеркалирования&nbsp;— непрерывной синхронизации кода.</p><p>Также появился федеративный доступ к&nbsp;платформе для&nbsp;компаний&nbsp;— авторизация через SSO. </p><p><strong>Публичный API</strong></p><p>Благодаря появлению публичного API платформа становится расширяемой. Пользователь сможет взаимодействовать с&nbsp;SourceCraft и обеспечивать автоматизацию и интеграцию с&nbsp;другими приложениями. Первая версия публичного API доступна для&nbsp;управления задачами, список будет пополняться.</p><p><strong>Правила работы с&nbsp;ИТ‑проектами </strong></p><p>В&nbsp;интерфейсе платформы появились бранч‑ и ревью‑политики&nbsp;— правила работы с&nbsp;ветками и проверками кода, которые интегрируются в&nbsp;систему контроля версий и процессы CI/CD. </p><p><strong>Опенсорс</strong></p><p>Появился анонимный доступ к&nbsp;публичным репозиториям платформы.<strong> </strong>Пользователи SourceCraft смогут создавать независимые копии репозиториев (forks) опенсорс‑проектов. Это позволит вносить персональные изменения, не&nbsp;затрагивая напрямую исходную кодовую базу. При&nbsp;этом копия сохраняет связь с&nbsp;оригиналом для&nbsp;получения обновлений.</p><p><strong>Удобство работы с&nbsp;кодом</strong></p><p>Интерфейс платформы теперь позволяет просматривать структуру файлов для&nbsp;шести языков программирования: Python, C++, Java, Go, TypeScript и JavaScript. Функциональность навигации по&nbsp;коду стала умнее и аналогично теперь поддерживает 6&nbsp;языков.</p><p><strong>Автоматизация CI/CD‑процессов</strong></p><p>Среди обновлений, связанных со сборкой и развертыванием кода, появились self‑hosted runners&nbsp;— теперь можно запускать задачи как&nbsp;на&nbsp;виртуальных машинах Yandex Cloud, так и в&nbsp;своём окружении. Также появились flavours&nbsp;— теги для&nbsp;пользовательских задач, за&nbsp;счёт которых можно выбирать, где запускать задачу. Помимо этого в&nbsp;интерфейсе платформы появилась возможность не&nbsp;только разрабатывать, но&nbsp;сразу публиковать мобильные приложения в&nbsp;App Store, Google Play, RuStore, Huawei AppGalery.</p><p><strong>Packages</strong></p><p>Появилась возможность создавать и использовать собственные программные пакеты популярных форматов: наборы кода, библиотек, модулей или&nbsp;компонентов. Разработчик сможет хранить их в&nbsp;персональном облаке, привязанном к&nbsp;организации SourceCraft, и использовать в&nbsp;своих проектах. Packages также интегрированы с&nbsp;CI/CD платформы. </p><p>Вход в&nbsp;SourceCraft реализован через Яндекс ID аккаунт. Зайти на&nbsp;обновлённую платформу можно <a href="https://sourcecraft.dev" rel="noopener noreferrer nofollow">на&nbsp;сайте SourceCraft</a>.</p> <a href="https://habr.com/ru/posts/915692/?utm_campaign=915692&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Thu, 05 Jun 2025 07:25:47 GMT</pubDate>
    <dc:creator><![CDATA[SomeEditor (Yandex Cloud & Yandex Infrastructure)]]></dc:creator>
      
      <category><![CDATA[sourcecraft]]></category><category><![CDATA[git]]></category><category><![CDATA[ide]]></category><category><![CDATA[developer tools]]></category><category><![CDATA[репозиторий]]></category><category><![CDATA[зеркалирование]]></category><category><![CDATA[ревью-политики]]></category><category><![CDATA[api]]></category><category><![CDATA[ci]]></category><category><![CDATA[cd]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @denis-19 — Git (+4) — 20.05.2025 10:04]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/910956/</guid>
    <link>https://habr.com/ru/posts/910956/?utm_campaign=910956&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p>В репозитории Tencent Cloud SDK for Go на GitHub <a href="https://github.com/TencentCloud/tencentcloud-sdk-go" rel="noopener noreferrer nofollow">содержится</a> более 200&nbsp;000 тегов Git. Это так много, что попытка взаимодействия с тегами в этом репозитории может фактически привести к сбоям в работе GitHub (504 Gateway Time-out. The server didn't respond in time). </p><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/9cb/07b/1e5/9cb07b1e5578c7f7a114f7a9842164e9.png" width="1083" height="769"></figure> <a href="https://habr.com/ru/posts/910956/?utm_campaign=910956&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Tue, 20 May 2025 07:04:23 GMT</pubDate>
    <dc:creator><![CDATA[denis-19]]></dc:creator>
      
      <category><![CDATA[тег]]></category><category><![CDATA[репозиторий github]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @kirillkosolapov — Блог компании Amvera (+4) — 06.05.2025 11:20]]></title>
    <guid isPermaLink="true">https://habr.com/ru/companies/amvera/posts/907254/</guid>
    <link>https://habr.com/ru/companies/amvera/posts/907254/?utm_campaign=907254&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p><strong>Кардинальное упрощение привязки GitHub, GitLab, Bitbucket в Amvera Cloud</strong></p><p>Привязка репозиториев GitHub, GitLab, BitBucket<strong> </strong>вызывала у наших пользователей затруднения, и мы обещали упростить процесс.</p><p>Теперь для привязки репозитория достаточно&nbsp;указать токен и выбрать ветку и репозиторий.</p><p><strong>Способ позволяет организовать максимально простой деплой и обновление приложений через git push. </strong>Для обновления приложения достаточно сделать коммит в привязанный репозиторий, и оно соберется и бесшовно запустится автоматически.</p><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/bcb/e75/cb3/bcbe75cb39f0be016ebb4fa586518771.png" alt="Заполняем три поля и CI/CD готов" title="Заполняем три поля и CI/CD готов" width="1600" height="979"><div><figcaption>Заполняем три поля и CI/CD готов</figcaption></div></figure><p>Подробная инструкция по подключению доступна по <a href="https://docs.amvera.ru/applications/git/webhooks.html" rel="noopener noreferrer nofollow">ссылке</a>.</p><p><a href="https://amvera.ru/?utm_source=habr&amp;utm_medium=article&amp;utm_campaign=gitpush" rel="noopener noreferrer nofollow">Amvera Cloud </a>— это облако для простого деплоя приложений через git push (или интерфейс). Встроенный CI/CD, бэкапы и мониторинг позволяют развернуть проект тремя командами в IDE и не думать о настойке инфраструктуры. Amvera проще, чем использование VPS.</p> <a href="https://habr.com/ru/posts/907254/?utm_campaign=907254&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Tue, 06 May 2025 08:20:07 GMT</pubDate>
    <dc:creator><![CDATA[kirillkosolapov (Amvera)]]></dc:creator>
      
      <category><![CDATA[Привязка репозитория в Amvera]]></category><category><![CDATA[GitHub в Amvera]]></category><category><![CDATA[GitLab в Amvera]]></category><category><![CDATA[BitBucket в Amvera]]></category><category><![CDATA[git push]]></category><category><![CDATA[деплой]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @yadro_team — Блог компании YADRO (+3) — 24.02.2025 15:05]]></title>
    <guid isPermaLink="true">https://habr.com/ru/companies/yadro/posts/885282/</guid>
    <link>https://habr.com/ru/companies/yadro/posts/885282/?utm_campaign=885282&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p><strong>Обойдемся и без Terraform: внедряем GitOps-подход для виртуальных машин</strong> </p><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/b0a/d4c/3c6/b0ad4c3c6b66876e7612c45aa4d0a9ff.jpg" alt="Источник" title="Источник" width="750" height="470"><div><figcaption><a href="https://www.pexels.com/photo/realistic-vr-racing-simulator-experience-28993071/" rel="noopener noreferrer nofollow">Источник</a></figcaption></div></figure><p>Для работы с OpenStack удобно использовать Terraform. Хотя компания Hashicorp прекратила свою деятельность на территории России, нам все еще доступен open source-форк под говорящим названием OpenTofu. Он позволяет автоматизировать создание виртуальных машин на основе текстовых файлов конфигурации. Схема его работы примерно такая:</p><ol><li><p>В GitOps-репозитории находятся terraform-файлы с описанием параметров виртуальных машин и DNS.</p></li><li><p>На основе этих файлов формируются конфигурации для новых ВМ.</p></li><li><p>Все изменения вносятся через pull request, а их корректность проверяется автоматическими запусками тестов в CI.</p></li><li><p>После слияния изменений CI запускает процесс приведения нового желаемого состояния репозитория к действительному.</p></li></ol><p>Этот подход отлично масштабируется, позволяет быстро создавать новые кластеры. Достаточно лишь скопировать все файлы в новые директории и поменять нужные переменные. В итоге с OpenTofu вы сможете описывать инфраструктуру в декларативном формате и автоматически применять изменения.</p><blockquote><p><a href="https://habr.com/ru/companies/yadro/articles/883468/" rel="noopener noreferrer nofollow">В своей статье</a> Кирилл Яшин рассказывает, как с нуля реализовать такой подход к виртуальным машинам, используя провайдеры для работы с OpenStack и DNS.</p></blockquote><p></p> <a href="https://habr.com/ru/posts/885282/?utm_campaign=885282&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Mon, 24 Feb 2025 12:05:48 GMT</pubDate>
    <dc:creator><![CDATA[yadro_team (YADRO)]]></dc:creator>
      
      <category><![CDATA[openstack]]></category><category><![CDATA[gitops]]></category><category><![CDATA[opentofu]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @yadro_team — Блог компании YADRO (+4) — 24.01.2025 15:16]]></title>
    <guid isPermaLink="true">https://habr.com/ru/companies/yadro/posts/876388/</guid>
    <link>https://habr.com/ru/companies/yadro/posts/876388/?utm_campaign=876388&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p><strong>Это задачка для DevOps-инженера: почему ArgoCD не расшифровывал секреты из Vault</strong> </p><p>Нашему DevOps-специалисту Антону нужно было развернуть helm-чарт для Airflow с использованием ArgoCD. Как известно, ArgoCD реализует концепцию GitOps и подразумевает хранение манифестов в репозитории. Но часть данных в values чувствительна, например пароль от базы данных PostgreSQL. Поэтому неплохо было бы вынести эти данные в хранилище секретов (в этом случае —  <a href="https://github.com/hashicorp/vault" rel="noopener noreferrer nofollow">HashiCorp Vault</a>), чтобы скрыть информацию от лишних глаз.</p><p>Есть несколько способов подтянуть секреты из Vault в поды. Наиболее предпочтительный по ряду причин —&nbsp;<a href="https://developer.hashicorp.com/vault/docs/platform/k8s/injector" rel="noopener noreferrer nofollow">vault-injector</a>. В обычной ситуации Антон бы воспользовался им, но в случае с&nbsp;helm-чартом Airflow задача показалась непростой. Поэтому он решил воспользоваться менее предпочтительным, но точно рабочим (как думал Антон) вариантом&nbsp;<a href="https://github.com/argoproj-labs/argocd-vault-plugin" rel="noopener noreferrer nofollow"><u>с ArgoCD Vault Plugin</u></a>.</p><p><strong>Какая вылезла проблема</strong></p><p>Когда секреты были добавлены в хранилище, а ArgoCD Application написан, Антон попытался развернуть его для теста. Вот примерный Application, с которым это делалось (весомая часть пропущена для компактности):</p><pre><code class="yaml">apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
 name: airflow
 labels:
   app.kubernetes.io/name: airflow
   app.kubernetes.io/component: airflow
 namespace: argocd
 finalizers:
   - resources-finalizer.argocd.argoproj.io
spec:
 project: default
 destination:
   namespace: some-namespace
   name: cluster
 source:
   repoURL: "airflow_repo_url"
   targetRevision: "revision"
   chart: airflow
   plugin:
     name: argocd-vault-plugin-helm
     env:
       - name: HELM_VALUES
         value: |
             ...
             metadataConnection:
               user: user
               pass: &lt;path:path/to/airflow/secrets#postgres_password&gt;
               protocol: postgresql
               host: postgres.db.url
               port: 5432
               db: airflow_db
               sslmode: prefer
             ...
   
 syncPolicy:
   automated:
     prune: true
     selfHeal: true
   syncOptions:
     - Validate=true
     - CreateNamespace=true</code></pre><p>Ничего необычного, за исключением прокидывания values прямо из Application и того самого секрета. А еще — компонент webserver отказался запускаться, ссылаясь на невозможность подключиться к базе данных.&nbsp;Хотя данные были абсолютно точно правильными. </p><blockquote><p><strong>В чем итоге была проблем и как Антон с ней справился, читайте <a href="https://habr.com/ru/companies/yadro/articles/873476/" rel="noopener noreferrer nofollow">в статье →</a></strong><a href="https://habr.com/ru/companies/yadro/articles/873476/" rel="noopener noreferrer nofollow"> </a></p></blockquote><p></p> <a href="https://habr.com/ru/posts/876388/?utm_campaign=876388&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Fri, 24 Jan 2025 12:16:37 GMT</pubDate>
    <dc:creator><![CDATA[yadro_team (YADRO)]]></dc:creator>
      
      <category><![CDATA[argocd]]></category><category><![CDATA[vault]]></category><category><![CDATA[airflow]]></category><category><![CDATA[секреты]]></category><category><![CDATA[devops]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @DevFM — Программирование (+1) — N/P]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/867724/</guid>
    <link>https://habr.com/ru/posts/867724/?utm_campaign=867724&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p><strong>Зачем нужен code review</strong></p><p>Выстроенный code review позволяет:<br> — найти баги и не пропустить их в прод. Конечно, в дополнение к статическому анализу с помощью настроенного <a href="https://habr.com/ru/posts/866642/" rel="noopener noreferrer nofollow">pre-commit</a> и тестам;<br> — выявить проблемы в архитектуре;<br> — сделать код единообразным. Спорный тезис, за единообразие должны отвечать линтеры и автоформатирование. Но code review помогает наладить те вещи, которые автоформатирование не тянут, например, именование переменных.</p><p>В долгосрочной перспективе постоянные code review:<br> — налаживают обратную связь между участниками;<br> — бустят уровень разработчиков, позволяя учиться на своих и чужих ошибках и давая обширную практику чтения чужого кода;<br> — помогают делиться знаниями о технологиях, вариантах решения проблем, возможных проблемах и самом проекте в команде;<br> — дают приток новых идей для улучшений в процессах, подходах и автоматизации;<br> — увеличивают децентрализацию знаний и bus factor.</p><p>В <a href="https://tlroadmap.io/roles/technical-lead/product-quality/code-review.html" rel="noopener noreferrer nofollow">статье</a> даны примеры хорошего и плохого code review, способы прокачки и вообще много разных нюансов.</p><p></p> <a href="https://habr.com/ru/posts/867724/?utm_campaign=867724&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Thu, 19 Dec 2024 08:15:53 GMT</pubDate>
    <dc:creator><![CDATA[DevFM]]></dc:creator>
      
      <category><![CDATA[командная работа]]></category><category><![CDATA[code review]]></category><category><![CDATA[DevFM]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @DevFM — Git (+2) — N/P]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/866642/</guid>
    <link>https://habr.com/ru/posts/866642/?utm_campaign=866642&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p><strong>Pre-commit — must have утилита любого проекта</strong></p><p>Бывает, смотришь на код и сразу видно, что код плохой. Признаков может быть множество:<br> — разные куски кода по-разному отформатированы;<br> — импорты в файлах никак не структурированы;<br> — используются вперемешку синтаксис старых и новых версий питона;<br> — где-то видны зачатки использования типов, но не везде;<br> — где-то docstring есть, где-то нет;<br>Всё это характеризуется так: нет единого стиля в написании кода. Проблема становится особенно актуальной, когда над проектом трудится несколько разработчиков.</p><p>Частично эту проблему решает встроенный в среду разработки анализатор кода или запускаемые вручную анализаторы кода. Но анализатор в среде разработки может быть настроен по-разному у разных членов команды. Если в проекте принято использовать несколько анализаторов одновременно, то разработчик может забыть прогнать код через все анализаторы до коммита.</p><p>Для решения всех обозначенных проблем есть замечательная утилита — <a href="https://pre-commit.com/" rel="noopener noreferrer nofollow">pre-commit</a>. Один раз в конфиге прописываете, какие анализаторы кода нужно запускать, и далее при любом коммите они будут запускаться автоматически. С этого момента код будет опрятным и шелковистым.  Вы просто не сможете сделать коммит, если у анализатора есть вопросики к коду.</p><p>В&nbsp;<a href="https://t.me/devfm" rel="noopener noreferrer nofollow">DevFM</a>&nbsp;пишу о полезном для разработчика.</p> <a href="https://habr.com/ru/posts/866642/?utm_campaign=866642&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Sun, 15 Dec 2024 10:25:04 GMT</pubDate>
    <dc:creator><![CDATA[DevFM]]></dc:creator>
      
      <category><![CDATA[python]]></category><category><![CDATA[линтер]]></category><category><![CDATA[pre-commit]]></category><category><![CDATA[DevFM]]></category><category><![CDATA[командная работа]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @stdDev_3 — Git — N/P]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/855774/</guid>
    <link>https://habr.com/ru/posts/855774/?utm_campaign=855774&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p>Для тех, кто хочет распилить монорепу на подмодули или уже сделал это. Задача со звёздочкой.</p><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/50d/bcc/2c8/50dbcc2c80ff588d1bf9bbf33c4c5d2b.jpg" width="804" height="774"></figure><p><strong>Дано:</strong> в репозитории около 50 подмодулей,&nbsp; текущие ветки у них имеют разные названия. Джун Вася создал в каждом подмодуле новую ветку и внёс минорные правки. Чтобы провести ревью, миддл Серёжа получил Васины изменения, переключил ветки родительского репозитория и выполнил команду:</p><pre><code>git submodule update&nbsp;--init --recursive</code></pre><p>После ревью Вася пошёл исправлять замечания, а Серёжа вернулся к разработке своей фичи, вот только подмодули теперь в состоянии head detached.</p><p><strong>Вопрос:</strong> как быстро подгорит у программистов из-за необходимости выставлять подмодули из состояния head detached в соответствующие feature-ветки, если процесс повторять?</p><p><strong>Решение:</strong> использовать команду:</p><pre><code>git submodule foreach --recursive 'git name-rev --name-only $sha1 | xargs git checkout'</code></pre><p>По хешу команда найдёт указатель и на него переключится. Если есть несколько указателей для текущего коммита, будет выбрано имя ветки первое по алфавиту.<br>Если на текущий коммит подмодуля никакая ветка не указывает, получим head detached. Рекурсивно (если у подмодулей есть подмодули) тоже работает.</p><p><strong>Ответ:</strong> так и живём.</p><p></p> <a href="https://habr.com/ru/posts/855774/?utm_campaign=855774&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Sun, 03 Nov 2024 11:27:24 GMT</pubDate>
    <dc:creator><![CDATA[stdDev_3]]></dc:creator>
      
      <category><![CDATA[git]]></category><category><![CDATA[submodule]]></category><category><![CDATA[git workflow]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @Vlada_McGree — Блог компании Nixys (+3) — N/P]]></title>
    <guid isPermaLink="true">https://habr.com/ru/companies/nixys/posts/834372/</guid>
    <link>https://habr.com/ru/companies/nixys/posts/834372/?utm_campaign=834372&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/78d/eae/ee8/78deaeee89acc7922657e6f1d0f9fe0a.png" width="1920" height="1080"></figure><p>Всем DevOps! Автоматизация проверки одобрений merge requests с помощью GitLab CI/CD и GitLab API — это классный способ без лишних затрат оптимизировать процесс управления кодом в вашей команде.</p><p><a href="https://nixys.ru/?utm_source=habr&amp;utm_medium=post&amp;utm_campaign=07.08.2024" rel="noopener noreferrer nofollow">Наш</a> DevOps-инженер Виктор рассказал, как он смог <strong>настроить approve rules для merge request в бесплатной версии GitLab CE</strong>.</p><p>Из статьи вы узнаете, какие инструменты и методы он применил, а также получите советы по настройке и интеграции решения в ваш рабочий процесс.</p><p>💻 Если ещё не читали — тогда <a href="https://habr.com/ru/companies/nixys/articles/822329/" rel="noopener noreferrer nofollow">вам сюда</a>!  </p> <a href="https://habr.com/ru/posts/834372/?utm_campaign=834372&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Fri, 09 Aug 2024 07:00:48 GMT</pubDate>
    <dc:creator><![CDATA[Vlada_McGree (Nixys)]]></dc:creator>
      
      <category><![CDATA[devops]]></category><category><![CDATA[апрув]]></category><category><![CDATA[approve]]></category><category><![CDATA[merge request]]></category><category><![CDATA[своими руками]]></category><category><![CDATA[gitlab]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @it_police — Текстовые редакторы и IDE (+2) — 06.08.2024 20:50]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/834320/</guid>
    <link>https://habr.com/ru/posts/834320/?utm_campaign=834320&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p>Российские IT-компании готовятся к массовому отключению иностранных сервисов. Большинство привычных сервисов могу скоро просто отвалиться.</p><p>Все из-за санкций Минфина США, которые запрещают предоставление услуг в сфере программного обеспечения, IT-консультирования и проектирования на территории РФ.</p><p>Российские IT-конторы, соответственно, вынуждены искать бесплатные альтернативы с открытым кодом, на которые не распространяется запрет, а облачные хранилища теперь — только российские.</p><p>Кстати, как я смотрю, Сбер очень активно к этому готовился. У них и IDE на базе PyCharm— GIGA IDE, и гит-платформа GitVerse (полный аналог GitHub), и куча еще всего.</p><p>Я пока не особо тестил GIGA IDE, т.к. полностью перешел на майковский VS Code. Но он на базе комьюнити версии, только с разными плюшками и ИИ. А гит-платформа выглядит симпатично, ничего больше сказать не могу. Вероятно, всё это имеет очень хороший смысл, если трудишься полностью в их экосистеме.</p><p>В любом случае, молодцы, что предоставляют альтернативу.</p><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/e16/250/a9d/e16250a9de8ee2363ba14e3614a110db.jpg" width="989" height="885"></figure><p></p> <a href="https://habr.com/ru/posts/834320/?utm_campaign=834320&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Tue, 06 Aug 2024 17:50:06 GMT</pubDate>
    <dc:creator><![CDATA[it_police]]></dc:creator>
      
      <category><![CDATA[ide]]></category><category><![CDATA[облачные сервисы]]></category><category><![CDATA[git]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @denis-19 — Open source (+3) — 30.07.2024 14:58]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/832516/</guid>
    <link>https://habr.com/ru/posts/832516/?utm_campaign=832516&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p><a href="https://lkml.org/lkml/2024/7/29/1196" rel="noopener noreferrer nofollow">Состоялся</a> выпуск распределенной системы управления исходными текстами <a href="http://git-scm.com/" rel="noopener noreferrer nofollow">Git 2.46</a>. </p><p>Git является одной из&nbsp;самых популярных, надёжных и высокопроизводительных систем управления версиями, предоставляющей гибкие средства нелинейной разработки, базирующиеся на&nbsp;ответвлении и слиянии веток. </p><p>Для&nbsp;обеспечения целостности истории и устойчивости к&nbsp;изменениям «задним числом» используются неявное хеширование всей предыдущей истории в&nbsp;каждом коммите, также возможно удостоверение цифровыми подписями разработчиков отдельных тегов и коммитов. </p><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/442/020/b5b/442020b5bfe40510c406b78b4bfd4e5c.png" width="1412" height="599"></figure><p>Исходный Код Git <a href="https://github.com/git/git/" rel="noopener noreferrer nofollow">распространяется</a> под лицензией GPLv2+. </p><p>По&nbsp;сравнению с&nbsp;<a href="https://habr.com/ru/hubs/git/posts/" rel="noopener noreferrer nofollow">прошлым выпуском</a> в&nbsp;новую версию принято 746&nbsp;изменений,<br> подготовленных при&nbsp;участии 96&nbsp;разработчиков, из&nbsp;которых 31&nbsp;впервые<br> участвуют в&nbsp;разработке.</p><p>Основные <a href="https://github.blog/open-source/git/highlights-from-git-2-46/" rel="noopener noreferrer nofollow">изменения</a>:</p><ul><li><p>добавлена экспериментальная поддержка нового вида битовых карт&nbsp;— «pseudo‑merge reachability bitmap», в&nbsp;которых в&nbsp;отличие от&nbsp;структуры «reachability bitmap» данные о&nbsp;наборах объектов, имеющих отношение к&nbsp;коммитам, хранятся в&nbsp;привязке сразу к&nbsp;нескольким коммитам.</p></li><li><p>реализован интерфейс командной строки для&nbsp;команды «git config», в&nbsp;котором вместо разрозненных опций для&nbsp;просмотра, переименования и удаления настроек и секций, таких как «‑get», «‑get‑all», «‑unset» и «‑remove‑section», <a href="https://git-scm.com/docs/git-config/2.46.0" rel="noopener noreferrer nofollow">предложен</a> набор отдельных субкоманд.</p></li><li><p>В&nbsp;команду git добавлена опция «‑no‑advice», отключающая все сообщения с&nbsp;рекомендациями и подсказками, что&nbsp;может оказаться полезным для&nbsp;предотвращения забивания лога&nbsp;лишней информацией при&nbsp;автоматизированном вызове git.</p></li></ul> <a href="https://habr.com/ru/posts/832516/?utm_campaign=832516&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Tue, 30 Jul 2024 11:58:35 GMT</pubDate>
    <dc:creator><![CDATA[denis-19]]></dc:creator>
      
      <category><![CDATA[Git 2.46]]></category><category><![CDATA[Git]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @denis-19 — Open source (+3) — 01.05.2024 08:10]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/811543/</guid>
    <link>https://habr.com/ru/posts/811543/?utm_campaign=811543&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p><a href="https://lkml.org/lkml/2024/4/29/1045" rel="noopener noreferrer nofollow">Состоялся</a> выпуск распределенной системы управления исходными текстами <a href="http://git-scm.com/" rel="noopener noreferrer nofollow">Git 2.45</a>. </p><p>Git является одной из самых популярных, надёжных и высокопроизводительных систем управления версиями, предоставляющей гибкие средства нелинейной разработки, базирующиеся на ответвлении и слиянии веток. </p><p>Для&nbsp;обеспечения целостности истории и устойчивости к&nbsp;изменениям «задним числом» используются неявное хеширование всей предыдущей истории в&nbsp;каждом коммите, также возможно удостоверение цифровыми подписями разработчиков отдельных тегов и коммитов. </p><p>Исходный Код Git <a href="https://github.com/git/git/" rel="noopener noreferrer nofollow">распространяется</a> под лицензией GPLv2+. </p><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/94b/b97/45d/94bb9745d2c08e5cc75d1cc37dcf49e4.png" width="751" height="481"></figure><p>По сравнению с прошлым выпуском в новую версию Git принято  540 изменений, подготовленных при участии 96 мейнтейнеров проекта, из которых 35 впервые приняли участие в разработке. </p><p>Основные <a href="https://github.blog/2024-04-29-highlights-from-git-2-45/" rel="noopener noreferrer nofollow">изменения</a>:</p><ul><li><p>добавлена предварительная поддержка бэкенда "reftable" для эффективного хранения в репозитории ссылок на ветки и теги;</p></li><li><p>предоставлены средства для обеспечения переносимости между  идентификаторами объектов на базе хэшей SHA-1 и SHA-256;</p></li><li><p>добавлена новая команда "git reflog list" для показа известных <a href="https://git-scm.com/docs/git-reflog" rel="noopener noreferrer nofollow">reflog-ов</a> и соответствующих им ссылок на теги и ветки;</p></li><li><p>в команде "git checkout -p" разрешено использовать символ "@" в качестве синонима имени "HEAD";</p></li><li><p>предоставлена возможность определения альтернативных префиксов для вывода "git diff", отображаемых перед файловым путём;</p></li><li><p>добавлен параметр core.commentString для определения строки-разделителя вместо символа "#" для игнорирования комментариев в сообщении для коммита.</p></li></ul> <a href="https://habr.com/ru/posts/811543/?utm_campaign=811543&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Wed, 01 May 2024 05:10:48 GMT</pubDate>
    <dc:creator><![CDATA[denis-19]]></dc:creator>
      
      <category><![CDATA[Git 2.45]]></category><category><![CDATA[Git]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @nikitaulshin — Управление разработкой (+2) — 08.04.2024 12:30]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/806117/</guid>
    <link>https://habr.com/ru/posts/806117/?utm_campaign=806117&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p><strong>Описание и комменты к код ревью</strong></p><p>Есть один очень простой, но удивительно эффективный способ ускорить код ревью в команде и сделать этот процесс более приятным.</p><p>Выложив Pull Request, напиши к нему описание и оставь комментарии.</p><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/f35/2e2/029/f352e2029f03999b339a95293383a8e8.png" width="1200" height="683"></figure><p>Вспомните свои ощущения, когда нужно поделать ревью. Лично я зачастую испытываю лень. Нужно открыть код, разобраться, какую задачу и каким способом он решает, составить собственное мнение, оставить комментарии... Можно устать, просто прочитав это предложение.</p><p>Позаботьтесь о своих коллегах. Сделайте короткое описание к PR, расскажите в двух словах о решаемой задаче и способе её решения (что было сделано).</p><p>Не нужно растекаться словом по древу. Достаточно буквально 3-5 предложений. Читать огромную портянку текста тоже никто не захочет.</p><p>Сделав это, оставьте комментарии к самому коду. На что ревьюерам стоит обратить внимание? Где вы сомневаетесь в своём решении? Если есть доработки какого-то общего кода, то зачем они были сделаны?</p><p>Эти комментарии облегчат жизнь человеку, который будет смотреть ваш код. Помогите ему выделить главное из кода и заострить своё внимание именно на этом.</p><p><a href="https://t.me/ulshinblog" rel="noopener noreferrer nofollow">Больше интересного про жизнь в IT у меня в ТГ</a></p> <a href="https://habr.com/ru/posts/806117/?utm_campaign=806117&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Mon, 08 Apr 2024 09:30:06 GMT</pubDate>
    <dc:creator><![CDATA[nikitaulshin]]></dc:creator>
      
      <category><![CDATA[code review]]></category><category><![CDATA[код ревью]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @WizAlx — Блог компании AGIMA (+2) — N/P]]></title>
    <guid isPermaLink="true">https://habr.com/ru/companies/agima/posts/802989/</guid>
    <link>https://habr.com/ru/companies/agima/posts/802989/?utm_campaign=802989&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p><strong>[Отладка] git bisect</strong></p><p>Сегодня хочу рассказать об инструменте Git, который может очень помочь при отладке. Этот инструмент называется git bisect.</p><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/968/cab/379/968cab379636d458b6dbe4a93795d8c5.jpeg" width="1280" height="240"></figure><p>Возможно, ты уже сталкивался с ситуацией, когда нужно выяснить, после какого изменения в коде проекта появилась ошибка. Перебирать все коммиты вручную — не самое приятное занятие. Особенно, если ошибка была допущена давно. Именно здесь на помощь приходит git bisect.</p><p>Принцип работы git bisect основан на методе бинарного поиска. Тебе лишь нужно указать «хороший» коммит, в котором ошибка точно отсутствует, и «плохой» коммит, в котором ошибка уже есть. Git bisect автоматически проведет тебя через процесс бинарного поиска между этими двумя точками, поможет постепенно сузить круг «подозреваемых» и найти коммит, начиная с которого стал проявляться баг.</p><p>Использование git bisect начинается с запуска команды git bisect start, после чего ты помечаешь известные «хороший» и «плохой» коммиты соответствующими командами. Git затем предложит тебе проверить определенный коммит, и ты сообщишь, есть ли в нем данная ошибка. Процесс повторяется, пока не будет найден коммит, который послужил причиной появления бага.</p><p>Ссылка на доку <a href="https://git-scm.com/docs/git-bisect" rel="noopener noreferrer nofollow"><u>здесь</u></a>. <br><br><em>А </em><a href="https://t.me/+nuLZgOU7NdJjYmMy" rel="noopener noreferrer nofollow"><em><u>тут мой тг-канал</u></em></a><em> со свежими новостями из мира мобильной разработки.</em></p><p></p> <a href="https://habr.com/ru/posts/802989/?utm_campaign=802989&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Tue, 26 Mar 2024 12:27:51 GMT</pubDate>
    <dc:creator><![CDATA[WizAlx (AGIMA)]]></dc:creator>
      
      <category><![CDATA[git]]></category><category><![CDATA[git bisect]]></category><category><![CDATA[отладка]]></category><category><![CDATA[flutter]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @denis-19 — Настройка Linux (+3) — 04.12.2023 12:32]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/778286/</guid>
    <link>https://habr.com/ru/posts/778286/?utm_campaign=778286&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p>Разработчики дистрибутива Arch Linux <a href="https://archlinux.org/news/bugtracker-migration-to-gitlab-completed/" rel="noopener noreferrer nofollow">объявили</a> о завершении миграции системы отслеживания ошибок на платформу <a href="https://gitlab.archlinux.org" rel="noopener noreferrer nofollow">GitLab</a> и включении на обслуживающем проект сервере GitLab поддержки запросов на слияние (merge request). Модернизация системы отслеживания ошибок стала следующим шагом после <a href="https://www.opennet.ru/opennews/art.shtml?num=59138" rel="noopener noreferrer nofollow">перевода</a> инфраструктуры для разработки пакетов с Subversion на Git и GitLab.</p><p><a href="https://bugs.archlinux.org/" rel="noopener noreferrer nofollow">Старый интерфейс</a> отслеживания ошибок в Arch Linux, основанный на платформе <a href="https://github.com/flyspray/flyspray" rel="noopener noreferrer nofollow">Flyspray</a>,  будет через какое-то время отключён, но доступ к старым записям планируют сохранить через размещение статической архивной копии сайта bugs.archlinux.org, в которой записи будут доступны по старым ссылкам. </p><p>В сообщениях об ошибках, разбиравшихся в процессе миграции, добавлены финальные комментарии, указывающие на новый адрес обсуждения в GitLab. Кнопки уведомления о проблемах, присутствующие на страницах пакетов, перенаправлены на новую систему. Процесс разбора сообщений о&nbsp;проблемах в&nbsp;Arch Linux останется прежним&nbsp;— первичный разбор сообщений осуществляют участники команды Bug Wranglers, после чего проблема перенаправляется для&nbsp;исправления соответствующим сопровождающим. </p><p>Источник: <a href="https://www.opennet.ru/opennews/art.shtml?num=60229" rel="noopener noreferrer nofollow">OpenNET</a>.</p><p></p> <a href="https://habr.com/ru/posts/778286/?utm_campaign=778286&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Mon, 04 Dec 2023 09:32:14 GMT</pubDate>
    <dc:creator><![CDATA[denis-19]]></dc:creator>
      
      <category><![CDATA[arch linux]]></category><category><![CDATA[gitlab]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @denis-19 — Git (+2) — 22.11.2023 17:17]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/775700/</guid>
    <link>https://habr.com/ru/posts/775700/?utm_campaign=775700&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p>После трёх месяцев разработки <a href="https://lkml.org/lkml/2023/11/20/890" rel="noopener noreferrer nofollow">опубликован</a> выпуск распределенной системы управления исходными текстами <a href="http://git-scm.com/" rel="noopener noreferrer nofollow">Git 2.43</a>.</p><p>Git является одной из самых популярных, надёжных и высокопроизводительных систем управления версиями, предоставляющей гибкие средства нелинейной разработки, базирующиеся на ответвлении и слиянии веток. Для обеспечения целостности истории и устойчивости к изменениям «задним числом» используются неявное хеширование всей предыдущей истории в каждом коммите, также возможно удостоверение цифровыми подписями разработчиков отдельных тегов и коммитов.</p><p>По сравнению с прошлым выпуском в версию Git 2.43 внесено и <a href="https://github.blog/2023-11-20-highlights-from-git-2-43/" rel="noopener noreferrer nofollow">принято</a> 464 изменения, подготовленные при участии 80 разработчиков, из которых 17 программистов впервые приняли участие в разработке, включая:</p><ul><li><p>в команду "git repack" добавлены опции "--filter" и "--filter-to", позволяющие выполнить переупаковку репозитория c учётом заданного фильтра объектов и при необходимости перенести в отдельное место объекты, не удовлетворяющие заданному фильтру;</p></li><li><p>добавлена возможность работы с несколькими pack-файлами с информацией о недостижимых объектах ("cruft packs"), на которые в репозитории отсутствуют ссылки (не ссылаются ветки или теги);</p></li><li><p>добавлено распознавание попыток выполнения двойной отмены коммита через "git revert" и учёт этого факта при формировании сообщения об отмене;</p></li><li><p>Разрешено совместное использование опций "--rfc" и "--subject-prefix".</p></li></ul><p>Источник: <a href="https://www.opennet.ru/opennews/art.shtml?num=60150" rel="noopener noreferrer nofollow">OpenNET</a>.</p><p></p> <a href="https://habr.com/ru/posts/775700/?utm_campaign=775700&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Wed, 22 Nov 2023 14:17:28 GMT</pubDate>
    <dc:creator><![CDATA[denis-19]]></dc:creator>
      
      <category><![CDATA[git]]></category><category><![CDATA[Git 2.43]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @denis-19 — Git (+1) — 13.11.2023 21:26]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/773706/</guid>
    <link>https://habr.com/ru/posts/773706/?utm_campaign=773706&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p><a href="https://github.com/gitextensions/gitextensions/releases/tag/v4.2" rel="noopener noreferrer nofollow">Вышел</a> релиз <a href="https://gitextensions.github.io/" rel="noopener noreferrer nofollow">GitExtensions 4.2</a>, инструмента с графическим интерфейсом для управления репозиториями git, умеющего интегрироваться в системное меню работы с файлами и, через плагины, в IDE (JetBrains, VSCode, MSVS). Код проекта написан на C# и <a href="https://github.com/gitextensions/gitextensions" rel="noopener noreferrer nofollow">распространяется</a> под лицензией GPLv3.</p><p>Основные <a href="https://github.com/gitextensions/gitextensions/blob/v4.2/GitUI/Resources/ChangeLog.md#version-42-13-nov-2023" rel="noopener noreferrer nofollow">изменения</a>: </p><ul><li><p>новый плагин интеграции с GitLab;</p></li><li><p>в плагин JIRA добавлена поддержка токенов личного доступа;</p></li><li><p>различные улучшения производительности;</p></li><li><p>различные улучшения пользовательского интерфейса;</p></li><li><p>улучшения в диалоговом окне журнала команд Git и в диалоговом окне «Rebase»;</p></li><li><p>разрешено выполнение операции сохранения «Save as...» сразу для нескольких файлов;</p></li><li><p>редактор теперь может перемещать строку вверх/вниз с&nbsp;помощью ALT + UP и ALT + DOWN;</p></li><li><p>для&nbsp;OpenSSH реализовано выставление переменной окружения SSH_ASKPASS, если запрашивается пароль (требуется OpenSSH 8.4&nbsp;или&nbsp;выше; не&nbsp;действует для&nbsp;более старых версий OpenSSH);</p></li><li><p>обеспечена автоматическая установка GitExtensions в качестве редактора только в текущем окружении;</p></li><li><p>разрешён сброс непроиндексированных изменений, не затрагивая промежуточные;</p></li><li><p>более удобная обработка ошибок «Не удалось загрузить файл или сборку»;</p></li><li><p>вертикальная табуляция (SHIFT + ENTER) теперь рассматривается как перевод строки;</p></li><li><p>добавлена поддержка сборки GitExtensions для Windows на системах Arm64 (WoA), однако для этого требуется сборка вручную;</p></li><li><p>для скриптов реализована опция "{HEAD}";</p></li><li><p>для сборки теперь требуется .NET 6.0 Desktop Runtime v6.0.24 или новее;</p></li><li><p>рекомендованная версия Git 2.42.</p></li></ul><p>Источник: <a href="https://www.opennet.ru/opennews/art.shtml?num=60105" rel="noopener noreferrer nofollow">OpenNET</a>.</p><p></p> <a href="https://habr.com/ru/posts/773706/?utm_campaign=773706&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Mon, 13 Nov 2023 18:26:31 GMT</pubDate>
    <dc:creator><![CDATA[denis-19]]></dc:creator>
      
      <category><![CDATA[GitExtensions 4.2]]></category><category><![CDATA[GitExtensions]]></category><category><![CDATA[Git]]></category>
  </item>
  

	
  

  

  

      

      

      

    
  </channel>
</rss>
