Предупреждение: С этого поста я нашел Mercurial и люблю его намного лучше, чем SVN. Так что этот пост немного устарел с комментариями Pro SVN и общей анти-DVCS, но анти-мерзавцы все еще актуальны
Я фанат SVN над Git.
Зачем? Потому что SVN был намного проще для одного разработчика или небольшой команды, а git (в частности, msysgit) оставил мне неприятный вкус во рту.
Когда я проходил практику в небольшом магазине, меня познакомили с git на Windows. Я сразу заметил, сколько работы потребовалось, чтобы заставить его работать с Github. Сначала мне нужно было сгенерировать закрытый ключ ssh, вставить открытый ключ в Github, затем открыть страницу и открыть свой закрытый ключ каждый раз, когда я захотел нажать кнопку, что было очень неприятно.
И мне никогда не нравилось, что я сносил весь репозиторий. Я признаю, что я никогда не работал с чем-то огромным, но я бы боялся загрузить репозиторий KDE в Git, если весь репозиторий и его ревизии находятся на моем HD.
Затем был запутанный процесс, чтобы сделать коммит. ТМК, мне пришлось сначала «подготовить» все файлы, которые я хотел зафиксировать (что было ужасно, когда у вас было много файлов, мне потребовалось некоторое время, чтобы найти ручную команду для выполнения всех этапов), затем выполнить фиксацию, а затем перейти к главному РЕПО (почему это отдельная операция ?!).
У вас также были не очень (!) Очень полезные данные коммитов. О, смотри, это коммит 14f74433245ae17aeeaa часть дерева 2167a4934d0a4a7db0de и родительский d7042abb4821d3faf600. Черт, это значит? Я должен быть в состоянии понять вещи довольно быстро и не должен обращаться к какой-то странной документации.
Говоря о документации, по крайней мере, когда я ее использовал, казалось, что все было в формате файла linux man, IE смущает и бесполезен для меня. Я редко мог найти большую помощь в документах и просто прибегал к Google.
Что касается коммитов, то единственное, что мне не понравилось, это отсутствие номеров версий. Теперь я знаю, что это из-за дизайна git, но любому программному обеспечению нужен номер версии. Я до сих пор помню маркерные коммиты, которые выскакивали со словами «Изменена версия на 1.8.6» или что-то подобное, но вы все равно не могли сделать числа сборки. Для меня наличие версии 1.8.6.5164 (последняя часть - номер редакции) говорит мне гораздо больше, чем просто 1.8.6, и заметка о том, что что-то незначительное изменилось, попробуйте
Что касается программного обеспечения, то основной программой для Windows является msysgit, ужасный интерфейс. Он несколько раз зависал от меня, имел ужасный интерфейс, и интеграция CLI-GUI была в лучшем случае сомнительной. Наркоманы из командной строки вокруг меня ненавидели графический интерфейс еще больше.
Теперь давайте посмотрим на SVN. И так как я на Windows и имею учетную запись Google, в частности TortoiseSVN и Google Code.
Во-первых, полная интеграция с оболочкой, чтобы сделать все в хранилище (и для вас, пользователей Linux, RabbitVCS делает то же самое), основной графический интерфейс не требуется. Получить репозиторий легко, как извлечение, SSH не нужен (не помню, если Github требовался SSH для пуллов), и нет всего репо + все прошлые коммиты сидя на вашем HD.
Фиксация очень проста, в основном потому, что не требуется SSH или подготовка. Вы просто проверяете все нужные файлы, используя очень полезную опцию select all, которая в моей версии msysgit была недоступна, вводите сообщение коммита и нажимаете commit. Затем Google Code запрашивает вашу регистрационную информацию (которую хранит большинство клиентов) и готово. Просто, легко и без SSH
Номера версий? С помощью некоторого простого кода вы можете добавить номер версии и номер фиксации ко всем извлечениям, что значительно упрощает процесс. Вы также получаете полезные номера версий, которые действительно показывают изменения, например, 1.8.6.5165 новее, чем 1.8.6.5164.
Документация? Ну, сложно сказать. Черепаха задокументирована, но я не обращался к официальной документации так долго, что не могу судить. Чтения простого вступительного руководства мне было достаточно.
Слияние - это то, что я не могу сравнить. Мне приходилось делать это один раз в Git, когда кто-то еще вносил изменения в файл, над которым я работал, но никогда в SVN.
Какой из них я бы порекомендовал? Хорошо в больших командах, у git есть свои преимущества, главным образом, в нелинейном цикле разработки. В другом проекте я видел, как 4 программиста запускались в отдельных ветвях, а затем сливали весь код очень странным образом, который каким-то образом трансформировался в конечную главную ветку. У Github и msysgit был действительно хороший инструмент визуализации для всего проекта, который мне очень понравился.
Для отдельных разработчиков или небольших командных проектов SVN был бы лучшим, так как большинство функций Gits не используются, и вы получаете только его отрицательные стороны. Простота такая хорошая вещь