Линус Торвальдс рассказывает про GIT
Feb. 23rd, 2013 09:22 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Моё знакомство с SCM протекало странным путём через SourceSafe, ClearCase, ClearCase UCM, Perforce, Subversion. Последний (Subversion) освоил весьма поверхностно, зато именно на нём-то и почувствовал, как ужасно НЕПРАВИЛЬНО работал до этого. Апдейт рабочего пространства на ходу (с автоматическим, обычно незаметным мерджем файлов в "чекауте" по ходу дела), вообще отсутствие в SVN "чекаута", когда менять можно вообще любой файл - хоть и анархичный и опасный, но неожиданно весьма приятный мод работы. Не выяснял, можно ли достигнуть подобного быстрого апдейта в Perforce, во всяком случае, по умолчанию он работает иначе, превращая любой апдейт рабочего пространства в маленькое, но приключение, но по крайней мере, даже и в худшем случае можно то же самое сделать через простенький скрипт. В ClearCase, мне кажется, подобные апдейты файлов в чекауте вообще не поддерживаются - ибо концепт совершенно другой.
Тем не менее, окончательный вывод (на сегодня) весьма банален - системы весьма многофакторны, а удобство пользования ими, равно как и вообще "правильный" стиль работы зависит от кучи совершенно мелких и мало рекламируемых деталей. Не будучи специалистом-экспертом, не попробовав каждую систему в реальной и нетривиальной работе, очень тяжело составить о них правильное представление (и я не говорю об администрировании и поддержке, а исключительно о работе программистов и менеджеров проектов). Можно, конечно, поискать какие-то обзорные статьи и сравнения, но когда я со своими конкретными углубленными знаниями по какой-то системе читал подобные статьи, это всегда было "не о том" и не "в тему".
В чем я немедленно солидарен с Линусом (собтсвенно, об этом я уже года три назад писал) - что вся система организации Branches на CVS/SVN/Perforce абсолютно ужасна. В этом плане ClearCase для меня остается если не идеалом, то приятным воспоминанием, ну а что до GIT, то это, очевидно, совершенно неизвестный мне мир (я раньше почему-то думал, что он где-то концептуально является расширением SVN).
И еще в чем Линус очень прав - знакомство с подобными системами, постоянная работа с ними- определенным образом формирует восприятие вещей так, что никаких особых существенных альтернатив тому, с чем знаком, уже и не видишь. А они, оказывается, есть. )
no subject
Date: 2013-02-24 02:32 am (UTC)Минус - слишком легко уйти "в отрыв" от остальной команды. Типа, сидишь в своем мире со своей локальной копией и полируешь ее, делая по 10 чек-инов в день. А потом опаньки: народ ушел вперед. С SVN так не получится - каждый чек-ин сразу идет на главный сервер.
no subject
Date: 2013-02-24 02:45 am (UTC)А что значит "легко уйти в отрыв"? Я могу и на своей ветке центрального сервера SVN ровно так же работать, а народ за это время проапдейтит главную ветку, почему нет? Принципиально в этом плане всё то же (если не вдаваться в свободы, связанные с децентрализацией)
Но если вы скажете, что просто разные стили работы и разные культуры, то я пойму )))
no subject
Date: 2013-02-24 02:54 am (UTC)В SVN чтобы уйти в отрыв, надо специально и сознательно создать branch, тем самым оформив "отрыв" документально. По умолчанию достаточно сделать чек-ин, чтобы "влиться" в общее русло. Даже если ты сам не сделал update, это за тебя сделает continuous integration server.
В GIT-е же ты по умолчанию сидишь в своей собственной "ветке". Чтобы твои изменения стали видны другим людям, надо делать двойное усилие - обычный чек-ин и потом "push" на корабль-матку. Это хорошо для больших проектов типа Линукса, но не очень хорошо для маленьких сплоченных команд. Если раньше достаточно было убедить каждого разработчика делать чек-ин хотя бы каждый день, то теперь их надо убедить не только делать чек-ин, но и пуш. Что в два раза сложнее.
Так что, разные культуры, да
no subject
Date: 2013-02-24 03:04 am (UTC)no subject
Date: 2013-02-24 04:17 pm (UTC)no subject
Date: 2013-02-24 03:15 am (UTC)Мы на ClearCase послали индивидуальный branching нафиг, например. Т.е. если кто-то хотел, он бы мог работать на branch, но по умолчанию человек десять работали на одной девелоперской ветке.