kirill70674 4 November 19 Posted November 19 · Report post Здравствуйте, коллеги Есть ли какие-то исследования на тему популярности различных систем контроля версий на территории РФ? Quote Share this post Link to post Share on other sites More sharing options...
makc 153 November 19 Posted November 19 · Report post 41 минуту назад, kirill70674 сказал: Есть ли какие-то исследования на тему популярности различных систем контроля версий на территории РФ? git №1 PS: обычно выбора нет, т.к. не работник определяет маршруты и средства в организации. Поэтому и смысла в такого рода исследованиях не очень много. Quote Share this post Link to post Share on other sites More sharing options...
kirill70674 4 November 20 Posted November 20 · Report post Ок, а как насчёт ближнего и дальнего зарубежья? Слышал, что в Китае SVN предпочитают... Quote Share this post Link to post Share on other sites More sharing options...
makc 153 November 20 Posted November 20 · Report post 10 минут назад, kirill70674 сказал: Ок, а как насчёт ближнего и дальнего зарубежья? Слышал, что в Китае SVN предпочитают... Несколько раз наблюдал, что китайцы также работают в git на github/gitlab или чём-то аналогичном. С SVN я сам много работал (начинал с cvs) и git это шаг вперёд. Тем более что репозитории svn вполне неплохо конвертируются в git. Quote Share this post Link to post Share on other sites More sharing options...
gridinp 2 November 20 Posted November 20 · Report post обычно в статистике показывают кол-во репозитариев под той или иной системой, но тут надо понимать, что в svn поддерево файловой системы можно использовать, как полноценный репозитарий, а в git так нельзя, поэтому в git наблюдается сильный рост (на каждый hello world) числа репозитариев. За границей у кого есть деньги и кроме программистов ещё работают разные художники, конструкторы - довольно часто используют perforce Quote Share this post Link to post Share on other sites More sharing options...
MrYuran 5 November 20 Posted November 20 · Report post В 19.11.2023 в 22:37, makc сказал: git №1 PS: обычно выбора нет, т.к. не работник определяет маршруты и средства в организации. Поэтому и смысла в такого рода исследованиях не очень много. Зависит от организации. Бывают такие, где у каждого разработчика все свое на флешке ) Quote Share this post Link to post Share on other sites More sharing options...
Arlleex 103 November 20 Posted November 20 · Report post После SVN привыкнуть и идеологии Git-а вообще плохо выходит. Все там через ж. Обосновывать не буду - всегда бомблю в моменте, когда приходится пользоваться. Лично мне нравится SVN. Quote Share this post Link to post Share on other sites More sharing options...
MrYuran 5 November 20 Posted November 20 · Report post Как я понял, основное отличие в двухступенчатой системе commit/push, и всякое промежуточное г-но на сервере не болтается. Ну и pull request с т.з руководителя проекта намного предпочтительнее, чем разгребание завалов в общем репозитории, где вперемешку релизы и промежуточные коммиты, и каждый залетный Вася может накуролесить чего угодно. Плюс интеграция CI/CD, которая де-факто стала промышленным стандартом (внезапно) Quote Share this post Link to post Share on other sites More sharing options...
makc 153 November 20 Posted November 20 · Report post 1 час назад, Arlleex сказал: После SVN привыкнуть и идеологии Git-а вообще плохо выходит. Все там через ж. Обосновывать не буду - всегда бомблю в моменте, когда приходится пользоваться. Лично мне нравится SVN. Как человек, перешедший с SVN на Git могу уверенно сказать, что вопрос желания. На первом этапе достаточно делать лишнюю команду (push/pull), а на втором появляется масса очень приятных возможностей. Так что ни разу не жалею о переходе с SVN на Git. 1 час назад, MrYuran сказал: Ну и pull request с т.з руководителя проекта намного предпочтительнее, чем разгребание завалов в общем репозитории, где вперемешку релизы и промежуточные коммиты, и каждый залетный Вася может накуролесить чего угодно. Да, это большой плюс и помощь работе. Quote Share this post Link to post Share on other sites More sharing options...
amaora 6 November 20 Posted November 20 · Report post 5 hours ago, Arlleex said: После SVN привыкнуть и идеологии Git-а вообще плохо выходит. Все там через ж. У меня после mercurial такое же впечатление о git, хотя не должно было, они похожие. Quote Share this post Link to post Share on other sites More sharing options...
kirill70674 4 November 20 Posted November 20 · Report post 12 часов назад, MrYuran сказал: где у каждого разработчика все свое на флешке Видел такое. Впечатление производит самое угнетающее. Сразу понятно, что люди не планируют работать в команде больше одного человека на проект и над устройством хоть сколько-нибудь конкурентноспособным (с каким-нибудь SoC, будь он неладен...) 11 часов назад, MrYuran сказал: Плюс интеграция CI/CD Разве это не плюшки от "концентраторов" (или как их) типа GitHub/GitLab? Для SVN таких "концентраторов" нет? Quote Share this post Link to post Share on other sites More sharing options...
dxp 29 November 21 Posted November 21 · Report post Раз такой открытый обмен мнениями, то позволю себе. Оценка будет жёсткая (любителям svn не понравится), но зато правдивая: если сравнивать git vs svn в контексте именно управления версиями, то git является системой управления версиями как таковой, а svn нет. svn, cvs, Perforce и все подобные системы с центральным репозиторием являются скорее системами инкрементального архивирования с функциями менджмента кода (особенно Perforce). Главное, что отличает git от перечисленных и делает его эффективным имеено как систему управления версиями -- это способность лёгкого, быстрого создания веток и их эффективного слиния хоть методами merge, хоть rebase. Именно такие ветки (которые по сути ветками и не являются -- это традиционное, устоявшееся название, а по сути это просто перемещаемые вместе с "головой" (HEAD) метками) и позволяют бесплатно (ничего не внося в код, не плодя копий) вести отслеживание изменений кода. git позволяет делать реально атомарные комиты -- т.е. когда в комит входят изменения, касающиеся только чего-то одного. Это очень важная штука: такие комиты можно легко таскать между ветками, их можно отменять, не ломая других фич. Вот эта схема с индексом (stage) именно для этого и предназначена (когда в начале не понимал этого, тоже раздражало, что вместо просто commit надо ещё в add в индекс делать, хорошо, что хоть опция -a там была 🙂) : нередко бывает, что изменения кода в одном файле относятся к разным по смыслу фичам/фиксам, и пихать это в один комит неправильно -- потом его ни отменить (нечасто это надо, но бывает), ни перетащить изменения в другую ветку, где они актуальны уже сейчас (а другие изменения и этой ветки, где комит, пока не нужны, они ждут своего слияния в общую ветку). Так вот, git позволяет добавить в индекс выборочно правки из файла, не трогая другие. И так, накидав в индекс, изменения, связанные по смыслу, из разных файлов, можно получить, закомитив, тот самый атомарный комит. Делается это командой git add -i. Существует вполне удобный GUI инструмент для этого -- git-cola, в ней можно прямо выделять в файле нужные строки изменений и добавлять в индекс (или удалять из индекса добавленное по ошибке). Push после каждого комита тоже делать совершенно не нужно. git -- это система с локальным репозиторием, самый главный реп -- это тот, с которым вы работаете, который лежит у вас рабочем проекте. Push -- это просто способ опубликовать ваши изменения (серверов для публикации может быть сильно больше, чем один 🙂 ). Публиковать надо тогда, когда это необходимо, и не ранее. Пока всё лежит локально, можно менять историю изменений, устраняя ошибки при комитах. Это позволяет легко держать историю проекта красивой и удобной для ретроспективы. Это крайне важная штука -- по такой истории можно быстро эффективно найти практически всё (пример такой истории можно посмотреть по ссылке ниже), по ней легко разобраться, когда что происходило и быстро "вспомнить" нюансы ушедшего в прошлое процесса разработки. К сожалению, тот же svn не позволяет ничего из вышеперечисленного. Ветвление в нём -- это боль. Поэтому типовая история проекта в svn (cvs или Perforce) -- это ровная цепочка комитов, глядя на которую, не понятно, где когда что делалось -- нужно ползать по всем звеньям цепочки и искать, вчитвываясь в комментарии. И комиты там редко бывают атомарными, обычно комит в svn -- это целый список несвязанных между собой изменений. Да, конечно, и в svn можно стараться делать короткие атомарные комиты, но это технически непросто делать, когда разные по смыслу изменения присутствуют в одном файле. Есть пара моментов, где системы svn/Perfoce сильнее, чем git: связь с внешними репозиториями; работа с нетекстовыми файлами большого размера. Оба преимущества проистекают из того, что svn/Perforce основаны на нативной файловой системе: единицы слежения за изменениями -- это файлы, ветки -- это директории. Это позволяет легко цеплять сторонние репозитории как директории (хоть целиком, хоть фрагменты) через svn:externals в svn или mapping в Perforce (этот в этом вопросе вообще очень крут). В git же единицей слежения является не файл, а слепок проекта, т.к. совокупность файлов. Директории в нём вообще ничего не значат и учитываются просто в путях файлов, за счёт чего и поддерживается файловая структура с директорими (но закомитить пустую директорию не получится, т.к. для git директория не является ценностной единицей). А submodules в git -- это не самая приятная штука, особенно, когда дело доходит до того, чтобы их удалять/переносить. Уже не впервые высказываюсь на эту тему. Вот тут подробнее про использование: Исходя из вышесказанного, можно сделать определённый вывод: если требуется гибкое и удобное версионирование, то git тут вне конкуренции. Это относится в первую очередь к разработке кода. А вот, например, для схематики/PCB отлично подходит svn, т.к. там обычно никакого ветвления (и слияния, которое в случае с нетекствыми файлами очень затруднительно) не требуется, а нужно инкрементально сохранять последовательные изменения проекта. 1 Quote Share this post Link to post Share on other sites More sharing options...
MrYuran 5 November 21 Posted November 21 · Report post Просто оставлю это здесь ) https://git-scm.com/book/ru/v2 Вчера обновил резюме на hh.ru и вдруг обнаружил, что по тегу Git можно пройти тестирование. Так что переходить на Git или нет - пойми, даже вопрос так не стоит )) Это маст хэв скилл 1 Quote Share this post Link to post Share on other sites More sharing options...
dimka76 33 November 21 Posted November 21 · Report post On 11/21/2023 at 7:41 AM, dxp said: Push после каждого комита тоже делать совершенно не нужно. git -- это система с локальным репозиторием, самый главный реп -- это тот, с которым вы работаете, который лежит у вас рабочем проекте. Push -- это просто способ опубликовать ваши изменения (серверов для публикации может быть сильно больше, чем один 🙂 ). Публиковать надо тогда, когда это необходимо, и не ранее. А если ваш рабочий комп накроется, а вы Push два месяца не делали ? Все заново делать ? Quote Share this post Link to post Share on other sites More sharing options...
tonyk_av 19 November 21 Posted November 21 · Report post 32 minutes ago, dimka76 said: А если ваш рабочий комп накроется, а вы Push два месяца не делали ? Все заново делать ? Для этого у меня включена синхронизация с Облаком. Удобно, когда на всех рабочих компах последние версии файлов. Quote Share this post Link to post Share on other sites More sharing options...