Управление распределенной версией для ОГРОМНЫХ проектов - возможно ли это?
Абсолютно! Как вы знаете, Linux массивный и использует Git. Mercurial is used for some major projects тоже, такие как Python, Mozilla, OpenSolaris и Java.
Мы очень довольны SVN прямо сейчас, но учебник Джоэля заинтриговал меня. Поэтому мне было интересно - это было бы возможно и в нашей ситуации?
Да. И если вы сейчас довольны Subversion, вы, вероятно, не делаете много разветвления и слияния!
Дело в том, что наш SVN-репозиторий ОГРОМНЫЙ. [...] Есть более 68 000 ревизий (изменений), сам источник занимает более 100 МБ
Как уже отмечалось, на самом деле это не так много по сравнению со многими существующими проектами.
Проблема проста: клон всего репозитория, вероятно, займет много времени, и он будет потреблять гораздо больше места на диске, который удаленно.
Как Git, так и Mercurial очень эффективны при управлении хранилищем, а их хранилища занимают гораздо меньше места, чем эквивалентное репо Subversion (преобразованное несколько). И как только у вас будет первоначальная проверка, вы просто нажимаете дельтами вокруг, что составляет очень быстро. В большинстве операций они значительно быстрее. Первоначальный клон - это разовая стоимость, поэтому на самом деле не имеет значения, сколько времени потребуется (и я уверен, вы были бы удивлены!).
И поскольку сама точка управления распределенной версией должна иметь как можно больше репозиториев, я начинаю сомневаться.
Место на диске дешево. Производительность разработчиков имеет гораздо большее значение. Так что, если репо занимает 1 ГБ? Если вы можете работать умнее, это того стоит.
Как работает Mercurial (или любой другой распределенный контроль версий)? Или они непригодны для таких огромных проектов?
Возможно, стоит ознакомиться с тем, как projects using Mercurial, например Mozilla, управляет процессом преобразования. Большинство из них имеют несколько репозиториев, каждая из которых содержит основные компоненты. Mercurial и Git поддерживают поддержку вложенных репозиториев. И есть инструменты для управления процессом преобразования - Mercurial has built-in support for importing from most other systems.
Добавлено: Чтобы уточнить - все это один монолитный зверь проекта, который компилируется в один .EXE и не может быть разделен.
Это делает его легче , как вам нужно только одно хранилище.
Добавлено 2: Вторая мысль. Репозиторий ядра Linux использует git и, вероятно, на порядок или два больше, чем у меня. Итак, как они работают?
Git предназначен для сырой скорости. Формат на диске, проводной протокол, алгоритмы в памяти полностью оптимизированы. И они разработали сложные рабочие процессы, где исправления распространяются от отдельных разработчиков, вплоть до подсистемы, до лейтенантов, и в конечном итоге до Linus. Одна из лучших вещей в DVCS заключается в том, что они настолько гибкие, что позволяют использовать всевозможные рабочие процессы.
Предлагаю вам прочитать excellent book on Mercurial от Bryan O'Sullivan, который поможет вам быстро подняться. Загрузите Mercurial и поработайте с примерами, и поиграйте с ним в каких-то царапинах, чтобы почувствовать это.
Затем запустите команду convert
, чтобы импортировать существующий репозиторий источника. Затем попробуйте сделать некоторые локальные изменения, зафиксировать, разветвить, просмотреть журналы, использовать встроенный веб-сервер и т. Д. Затем клонируйте его в другой блок и нажмите некоторые изменения. Время наиболее распространенных операций и посмотреть, как он сравнивается. Вы можете сделать полную оценку бесплатно, но некоторое время.
Имейте в виду, что большинство VCS используют жесткие ссылки, когда это возможно, поэтому клон не займет много места на диске –
Пока вы клонируете на локальном компьютере - обязательно. Но как насчет клона с центрального сервера, когда вы настраиваете следующую машину? –
Прототип (попробуйте импортировать SVN в git или mercurial), измерить, увидеть себя. Может быть, это сработает для вас, может быть, и не будет. –