суббота, 17 октября 2009 г.

Git: так ли хорош Subversion?

Subversion я пользуюсь уже около года. До этого был CVS, но преимущества SVN перед CVS'ом были настолько очевидны, что я нераздумывая перевел все свои репозитории на Subversion. С тех пор я как-то больше не оглядывался на другие системы контроля версий, но вот недавно на Хабрахабре наткнулся на пост с переводом выступления Линуса Торвальдса, посвященного Git - системе контроля версий, которую он написал, чтобы использовать при разработке ядра.

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

Цель данной заметки - заставить вас усомниться в вашем выборе системы контроля версий и подкинуть несколько ссылок, чтобы сэкономить вам время на поиске необходимой информации. Правда, сам я тоже особо время на поиск не тратил, т. к. довольно быстро нашел несколько статей, которые предоставили мне всю необходимую для ознакомления с Git информацию. На начальном этапе, я думаю, их будет вполне достаточно. Прочитав/прослушав/просмотрев данную информацию вы получите достаточно знаний, чтобы более или менее уверенно работать в Git. И лишь поработав с ней хотя бы месяц, поняв, что именно вам от нее нужно и в каком виде, можно будет приступить к чтению более обширной официальной документации. А пока...

Чтобы понять, зачем оно вам вообще надо:
Выступление Линуса Торвальдса
UTP - Выпуск 1
UTP - Выпуск 2
Git Workflow

Git Guts - данный цикл статей, описывающий внутреннее устройство Git, просто заставит вас его полюбить.

Базовые навыки работы с Git:
Git Wizardry
Git Community Book
Start a New Branch on your Remote Git Repository
Еще немножко про git

Перенос SVN-репозитария в git
Командная работа в Git

Удачи. Надеюсь, он вам понравится так же, как и мне.

11 комментариев:

Develop7 комментирует...

После svn я бы советовал перейти на mercurial. Именно потому, что сам после svn был вынужден пересесть на git.

Конищев Дмитрий комментирует...

Develop7, почитав различные статьи на тему Git vs Mercurial vs Bazaar, я все-таки остановился на Git. Хотя, насколько я понимаю, Git и Mercurial + расширения на данный момент предоставляют практически идентичную функциональность, и выбор тут уже делается в основном из личных предпочтений. Git меня подкупил своей простотой реализации довольно большого функционала. Да и то, что в его развитии принимают участие разработчики ядра, которые вынуждены работать с таким большим объемом кода, дает надежду на то, что и в будущем Git будет развиваться в правильном направлении.

axet комментирует...

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

В планах у команды subversion есть доработка к созданию этого функционала. Подробней об этом google: subversion roadmap.

Сергей комментирует...

axet,

darcs get --lazy как раз позволяет делать частичный checkout. Уже давно.

Develop7,

Поддерживаю, что после SVN лучше всего переходить как раз на Mercurial, потому что его команды по названия и действию близки к командам Subversion; в отличие от джита, в котором одноимённые команды работают порой совсем иначе.

На эту черту обратили внимание и в Гугле, когда они выбирали между Mercurial и Git. Выбрали Mercurial, кстати.

axet комментирует...

Я совсем старый стал, даже не слышал про такую.

Мне очень симпатичен централизованный механизм svn. Это просто революция над теми системами, которые были до нее.

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

Минусы после появления git и ей подобных (деценрализованных) так же стали очевидны. Плохой механизм экспорта ревизий и слияния работы различных разработчиков.

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

Darcs я посмотрю в ближайшее время, может быть там все есть.

Develop7 комментирует...

Вы, Дмитрий, читали, а я использовал Git около полугода. И я утверждаю и настаиваю, что мигрировать на него с svn, конечно, можно, но только и только если у вас есть в запасе много лишнего времени. Для быстрого погружения git не годится.
У меня нет времени раскрывать тему более подробно, поэтому пока поверьте на слово.
И кстати, я подтверждаю — содержимое этого поста истинно. Я лично тоже наступал на эти грабли.
И ещё — на гит можно переходить, если у вас под рукой есть гуру Gitа. Иначе — не стоит. Правда.

Сергей комментирует...

Darcs, по-моему, довольно новаторский DVCS. Там есть красивая идея — хранятся непосредственно патчи и они могут переставляться, если надо. Поэтому слияние изменений во многих случаях тривиально — достаточно выбрать принимаемые патчи. В прошлом на очень больших репозиториях Darcs страдал низкой производительностью, но в основные проблемы вроде победили (скоро будет новый стабильный релиз).

Я, правда, c darcs почти не работал, только чуть-чуть довелось. А вот перейти с svn на mercurial действительно гораздо проще. Я начал с того, что в небольших мини-проектах стал использовать, потом втянулся.

Конищев Дмитрий комментирует...

Develop7, для меня легкость миграции с svn не так важна. Ну, подумаешь, придется лишний раз в выходные доки почитать - если в результате я получу более удобный инструмент, то я согласен. На Mercurial, честно говоря, не смотрел, но готов поверить, что он ничем не уступает Git. Просто мой выбор пал на Git. Что тут сыграло роль - авторитет Линуса, нелюбовь к python-приложениям, качество которых зачастую оставляет желать лучшего, или что-то другое, думаю не так уж и важно, т. к., по крайней мере судя по отзывам, обе системы хороши и имеют как свои преимущества, так и недостатки. Посмотрим, может быть, через какое-то время гляну на Mercurial - тогда уже будет с чем сравнивать, и, возможно, после этого изменю свое отношение к Git.

Develop7 комментирует...

Не знаю, лично мне доки/маны по git оказались бесполезны.
И я не за Mercurial, я против Git.

GQ комментирует...

Эдик тут перевел забавную вещицу про гит:
http://hades.name/blog/2009/05/23/the-git-parable-ru/

Alec C4 комментирует...

Пара ссылок по теме
http://blog.alec-c4.com/2009/06/02/ruby-on-rails-%d0%bf%d0%b5%d1%80%d0%b5%d1%85%d0%be%d0%b4%d0%b8%d0%bc-%d0%bd%d0%b0-git/

http://blog.alec-c4.com/2009/07/27/%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%b0%d0%b8%d0%b2%d0%b0%d0%b5%d0%bc-git-%d1%81%d0%b5%d1%80%d0%b2%d0%b5%d1%80-%d1%81-%d0%b8%d1%81%d0%bf%d0%be%d0%bb%d1%8c%d0%b7%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5%d0%bc/