Рекомендуемая структура репозитория / папки Mercurial для пользователя SVN - PullRequest
24 голосов
/ 03 марта 2010

Я экспериментирую с Hg с целью отойти от SVN, но хотел бы получить некоторые мнения о том, как я должен структурировать свой репозиторий Hg. Я пришел из SVN (что может испортить мой взгляд на то, как это должно работать!), И мой репозиторий сейчас выглядит примерно так:

Project1
  trunk
  branches
    1.0
    1.1
Project2
  trunk

и т.д.. Похоже, это «традиционный» способ структурирования хранилища SVN.

Как мне воспроизвести это с помощью Hg? Чтобы немного оживить это, мне нравится идея репозиториев / папок 'stable', 'qa' и 'dev', и я хотел бы представить это, если это возможно.

Я новичок в ртути, поэтому любая помощь или совет приветствуются.

Ответы [ 3 ]

26 голосов
/ 03 марта 2010

Существует несколько структурных различий между репозиторием Subversion (SVN) и Mercurial (HG), или, если коротко, репо, подразумевает, как вы будете «проектировать» свою иерархию:

  • Mercurial лучше работает только с одним проектом на репозиторий : поскольку вам всегда нужно клонировать весь репозиторий, наличие нескольких проектов в одном репозитории может оказать большое влияние на время клонирования, а также на операции push / pull, так как вам придется каждый раз синхронизировать всю работу, выполняемую в других проектах, кроме вашего.
  • SVN не имеет "сильного" понятия тегирования / ветвления, в то время как Mercurial делает : В SVN (на момент написания) каждая ветвь, каждый тег, в основном, является копией данного проект / папка / независимо. Рекомендованная структура trunk / branches / tags поможет вам найти ваши «копии» назад, не более. С другой стороны, ветви и теги хорошо определены в Mercurial. Тег - это действительно имя, которое вы указали в конкретной ревизии, и вы можете запросить все существующие теги. Для ветвей вы увидите, что есть МНОГИЕ способы их обработки, но тот, который лучше всего соответствует философии SVN, называется ветвями.

Имея это в виду и связывая с вами идею стабильного, обеспечения качества (QA) и процесса разработки (dev), вот что я бы порекомендовал:

  • Один репозиторий с именем «Стабильный» для каждого проекта. Несколько репозиториев "QA" на проект и тонны "Dev" на проект.
  • Теги и ветви имен определяются только «Стабильным» репо или, в конечном итоге, «QA». Репозитории Dev могут обрабатывать их по-разному, не причиняя вреда.
  • Вы никогда не делаете толчок к «QA» или «Стабильному» репо, они тянут или объединяют пакеты или патчи, и за каждого отвечает один человек.

Пример: MyProject-1.0

 [STABLE Repository, pulls from any/all QA]
  - MyProject-1.0

 [QA Repositories, branched from STABLE, pulls from any/all DEV ]
  - QA_MyProject-001 (Person A)
  - QA_MyProject-002 (Person B)
  - QA_MyProject-003 (Person C)
            ...
  - QA_MyProject-### (Person #)

 [DEV Repositories, branched from STABLE or QA]
  - DEV_MyProject-001 (Feature X) 
  - DEV_MyProject-002 (Feature Y)
  - DEV_MyProject-003 (Feature Z)
            ...
  - DEV_MyProject-### (Feature #)

  1. DEV completes feature(s)
  2. QA pulls feature(s) from DEV
  3. STABLE pulls from all approved QA(s) (consolidating all changes)
19 голосов
/ 03 марта 2010

Но прежде чем сделать это - проверьте это: hginit.com - это чтение за полчаса, и у него есть раздел для пользователей svn.

Сделал меня намного мудрее, и я решил отказаться от структуры / trunk / tag и использовать mercurial по-другому. Теперь у меня есть репозиторий для каждого проекта, который просто содержит структуру проекта, и я помечаю тегом команду mercurial tag.

.Джеспер Хауге

9 голосов
/ 03 марта 2010

Mercurial действительно хорошо документирован.Вам нужно только знать, где искать в вики.

Вы можете посмотреть вики-статью Mercurial RepositoryNaming , чтобы найти ответы на некоторые вопросы.

Вы также должны прочитатьОфициальное руководство по Mercurial: Mercurial: полное руководство

Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...