Jump to content
    

Популярность систем контроля версий

52 minutes ago, dimka76 said:

А если ваш рабочий комп накроется, а вы Push два месяца не делали ?

А для этого есть бэкап,  ежедневный, недельный, ...    

Share this post


Link to post
Share on other sites

3 часа назад, dimka76 сказал:

А если ваш рабочий комп накроется, а вы Push два месяца не делали ?

Значит Вы как второй роман «великого пятикнижия» Ф.М. Достоевского.

Share this post


Link to post
Share on other sites

13 hours ago, dxp said:

если требуется гибкое и удобное версионирование, то git тут вне конкуренции.

mercurial, fossil, breezy

Share this post


Link to post
Share on other sites

17 часов назад, dimka76 сказал:

А если ваш рабочий комп накроется, а вы Push два месяца не делали ?
Все заново делать ?

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

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

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

Share this post


Link to post
Share on other sites

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

Про остальные две не знаю, но низкая известность и популярность говорят сами за себя: мало сообщество, качество инструмента напрямую зависит от количества использующих и т.п. Есть Bazaar, тоже одно время интенсивно развивалась/продвигалась, но на сегодняшний день по факту сдулась (она на Python реализована, как я понял, там серьёзные вопросы с производительностью, особенно на больших проектах). Т.ч. систем управления версиями много всяких, это да, и какие-то в чём-то могут безоговорочно превосходить остальные, но мы говорим о выборе рабочего инструмента, на который претендуют только хорошо проверенные в деле, сиречь популярные, системы. По совокупности гит рулит.

Share this post


Link to post
Share on other sites

10 hours ago, dxp said:

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

Ну такая концепция была, что историю менять нельзя, наверно поэтому название ветки прибито к коммиту. Сейчас уже все можно менять если хочется, но я предпочитаю не делать всяких rebase, mq и подобного. А уж histedit совсем какая-то грязь. Да, есть bookmarks это перемещаемые метки, не пользуюсь, не понимаю зачем они мне.

 

10 hours ago, dxp said:

Есть Bazaar, тоже одно время интенсивно развивалась/продвигалась, но на сегодняшний день по факту сдулась

Не пользовался, теперь как я понял она называется breezy.

 

 

 

 

Share this post


Link to post
Share on other sites

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

Где пригождается rebase, лучше показать на примере. У нас процесс построен так (он рекомендованный, насколько знаю): есть общая ветка разработки, она постоянная, она содержит только целостные комиты, т.е. состояние проекта таково, что он собирается и работает. Основной смысл этого в том, чтобы любой участник команды мог взять крайний комит за основу для разработки своей фичи, и у него всё будет собираться, не будет чужих ошибок, которые будут ему мешать развивать и собирать своё. Для этого создаётся временная ветка (feature branch -- FB). Сливать в общуюю ветку может только её мейнтейнер, у остальных таких прав нет (это обеспечивает целостную базу как отправную точку для всех участников проекта независимо от их дисциплинированности -- главное, чтобы ментейнер не был раздолбаем и добросовестно проверял перед слиянием -- это несложная работа, её вообще можно автоматизировать, но у нас руки пока не дошли, не обременительно запускать сборку/тесты руками).

Работа участниками проекта ведётся параллельно. Когда фича готова к слиянию, её автор создаёт pull/merge request на слияние этой FB в общую. Перед этим он делает rebase на общую ветку, чтобы объединить свою фичу с кодом общей, которая за время работы над FB могла уйти вперёд (как правило так и происходит). Мейнтейнер проверяет целостность кода, запуская сборку, тесты. Если всё успешно, FB сливается в общую с комитом слияния (git merge --no-ff). Результатом будет чётко видная в истории ветка FB со всеми своими комитами, слитая в общую через комит слияния.

Делать объединение общей ветки с FB обязательно -- на этом этапе вылезают всякие конфликты, ошибки и т.п. Объединять можно двумя способами: через merge и через rebase. Если делать через merge, то это нарушает описанную выше "красивость" истории (которая нужна далеко не только из эстетических аспектов, но является мощным подспорьем для ретроспективы кода). rebase позволяет держать локальную историю разработки фичи компактно и целостно, не смешивая с комитами других веток. Да, это изменяет историю развития проекта в смысле строгой хронологии, но для работы с кодом гораздо важнее вид с точки зрения добавления фич и фиксов, когда видны этапы работы, а не вид с точки зрения последовательных дат комитов.

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

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

Share this post


Link to post
Share on other sites

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

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

 

Share this post


Link to post
Share on other sites

12 часов назад, dxp сказал:

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

Где пригождается rebase, лучше показать на примере. У нас процесс построен так (он рекомендованный, насколько знаю): есть общая ветка разработки, она постоянная, она содержит только целостные комиты, т.е. состояние проекта таково, что он собирается и работает. Основной смысл этого в том, чтобы любой участник команды мог взять крайний комит за основу для разработки своей фичи, и у него всё будет собираться, не будет чужих ошибок, которые будут ему мешать развивать и собирать своё. Для этого создаётся временная ветка (feature branch -- FB). Сливать в общуюю ветку может только её мейнтейнер, у остальных таких прав нет (это обеспечивает целостную базу как отправную точку для всех участников проекта независимо от их дисциплинированности -- главное, чтобы ментейнер не был раздолбаем и добросовестно проверял перед слиянием -- это несложная работа, её вообще можно автоматизировать, но у нас руки пока не дошли, не обременительно запускать сборку/тесты руками).

Работа участниками проекта ведётся параллельно. Когда фича готова к слиянию, её автор создаёт pull/merge request на слияние этой FB в общую. Перед этим он делает rebase на общую ветку, чтобы объединить свою фичу с кодом общей, которая за время работы над FB могла уйти вперёд (как правило так и происходит). Мейнтейнер проверяет целостность кода, запуская сборку, тесты. Если всё успешно, FB сливается в общую с комитом слияния (git merge --no-ff). Результатом будет чётко видная в истории ветка FB со всеми своими комитами, слитая в общую через комит слияния.

Делать объединение общей ветки с FB обязательно -- на этом этапе вылезают всякие конфликты, ошибки и т.п. Объединять можно двумя способами: через merge и через rebase. Если делать через merge, то это нарушает описанную выше "красивость" истории (которая нужна далеко не только из эстетических аспектов, но является мощным подспорьем для ретроспективы кода). rebase позволяет держать локальную историю разработки фичи компактно и целостно, не смешивая с комитами других веток. Да, это изменяет историю развития проекта в смысле строгой хронологии, но для работы с кодом гораздо важнее вид с точки зрения добавления фич и фиксов, когда видны этапы работы, а не вид с точки зрения последовательных дат комитов.

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

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

Добавлю, кроме веток master и feature/xxx при команде 4+ человека начинает иметь смысл ветка dev. На ней находится не проверенная, но "смёржденная" версия проекта. Далее коммит на ней посылается в регрессию тестов. После удачного прохождения регрессии, коммит мёрджится в master.

Share this post


Link to post
Share on other sites

3 часа назад, yes сказал:

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

Это вы с git спутали. svn, как раз, после обрыва обновления либо клонирования продолжает с места обрыва, а вот git качает все сначала.

Share this post


Link to post
Share on other sites

Однозначно, git. SVN, конечно прост в использовании, но если проекты усложняются (в плане иерархии, количества разработчиков и т. д.), то рано или поздно всё-равно будет переход на git. А если у вас куча проектов была завязана на SVN долгое время - геморроя не оберетесь при переводе на гит. Проверено🙂

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

Share this post


Link to post
Share on other sites

Однозначно Git. Много лет пользую и пока не разочаровался.

Если у конторы есть нужда (абсолютная приватность) и возможности(сервер и  администратор) - то на своем сервере

Если с этим тяжко- то облачный сервис. Мне исторически гитлаб нравится больше, чем гитхаб.

Share this post


Link to post
Share on other sites

On 11/21/2023 at 4:51 PM, dimka76 said:

А если ваш рабочий комп накроется, а вы Push два месяца не делали ?
Все заново делать ?

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

Share this post


Link to post
Share on other sites

5 hours ago, firstvald said:

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

Что просили то и получили.  Попросили бы не весь проект, а только снапшот нужной вам ветки, получили бы архив на любимой вами флешке, а не весь реп.  

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...