Default Green Orange
Разработка сайтов и не только.
Have troubles with windows – reboot. Have troubles with linux – be root.
RSS
  • Home Page Home
  • SeoStatus
  • Карта сайта
  • Сайт-визитка
  • Контакты

Posts Tagged ‘Mecurial’

Несколько слов о Mercurial

Development, Python Комментариев нет

Меркуриал в последнее время стал моей основной системой контроля версий, и естественно у меня появился некоторый опыт, которым по моему мнению пора бы и поделиться.

Начнем с небольшого сравнения со старым добрым Subversion.

Долго пытаясь вспомнить недостатки децентрализованных система контроля версий нашел только один: возможность фальсификации авторства коммита — для проектов в которых я участвую такая фальсификация не несет никому никакого вреда, а потому я не считаю это большим недостатком.

Чуть позже при написании статьи вспомнил еще один, уже достаточно серьёзный недостаток — невозможность забрать часть репозитория. В любой современной децентрализованной системе контроля версий репозиторий является единой сущностью, а потому стянуть на машину разработчика только часть репозитория, как в Subversion и CVS не выйдет. Однако проблема с разделением репозитория решается именно его РАЗДЕЛЕНИЕМ.

Теперь попытаюсь вспомнить преимущества.

Локальный игнор-файл — файл содержащий паттерны для исключения файлов/каталогов из-под контроля версий может контроллироваться системой, а может быть так же исключен из-под контроля. Последний вариант дает разработчикам огромные возможности для хранения внутри рабочей копии дополнительных файлов, таких, как например инструменты разработчика, sql-дампы, да все, что только можно придумать. Простейший пример: Одни разработчики используют Eclipse, другие Netbeans, третьи Komodo, а каждая из этих сред создает в корне проекта файлы с мета-информацией о проекте. Включать эти файлы и папки в контроль версий смысла нет, а добавлять все возможные варианты в игнор, грозит его разрастанием.

Автоматический бэкап. Это преимущество неоспоримо, ведь каждый из разработчиков имеет на своей машине самодостаточный репозиторий, который можно в любой момент сделать главным (ну если вдруг сервер упал… с пятого этажа).

Получается, что главным преимуществом распределенных систем контроля версий является именно их распределенность. Преимущества этой распределенности распознаются разработчиками далеко не сразу, а только тогда, когда приходит некоторый опыт использования DVCS, потому я сейчас попробую обяснить удобства этой самой распределенности на примерах.

Для начала немного теории! Помните централизованные системы контроля версий? Там есть единый репозиторий в который мы коммитим и с которого обновляем нашу рабочую копию. В распределенных системах репозиторий находится прямо внутри рабочей копии. В Меркуриал репозиторий хранится в каталоге .hg прямо в корне проекта (рабочей копии). Все фиксации изменений и обновления происходят локально. Казалось бы все как и в централизованной системе, однако при надо же как-то делиться изменениями с другими разработчиками? Вот тут и начинается та самая распределенность. Чтобы опубликовать (протолкнуть в терминологии Mercurial) наши изменения в общий репозиторий (вспоминаем? система распределенная – репозиториев много) мы должны их сначала зафиксировать локально (commit), и только потом отправить в обший репозиторий (push). Для того, чтобы получить чужие изменения в свой локальный репозиторий (втягивать в терминологии Mercurial) мы должны выполнить комманду pull (тянуть). Когда чужие изменения уже находятся в нашем репозитории мы можем иметь 2 ветки изменений – 1) ветка наших изменений с несколькими коммитами 2) ветка чужих изменений тоже с несколькими коммитами. Ветки в итоге сходятся к одному родительскому узлу (changeset или «набор изменений» в терминолонии Меркуриал)

…… продолжение следует…


июня 3, 2010  
Tags: Development, Mecurial



  • Метки

    AJAX Bash CD-DVD CSS darmowe ogłoszenia Debian Desktop Development dr Ewa Dąbrowska Firefox Fun Google Google Chrome html humor Internet Internet Explorer JavaScript jQuery Laptop Linux Microsoft Mozilla MySQL Office ogłoszenia ogłoszenia katowice OpenOffice OpenSource PHP Programming Python Security SEO Seostatus Servers Subversion Ubuntu wczasy odchudzające wczasy zdrowotne Windows Work XUL Yandex zdrowe odżywianie
  • Новости из ридера

  • Категории

    • Development (88)
      • JavaScript (16)
        • jQuery (6)
      • PHP (33)
      • Python (3)
      • Source Version Control (2)
    • Internet (83)
      • SEO (20)
    • Laptop (4)
    • Linux (54)
      • Desktop (24)
      • Servers (11)
    • Microsoft (13)
    • Mozilla (32)
      • XUL (11)
    • OpenSource (21)
    • Other (19)
    • Uncategorized (30)
    • W3C (1)
    • Work (22)
      • Управление проектом (2)
  • Архив

    • Февраль 2012 (3)
    • Январь 2012 (15)
    • Декабрь 2011 (3)
    • Июнь 2011 (1)
    • Октябрь 2010 (1)
    • Август 2010 (2)
    • Июнь 2010 (6)
    • Апрель 2010 (3)
    • Март 2010 (5)
    • Февраль 2010 (1)
    • Январь 2010 (1)
    • Декабрь 2009 (2)
    • Ноябрь 2009 (6)
    • Октябрь 2009 (1)
    • Сентябрь 2009 (9)
    • Август 2009 (4)
    • Июль 2009 (10)
    • Июнь 2009 (22)
    • Май 2009 (24)
    • Апрель 2009 (46)
    • Март 2009 (7)
    • Февраль 2009 (4)
    • Январь 2009 (3)
    • Декабрь 2008 (6)
    • Ноябрь 2008 (6)
    • Октябрь 2008 (19)
    • Сентябрь 2008 (7)
    • Август 2008 (8)
    • Июль 2008 (5)
.
Copyright © 2012 Разработка сайтов и не только. All Rights Reserved
XHTML CSS Войти