Ни разу за 4 года своей программистской карьеры не использовал системы управления версиями (далее СУВ (сухая углекислая ванна) :-)) (да, бывает и такое). Работаю в команде, но склонить коллег в сторону СУВ нет возможности/нужных доводов, возможно удастся собственным примером. Посему хочу начать использовать пока чисто для себя, но немного пугает сложность, а времени разбираться в разных сложностях нет, хочется пользоваться благами СУВ приложив минимум усилий, из коробки. Хотя бы для начала, что посоветуете? Скачал git, установил, запустил, увидел черный консоль и… закрыл :-)
Разработка ведется на Delphi/C++ под виндовс. Если это важно, виндовс запускаю на виртуальной машине из под ubuntu. Заливка версий и т.п. через интернет — не приветствуется т.к. трафик ограничен, а интернет на рабочем месте очень медленный. Нужно, чтобы информация хранилась в моей личной папке на сервере, расположенном в локальной сети. Сама система (и клиент и сервер) должны работать исключительно на моем компьютере.
Из возможностей хочется минимум: сохранение проектов, возможность отката, согласовывание нескольких «вариантов» одной программы, в случае, если в «ядре» нашелся глюк или новая фича, и главное — простота и прозрачность.
Советую mercurial, потому что люблю эту систему. Есть отличная серия статей для начинающих. Консоли пугаться не надо, там действительно всё очень просто, надо выучить буквально несколько команд. Но есть и кроссплатформенный GUI — TortoiseHG, в котором можно делать практически всё.
SVN стал не модным, потому что программисты захотели иметь у себя копию репозитория, в который они коммитят, мол быстрее и надежнее. Так появились децентрализованные репозитории.
Позже ушлые программисты придумали сервисы, куда можно коммитить свой код, другие программисты могли бы этот код легко взять себе или дополнить его простым коммитом, так появились Bitbucket и GitHub. А некоторые из них навесили ещё социальные функции поверх кода и появились социальные сети мёрджей и форков.
СВН хранит рабочую копию, вся же история на сервере. Это может быть оправдано только для специфичных проектов и инфраструктур, либо при требовании обратной совместимости (для инертных компаний), остальным же распределённая система будет лучшим выбором, наверняка. Ну и главная проблема СВН, это работа с ветками, сложно это переоценить, попробовав поработать в быстро развивающемся проекте командой человек в 10, сначала на СВН, а потом пересев на гит/хг. Чуть выше есть ссылки на неплохую статью на эту тему.
Если проблема в консоли, и хочется хорошей интеграции в IDE, а в качестве IDE (для С++, например) используется Eclipse — хочу предложить Mercurial (HG). Под Eclipse есть функциональный плагин, позволяющий удобно работать (для меня это в своё время стало решающим фактором, так как плагин для Git был слишком кривым). Как Git так и HG — наиболее популярные распределённые системы, удовлетворяющие всем вашим требованиям. Стартовать же с нераспределённых я бы не советовал, наверняка, придётся потом переходить.
Ну и вот можно тут же на хабре и почитать перевод неплохой статьи — habrahabr.ru/post/108443/ (а лучше оригинал).
Описан переход с SVN, что тоже может быть полезным (причина, по которой я бы советовал сразу распределённую систему).
В чем разница между распределенными и не распределенными?
От человека, который посоветовал создать мне такой вопрос, я слышал, что Mercurial — почему-то маргинальная система :-)
Разница, как это не странно, в распределённости (в пространстве, времени, и прочей эзотерике). Можно долго разглагольствовать на эту тему, но Вы статью начните читать, и сразу станет всё ясно, оно там ближе к началу. По поводу маргинальности, скажу Вам так, какие бы холивары не велись вокруг гит и хг, по сути, существенных отличий практически нет, разница в функционале и принципах компенсируется плагинами и хаками. И, могу уверить, на старте, вряд ли вы заметите разницу вообще, так как пользоваться будете базовым функционалом. В сети полно обсуждений и таблиц сравнения, можете убедиться в этом сами, все споры скатываются в личные предпочтения и мелочи. Ничего же кроме гит и хг для старта не стал бы советовать, потому что они либо не распределённые, либо менее популярны.
Mercurial — не маргинальный! Mercurial очень хорош, у него, так сказать, самый «дружелюбный интерфейс» из трёх основных DVCSов (git, hg, bzr) и самая прозрачная логика работы, понять её очень легко.
Git вкурить сложнее:
* система команд более запутанная
* есть идея Tracking Branches (клон репозитория — не то же самое что сам репозиторий)
* ветки — не перманентные, а на самом деле теги/закладки, т.е. просто символьное имя какой-то ревизии
* сам git написан на какой-то безумной смеси скриптов perl + c + bash
Но зато:
* ОЧЕНЬ БЫСТРЫЙ!!!
* самый оптимальный по использованию дискового пространства
* его использует kernel.org :-)
* под него есть Gerrit (система Code Review)
И поэтому он — наиболее популярный из основных DVCSов…
Но мой личный выбор — Mercurial.
После выполнения шагов (1) и (2) можно, скажем, залить свой персональный проект на bitbucket.org, покомитать, посоздавать ветки, популить, попушить, поресетить.
С заведением аккаунтов есть проблемы:
1) «трафик ограничен, а интернет на рабочем месте очень медленный»
2) научишься только примитивным действиям (все остальное делает сторонний сервис)
Советую RhodeCode, демо версия доступна здесь.
Развертывание в два счета, настраивается и обновляется легко, есть веб-интерфейс управления репозиториями ( +статистика и т.п. ), в качестве системы контроля версий используется Mercurial + планируется поддержка Git.
У меня на проектном серваке стоит уже полгода — только хорошие впечатления.
Спасибо, вот уж не думал, что в таком вопросе будет сколько людей, столько и мнений. Я немного не понял, если Mercurial — система контроля версий, то что есть RhodeCode?
Я читал книгу по subversion в PDF прямо с их сайта (http://subversion.apache.org/docs/). Чтобы понять что и как, не влезая в внутренние тонкости работы самой Subversion, достаточно прочитать страниц 60-70. Вполне доступно описан цикл работы и основные команды.
Попробуйте не столь популярную, но весьма интересную и перспективную, как мне кажется систему. Fossil. Это DVCS. Фактически в Windows, представляет из себя один исполняемый файл. Не мусорит в системе. Построен на основе sqlite3. Репозиторий — это один файл — база sqlite. С легкостью можно хранить хоть на flash. Включает в себя web интерфейс, сервер, wiki, bug tracking. Есть возможность автоматической синхронизации с удалёнными репозиториями. Доступ к ним через HTTP. Поддержка прокси. Работа в режиме собственного сервера, CGI, INETD. На нем ведётся разработка самого sqlite.
Я про такую не слышал, может и хорошая. Но подключить коллег будет сложнее, потому что вряд ли и они про нее слышали и документации/статей по ней намного меньше чем скажем по тому же Git.
Вы сможете легко перенести его на локальный сервер если коллеги захотят тоже его использовать
Вам лучше использовать GitExtensions (http://code.google.com/p/gitextensions/) для работы с Git, даже можно запустить из Ubuntu через Mono.
Инструкция для работы с GitExtensions для вас будет такая:
После установки GitExtensions нажимаете Create New Repository и выбираете папку куда создать
Спасибо за помощь. Сейчас вот дисер дописываю (не хочу отвлекаться) и буду осваивать. Возможно придется к вашей помощи обратиться :-) я вас запомнил! :-)
> Ни разу за 4 года своей программистской карьеры не использовал системы управления версиями. Работаю в команде, но склонить коллег в сторону СУВ нет возможности/нужных доводов
Я, возможно, сгущаю краски, но если у вас нет каких-нибудь сверхестественных обстоятельств, мешающих использованию VCS, то ваши коллеги профнепригодны. Им за 60, что ли? Сейчас 2012ый год, и неприменение этих систем и препятствия им уже нельзя объяснить ничем иным.
Из систем рекомендую начать с SVN, она всё-таки попроще, а вообще рекомендую освоить какую-нибудь систему и сразу же менять работу. Или даже ещё раньше.
Вакансий много, кандидатов мало.
Вы немного сгущаете краски. Со мной работают люди с глубочайшими знаниями в своем деле. От новых технологий в IT мы, конечно, отстаем, это проявляется в использовании старых сред разработки. Но и цели у нас — не написание сайтов или многоплатформенных приложений. Вообще у компании разработка ПО — это только 30% всей деятельности. СУВ, конечно бы нам помог, но не критичен т.к. людей, работающих над одним приложением максимум 3-4. Но, в целом, возможно, другие на меня посмотрят и тоже подсядут на какой-нибудь СУВ, на что и надеюсь :-)
Git — самый модный тренд, так что лучше сразу его учить. А что, кстати, разработчик Дельфи — есть плагины для каких-то систем управления версиями? Я нахожу очень удобным пользоваться IDE, в которой сразу вшита система управления версиями.
> Разработка ведется на Delphi/C++ под виндовс. Если это важно, виндовс запускаю на виртуальной машине из под ubuntu.
Я не очень понимаю, зачем себя так мучать? Почему нельзя работать в той же ОС, в которой и для которой разрабатываешь? Впрочем, это дело вкуса.