15

Стандарт де факто — git. Давно ли?

Stackoverflow с 2011 года проводит масштабные опросы разработчиков. В 2022 году в stackoverflow developer survey участвовало более 70к человек из 180 стран. Из-за большого числа участников получаются репрезентативные данные — какие технологии в трендах, куда в целом индустрия плывёт.


Сейчас лидер среди систем контроля версий (СКВ) де-факто Git со своими 97% среди профессиональных разработчиков. Можно выбирать несколько, поэтому сумма больше 100%.

Если переключиться на ответы начинающих разработчиков (скрин ниже), то SVN с 6% падает до 1.5%. Значит, через 3-5 лет в индустрию придут новые разработчики, которые не знакомы с SVN. Кстати, если вы не пользуетесь СКВ, то вы либо в 1.38% профессиональных разработчиков, либо среди 17% новичков. Учите git, любите git.

Ну, и меркуриал почти умер.

А зачем знать тренды? Чтобы не тратить время на умирающий инструмент. Например, какую систему контроля версий посоветовать начинающему разработчику. Вики насчитывает более 30 СКВ. И git был с нами не всегда.


Нашёл для вас опрос 2008 года, где лидер Subversion, скрин ниже. К сожалению, ни числа опрашиваемых, ни процентов у каждой из систем не указано. Тем не менее, git тут и не пахнет, а до настоящего времени дожили №1 SVN и №3 TFVC (они себя сейчас так называют).

В 2014 году на хабре был опрос по СКВ. Результат на скрине ниже — 71% был за git, 32% за SVN, 16% за mercurial, 8% за TFVC от Microsoft.

Так вот git пришёл, запушил, победил. Не исключено, что во многом из-за популярности github.


В телеграмм-канале DevFM разбираем разные нюансы из жизни разработчика на Python и не только. Стримы по программированию, что такое WSGI, миграция БД без даунтайма, чему стоит научиться в вузе, обман нейронных сетей. По пятницам у нас культурный код с фильмами, книгами и всяким разным.

Правила сообщества

Публиковать могут пользователи с любым рейтингом. Однако!


Приветствуется:

• уважение к читателям и авторам

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

• простота и информативность повествования

• тег python2 или python3, если актуально

• код публиковать в виде цитаты, либо ссылкой на специализированный сайт


Не рекомендуется:

• допускать оскорбления и провокации

• распространять вредоносное ПО

• просить решить вашу полноценную задачу за вас

• нарушать правила Пикабу

1
Автор поста оценил этот комментарий

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

раскрыть ветку (1)
2
Автор поста оценил этот комментарий

Ветки в гит мега удобные.


А про историю не понял. Если не форспушить, то история тоже не изменится

показать ответы
1
Автор поста оценил этот комментарий

я начинал пользоваться софтиной SmartGit еще когда она называлась SmartGitHg) и да, интерфейс был унифицирован)

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Хех, тогда разницы бы никакой не было. Но тем не менее, унификация инструментов - это хороший процесс

показать ответы
1
Автор поста оценил этот комментарий

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


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


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


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

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Вроде всякие флоу сейчас рекомендуют фича-ветки по задачам и как можно чаще вливать, тогда проблема не особо острая

показать ответы
1
Автор поста оценил этот комментарий

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

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Интересно, где-нибудь есть свежие данные по популярности гитхаб/гитлаб/битбакет

1
Автор поста оценил этот комментарий

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

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

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

показать ответы
1
Автор поста оценил этот комментарий

я скорее ворчу что не нашлось никого кто сделал бы конкурентный hghub

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Были такие на bitbucket. Поддерживали и гит, и hg. Но сдались

показать ответы
2
Автор поста оценил этот комментарий

очень жаль меркуриал. имхо он лучше. но гитхаб не оставил ему шансов

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Разработчиков гитхаба можно понять – поддерживать две СКВ было бы дороже

показать ответы
1
Автор поста оценил этот комментарий
а bitbucket разве не поддерживает mercurial?
раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Отказались в 2020

3
Автор поста оценил этот комментарий

Гит насколько я помню был бесплатной альтернативой платных систем контроля версий. Собственно из-за этого он и стал так популярен.

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Почти все (или все?) альтернативы в рейтингах бесплатные. Всякие SVN и mercurial бесплатные, но проиграли с треском


Платные СКВ были в начале нулевых

показать ответы
1
DELETED
Автор поста оценил этот комментарий

Линус не просто пользуется, он его придумал.

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

(С самим Линуксом тоже примерно так было)

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

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


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

1
Автор поста оценил этот комментарий
У вас какие-то неверные представления о работе гита.

Все коммиты на ветке разработчика видно после слияния, к как и сам коммит слияния. Разработчик, конечно, может перед закачиванием своей работы на сервер (push) свою ветку упростить до одного коммита, но зачем?

У нас в компании переписывание истории запрещено настройками сервера, т.е. если разработчик промежуточные коммиты отправляет на сервер, то они уже там остаются навсегда.

На локальном компьютере можно какие-то манипуляции проводить. Но по умолчанию вся история сохраняется, это ерунда про ограниченную историю.
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

В гитлаб/гитхаб по умолчанию master является protected, и туда нельзя форспушить. Но никто не мешает снять protected, конечно, кроме ненависти коллег)

1
Автор поста оценил этот комментарий

да просто нужно было бы знать оба. там не рокет сайнс чтобы специализироваться на чем-то одном

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Наверное, так. Или IDE бы пришли к общему интерфейсу для новичков

показать ответы
1
Автор поста оценил этот комментарий

Задача - делаем ветку и потом мерджим ее в основную.

Гит - видим слияние и ограниченную историю (что разработчик запушил).
Меркуриал - видим всю разработку второстепенной ветки и только потом ее слияние.  Т.е. мы можем переключиться на коммит состояния у разработчика. 

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


А еще разработчик может склеить комиты и тогда вообще фиг поймешь, что происходило в промежутке, брались ли комиты с мастера и т.п.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Интересный опыт, спасибо.


Не люблю склейку коммитов. Squash и rebase зло, оставьте мне историю развития кода как он был

1
DELETED
Автор поста оценил этот комментарий

По  мне причины такие:

1. github

2. git был самым быстрым из распределенных и бесплатных. Если в mercurial попадали большие бинарные файлы, становилось грустно. А разрабатывая сайтики и .т.п. картинки, pdf хотелось положить под систему контроля версий.

3. branch и merge быстр и прост

4. продвижение популярными OpenSource проектами

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Поддерживаю по каждому пункту. А в п.2 ещё и git LFS завезли для больших файлов

1
Автор поста оценил этот комментарий

Тоже перешел с меркуриала.  Из плюсов - внятная история всех комитов и бранчей. В гите с этим какой то бред.
Имхо гит выйграл из за популязирования "да им даже Линус Торвальдс пользуется".

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

А как выглядит история бранчей в mercurial?


История коммитов вроде и в git адекватная

показать ответы
1
Автор поста оценил этот комментарий

так все данные закрытые. как вообще собрать инфу например по селфхостингу гитлаба?

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Никак. Пусть без селфхостинга, чисто оценить популярность самих платформ по числу активных учёток или проектов

1
Автор поста оценил этот комментарий

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


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

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Интересно кстати, если бы был жив git и mercurial, за знание чего больше бы платили на рынке?))

показать ответы
1
Автор поста оценил этот комментарий

Есть ли вероятность появления какой-нибудь конкурентной альтернативы?

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Будем надеяться, что нет. Задачу решает, все разработчики инструмент знают - благодать. К тому же развивается потихоньку. И удобно авторам IDE - не надо поддерживать N альтернатив

1
Автор поста оценил этот комментарий

а мне больше гитлаб зашел. еще с тех пор, когда у гитхаба еще не было никакого ci/cd, а гитлаб этим во всю уже хвастался.


имхо, ci/cd гитлаба приятнее чем github actions

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

gitlab наше всё. А их опенсорсная модель вообще вне конкуренции. Есть какие-то данные по аудитории гитхаб вс гитлаб?

показать ответы
1
Автор поста оценил этот комментарий

кажется в начале был и не только потенциал, но и по факту аудитория

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Да, довольно странно, как git смог настолько много сторонников получить. И почему тот же mercurial не сделал свой MercHub для кода)

1
Автор поста оценил этот комментарий

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


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

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

У меня нет опыта в mercurial, но да, я часто слышал позитивные отзывы о нём. Жаль, что разнообразие инструментов умирает. С другой стороны, это теперь общее место всех разработчиков - удобнее стало

1
Автор поста оценил этот комментарий

Why did you create Git?

Torvalds: I really never wanted to do source control management at all and felt that it was just about the least interesting thing in the computing world (with the possible exception of databases ;^), and I hated all SCM’s with a passion. But then BitKeeper came along and really changed the way I viewed source control. BK got most things right and having a local copy of the repository and distributed merging was a big deal. The big thing about distributed source control is that it makes one of the main issues with SCM’s go away – the politics around “who can make changes.” BK showed that you can avoid that by just giving everybody their own source repository. But BK had its own problems, too; there were a few technical choices that caused problems (renames were painful), but the biggest downside was the fact that since it wasn’t open source, there was a lot of people who didn’t want to use it. So while we ended up having several core maintainers use BK – it was free to use for open source projects – it never got ubiquitous. So it helped kernel development, but there were still pain points.

That then came to a head when Tridge (Andrew Tridgell) started reverse-engineering the (fairly simply) BK protocol, which was against the usage rules for BK. I spent a few weeks (months? It felt that way) trying to mediate between Tridge and Larry McVoy, but in the end it clearly wasn’t working. So at some point I decided that I can’t continue using BK, but that I really didn’t want to go back to the bad old pre-BK days. Sadly, at the time, while there were some other SCM’s that kind of tried to get the whole distributed thing, none of them did it remotely well. I had performance requirements that were not even remotely satisfied by what was available, and I also worried about integrity of the code and the whole workflow, so I ended up just deciding to write my own.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Занятно, что про меркуриал и SVN мы такого не знаем. А люди тоже не просто так стали их делать)

0
Автор поста оценил этот комментарий

Работал на америку с TortoiseSVN , насколько удобная система, что до сих пор вспоминаю каждый раз работая с git. Гит - отрыжка линуксоидов, непонятно почему он лидирует....

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Ну, SVN централизованный, гит – децентрализованный, и это удобно. Графические клиенты ничуть не уступают tortoise, хотя я консоль люблю

1
Автор поста оценил этот комментарий

Why did you create Git?

Torvalds: I really never wanted to do source control management at all and felt that it was just about the least interesting thing in the computing world (with the possible exception of databases ;^), and I hated all SCM’s with a passion. But then BitKeeper came along and really changed the way I viewed source control. BK got most things right and having a local copy of the repository and distributed merging was a big deal. The big thing about distributed source control is that it makes one of the main issues with SCM’s go away – the politics around “who can make changes.” BK showed that you can avoid that by just giving everybody their own source repository. But BK had its own problems, too; there were a few technical choices that caused problems (renames were painful), but the biggest downside was the fact that since it wasn’t open source, there was a lot of people who didn’t want to use it. So while we ended up having several core maintainers use BK – it was free to use for open source projects – it never got ubiquitous. So it helped kernel development, but there were still pain points.

That then came to a head when Tridge (Andrew Tridgell) started reverse-engineering the (fairly simply) BK protocol, which was against the usage rules for BK. I spent a few weeks (months? It felt that way) trying to mediate between Tridge and Larry McVoy, but in the end it clearly wasn’t working. So at some point I decided that I can’t continue using BK, but that I really didn’t want to go back to the bad old pre-BK days. Sadly, at the time, while there were some other SCM’s that kind of tried to get the whole distributed thing, none of them did it remotely well. I had performance requirements that were not even remotely satisfied by what was available, and I also worried about integrity of the code and the whole workflow, so I ended up just deciding to write my own.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Гит. Самое начало :)

1
Автор поста оценил этот комментарий

Автору пожелание. Если вставляете картинки, то нужно как-то позаботиться об их качестве, а то выглядит грустно

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

А что не так? Тут исходники такие, это же не мои картинки

1
Автор поста оценил этот комментарий

Во, нашел https://www.linuxjournal.com/content/git-origin-story для тех кому интересно узнать историю появления

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Интересно, спасибо

1
Автор поста оценил этот комментарий

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

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Думаю, гитхаб внёс большую часть вклада в популярность

1
Автор поста оценил этот комментарий
Когда-то ртуть была наиболее удобной системой, с понятным набором команд. Гит тогда воспринимался как что-то инопланетное, совсем отличающееся от цвса/свна. Но сейчас да, гит победил.
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Меркуриал многие считают куда более приятным

1
Автор поста оценил этот комментарий

почему-то вспомнилось далекое https://stevebennett.me/2012/02/24/10-things-i-hate-about-gi...

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Да, и несмотря на кучу проблем, гит стал лидером)))