Mercurial: два отдельных репо несколько связаны между собой (да, я запутался) - PullRequest
1 голос
/ 28 мая 2010

У меня есть локальный репозиторий, давайте назовем его ОДИН. ОДНА это актуальная программа. Это программа для Android, на случай, если по какой-то причине это имеет значение.

У меня есть удаленный репозиторий, назовем его EXT. EXT - это библиотека, используемая ONE.

ONE имеет сложную структуру каталогов, предписанную Android. Основные источники в src/bla/bla/ONE. Так как ONE использует EXT, для этого мне пришлось создать еще один каталог рядом с ним, то есть src/bla/bla/EXT.

Я думаю, хотел бы разделить их в двух репозиториях, но мне нужно, чтобы они фактически находились в той же структуре каталогов для компиляции ОДНОГО.

В данный момент я только что создал символическую ссылку для этого, но мне интересно, есть ли лучший способ сделать это, использующий некоторую функцию hg.

Ответы [ 3 ]

4 голосов
/ 28 мая 2010

Подпозитории отлично подходят для этого. Взгляните на этот связанный вопрос SO: (Как мне добавить подпункт к существующему репо в Mercurial .

1 голос
/ 01 июня 2010

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

У вас есть 2 проекта с одинаковой глубоко вложенной структурой каталогов:

Проект "ОДИН":

ONE
    /src
        /bla
            /bla
                /ONE

Проект "EXT"

EXT
    /src
        /bla
            /bla
                /EXT

Когда вы компилируете эти проекты, вам нужна следующая структура:

Compile Project
    /src
        /bla
            /bla
                /ONE
                /EXT

Или что-то похожее - по сути, оба исходных дерева объединены под одним "источником".

Поскольку вы не можете извлечь часть репозитория, где бы вы ни создавали подпозиторий, вы получите полный каталог «EXT». Итак, если вы сделаете подпункт рядом с «ОДИН», вы получите:

Combined Project
    /src
        /bla
            /bla
                /ONE
                /src
                   /bla
                       /bla
                           /EXT

То, что вы ищете, это «Частичный клон», которого еще не существует.

https://www.mercurial -scm.org / вики / PartialClone

Я думаю, что ссылки на ОС - это путь.

Надеюсь, это поможет.

0 голосов
/ 29 мая 2010

Используйте hg subrepos . Например:

$ git init ONE-proj
$ cd ONE-proj
$ mkdir -p src/bla/bla/ONE
$ ... # commit your initial project files for ONE
$ echo src/bla/bla/EXT = /path/to/hg/repository/EXT > .hgsub
$ hg add .hgsub
$ hg clone /path/to/hg/repository/EXT src/bla/bla/EXT
$ hg commit
...