Иван Шихалев » 13.12.2010 17:35:50
Собственно почему распределенные, а не централизованные:
1. Распределенность — полностью рабочий репозиторий находится у разработчиков. Случись что с сервером — всегда можно восстановить.
2. Можно полноценно использовать контроль версий без доступа к серверу, а потом легко и быстро синхронизировать.
3. Управление ведется на уровне коммитов, а не ревизий. Т.е. не возникают конфликты без лишней на то нужды. Если два разработчика параллельно что-то правят, конфликт (и потребность в его ручном разрешении) возникнет, только если они реально пересекутся по участкам кода.
4. Соответственно, легко и непринужденно можно вести ветвления, а затем их сливать в одно. Разработчик может как угодно экспериментировать в своей ветке, а в мейнстрим затем отправится готовый вариант, или даже только часть изменений (см. п. 2). При этом ветка разработчика может быть строго локальна, может быть даже не одна и т.д. И тем не менее у него будет полный функционал. Например, я регулярно ковыряюсь в исходниках FPC, при этом могу легко переключаться между своими экспериментами и главной веткой, добавлять изменения из главной ветки в свою локальную и т.д.
Собственно, преимущества Git:
5. Работа с содержимым, а не с файлами — если мы файл переименум, или перенесем большой кусок кода из одного модуля в другой, это будет корректно отслежено.
6. Поиск ошибок при помощи git bissect
Добавлено спустя 2 минуты 5 секунд:
Еще есть плюс GitHub по сравнению с SourceForge — все делается гораздо быстрее и удобнее. Хотя, возможно, мои данные и устарели, но раньше, например, проект на SF должен был сначала дождаться утверждения...
Добавлено спустя 1 минуту 37 секунд:
Вот только пользоваться TortoiseGit я бы не советовал — это один из тех случаев, когда командная строка удобнее на порядки.
Добавлено спустя 10 минут 55 секунд:
Еще один момент добавлю: с помощью Git можно легко и удобно управлять локальными мелкими проектами (а потом при необходимости быстро залить их на тот же GitHub). Тогда как для SVN пришлось бы поднимать собственный сервер. Лично мне как-то проще пользоваться для одинаковых задач одинаковым инструментом, независимо от того, мой ли это проект, и где он находится.