Я могу клонировать часть Подвижного репозитория?

Python имеет довольно хорошую библиотеку IPC: см. https://docs.python.org/2/library/ipc.html

44
задан Martin Geisler 20 January 2012 в 08:31
поделиться

4 ответа

Mercurial и Git разрешают клонирование только всего репозитория. Таким образом, рекомендуется, чтобы каждый проект имел свой собственный репозиторий.

Mercurial имеет расширение forest , чтобы упростить создание «леса» для репозиториев проектов. Расширение хранит каждый проект в отдельном репозитории, но предоставляет опции для обновления / отправки / извлечения всех лесных репозиториев вместе.

5
ответ дан 26 November 2019 в 22:04
поделиться

Насколько мне известно, это невозможно. Но по сравнению с Subversrion, клонирование репозиториев целиком может быть не медленнее, чем просто ответвление от SVN.

Цитата из UnderstandingMercurial :

Многие пользователи SVN / CVS ожидают размещения связанные проекты вместе в одном репозиторий. Это действительно не то, что рт был создан для, поэтому вам следует попробовать другой способ работы. Эта особенно означает, что вы не можете проверить только один каталог из репозиторий.

Если вам абсолютно необходимо разместить несколько проектов в виде мета-репозиторий, вы можете попробовать функция Подхранилища , которая была введены в Mercurial 1.3 или старый ForestExtension .

17
ответ дан 26 November 2019 в 22:04
поделиться

@Nick

«Например, в Subversion у вас могут быть ствол и ветви. Если я хочу получить только ствол (или одну из веток), я могу просто запросить [проект] / ствол . Если я клонирую репозиторий hg, я получу ствол и все ветви. Это может быть много информации, которая мне не нужна. Могу ли я избежать этого? »

Абсолютно. Просто используйте hg clone -r и получите только нужную вам ветку. Если у вас много веток, вам понадобится -r для каждой. не обязательно должна быть именованной веткой: вы можете просто иметь несколько безымянных заголовков (или именованных заголовков с использованием закладки, хотя они все еще не идеальны, потому что в настоящее время они не отображаются с push / pull / clone).

Имейте в виду, что в DVCSes, среди которых Mercurial, ветви часто недолговечны и часто сливаются друг с другом. Если вы потянете за ветку, вы все равно получите общую историю, которая имеет место с любыми другими ветвями.

16
ответ дан 26 November 2019 в 22:04
поделиться

@Nick сказал:

"Это довольно большое упущение, поскольку многие хостинговые сайты предлагают только одно репо. С svn я могу эффективно иметь столько репозиториев, сколько захочу, взяв только одну ветку из основной. субрепо звучит как взлом ».

Субрепо (также известные как субмодули) не так идеальны, как« узкие клоны », это правда. Но, по крайней мере, для того, чтобы иметь много разных проектов в репозитории одного хостингового сайта, вы можете иметь несколько баз кода в одном репозитории. Это не позволит вам разделить разные разделы одного репозитория / подкаталогов проекта, но позволит вам управлять несколькими проектами. У вас есть много именованных ветвей, каждая из которых имеет пустую (или нулевую) ревизию (т.е. у них нет общей корневой ревизии). Отслеживать ветки может быть немного беспорядочно, но это работает.

Например:

hg init
hg branch project-1
# Changes, commits, repeated as needed
hg update null
hg branch project-2
# Changes, commits, repeated as needed

Теперь вы можете видеть все свои проекты:

> hg branches
project-2                      5:42c2beffe780
project-1                      2:43fd60024328

Проекты не связаны между собой (хотя вы можете их объединить):

> hg debugancestors
-1:000000000000 

Наиболее полезно: вы можете клонировать только тот проект, который вам нужен, а остальные не будут смешиваться:

> hg clone <repository> -r project-1

График для этого будет выглядеть примерно так ( hg log -qG ):

@  5 | project-2 | {tip}
|
o  4 | project-2
|
o  3 | project-2

o  2 | project-1
|
o  1 | project-1
|
o  0 | project-1

Вы можете сделать это для любого количества проектов, перечислив каждый с ветвями hg и переключаться между ними с помощью hg update . Это требует некоторой осторожности, потому что поддержка именованных ветвей не идеальна. Во-первых, это не всегда интуитивно понятно (прочтите о hg clone -u в Mercurial 1.4 - поведение до 1.4 удивительно при клонировании). Но он действительно работает.

вы можете клонировать только тот проект, который вам нужен, остальные не будут смешиваться:

> hg clone <repository> -r project-1

График для этого будет выглядеть примерно так ( hg log -qG ):

@  5 | project-2 | {tip}
|
o  4 | project-2
|
o  3 | project-2

o  2 | project-1
|
o  1 | project-1
|
o  0 | project-1

Вы можете сделать это для любого количества проектов, перечисляя каждый с ветвями hg и переходя между ними с помощью hg update . Это требует некоторой осторожности, потому что поддержка именованных ветвей не идеальна. Во-первых, это не всегда интуитивно понятно (прочтите о hg clone -u в Mercurial 1.4 - поведение до 1.4 удивительно при клонировании). Но он действительно работает.

вы можете клонировать только тот проект, который вам нужен, остальные не будут смешиваться:

> hg clone <repository> -r project-1

График для этого будет выглядеть примерно так ( hg log -qG ):

@  5 | project-2 | {tip}
|
o  4 | project-2
|
o  3 | project-2

o  2 | project-1
|
o  1 | project-1
|
o  0 | project-1

Вы можете сделать это для любого количества проектов, перечисляя каждый с ветвями hg и переходя между ними с помощью hg update . Это требует некоторой осторожности, потому что поддержка именованных ветвей не идеальна. Во-первых, это не всегда интуитивно понятно (прочтите о hg clone -u в Mercurial 1.4 - поведение до 1.4 удивительно при клонировании). Но он действительно работает.

и переключаться между ними с помощью hg update . Это требует некоторой осторожности, потому что поддержка именованных ветвей не идеальна. Во-первых, это не всегда интуитивно понятно (прочтите о hg clone -u в Mercurial 1.4 - поведение до 1.4 удивительно при клонировании). Но он действительно работает.

и переключаться между ними с помощью hg update . Это требует некоторой осторожности, потому что поддержка именованных ветвей не идеальна. Во-первых, это не всегда интуитивно понятно (прочтите о hg clone -u в Mercurial 1.4 - поведение до 1.4 удивительно при клонировании). Но он действительно работает.

6
ответ дан 26 November 2019 в 22:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: