Сразу скажу — хотелось бы обойтись без священных войн.
Моя работа — написание программ на C# для использования на крупном предприятии (ну, т.е., "энтерпрайз"). До недавнего времени пользовался только SVN. Уже давно — лет семь. Всё устраивало. Слышал, разумеется, про git. Знаю, что он "распределенный" в отличие от "централизованного" SVN. Слышал, что возможности git
перекрывают возможности SVN, и поэтому он лучше. (Ну ясно же, что если какое-то средство делает все то же, что и другое плюс что-то еще, то оно лучше).
Несколько раз пытался изучить git и перейти на него, но не понял, что мне это даст. Хотя, в принципе, умом понимаю, что он лучше, что VCS развиваются в этом направлении, и все такое. Недавно предложил мне коллега перейти на git (перевести наш проект). Кстати, над проектом работаем только мы двое. Может, присоединится еще пара человек.
Перевели — создали приватный репозиторий на гитхабе. Были трудности с импортом проекта из SVN, история не хотела подтягиваться. Но справились. Ок.
Пишем в Visual Studio. Там есть плагин для гита. Но он, к сожалению, кривой, то есть зачастую просто падает и операции не выполняет. Да еще и пишет "Sorry", гад

.
Ну ладно, в большинстве случаев он все-таки работает, и тогда работа ничем не отличается от SVN: коммиты и апдейты все те же. Только коммит разбит на две фазы — локальный коммит и пуш. В студии даже кнопочка есть — Sync, все сразу делает, чтоб два раза не нажимать. В Гиточерепахе, кстати, тоже — предлагает пушить сразу после коммита.
Теперь проблемы. Я везде читаю о том, что в гите легкий мержинг и меньше конфликтов. Практика показывает — конфликтов ровно столько же, и это неудивительно, если двое правят одно и то же, конфликт неизбежно возникнет. Децентрализация. А зачем она? Проект, перед отправкой заказчику, все равно должен быть собран из центрального репозитория, куда должны пушить все программисты.
Авторизация. Это вообще жесть. В SVN всё предельно просто: есть логин и пароль, ты их вводишь, сервер их принимает или нет. Для защиты самого пароля есть https. Для того, чтобы скачать с гитхаба, мне пришлось там зарегистрироваться (ну ладно, я уже был зареган), создать какие-то ключи, скачать на рабочий компьютер. На рабочем компьютере с помощью какой-то сторонней программы этот ключ сохранить и ЕЩЕ РАЗ ЗАЩИТИТЬ ЕГО КАКИМ-ТО ДРУГИМ ПАРОЛЕМ. Ну ладно, какое-то время работало и так. Потом что-то стряслось, не помню что, и консольный клиент перестал работать, стал говорить, юзер не найден, доступ запрещен и т.д. Хотя я конфигугрировал это (git --config).
Почему, скажите, гит не может тупо спросить у меня логин и пароль и отправить их на проверку на сервер? Оказалось, что можно клонировать репу по https, а можно по ssh. Я вообще раньше думал, что это одно и то же... Окей, перебазировал локальную репу на ssh при помощи заклинания, найденного в инете. После этого у меня отвалился еще клиент в студии. Теперь он мне пишет:
An error occurred. Detailed message: An error was raised by libgit2. Category = Tag (Error).
This transport isn't implemented. Sorry
Что я, спрашивается, должен с этим делать?
Кстати, о
git --config. Пару вопросов: зачем ему мой email?? И второй: если я жестко задам юзера, как я буду работать с другим проектом, каждый раз менять его?
У гита больше команд, они сложнее. Нужно выучить такие понятия как staging, index, bisect и др. На форумах часто спрашивают, как в гите сделать то-то и то-то, и в ответ получают магические заклинания. А выигрыш-то какой? Товарищ подсказывает, что в случае, когда центральный репозиторий станет недоступен, мы сможем просто по локалке пушить друг другу в частный репозитории. Да, это плюс, но как по мне, минусы он не перевешивает.
Итак, что бы я хотел от сообщества? Поймите, я не ретроград, я за изучение новых технологий. Но в данном случае в упор не вижу, чем гит может сделать мою жизнь лучше в сравнении с SVN. Хотелось бы получить действительно убедительные аргументы.