Mercurial subrepo и относительный путь - PullRequest
5 голосов
/ 24 февраля 2011

У меня есть проект, для которого у меня есть репозиторий bitbucket, и он зависит от другого проекта, который я включаю в качестве подпункта. Теперь у меня нет принудительного доступа к под-репозиторию, и я не хочу или не хочу - это отношения только для извлечения.

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

Main/           ; pushes to https://mine.org/Main
  .hg/
  .hgsub
  Lib/
    SubRepo/    ; clone of Main/../SubRepo/
      .hg/

SubRepo/        ; local copy of https://forbidden.org/SubRepo
  .hg/

Содержимое .hgsub - это что-то вроде

Lib/SubRepo = ../SubRepo

Тогда я клонировал,

~/path/to/Main $ hg clone ../SubRepo/ Lib/SubRepo

Пока все хорошо. Проблема в том, что после того, как я настроил все это и зафиксировал изменения, при попытке нажать Main Mercurial попытается переместить SubRepo на https://mine.org/SubRepo,, который не существует, что приведет к сбою всей операции push.

Есть ли что-то, что я пропускаю?

Ответы [ 2 ]

4 голосов
/ 24 февраля 2011

Почему бы просто не создать https://mine.org/SubRepo - если вы не хотите его рекламировать, вы всегда можете включить hide для него в разделе [web] в файле .hg/hgrc.Это шаблон, к которому я привык, когда вы клонируете основной репозиторий и все вложенные репозитории в одной и той же компоновке в каждом месте, где вы будете их использовать: и вашу коробку разработки, и вашу установку hgweb с веб-интерфейсом.

В качестве альтернативы, вы могли бы использовать [subpaths] секцию в Main/.hg/hgrc с чем-то вроде этого:

[subpaths]
https://mine.org/SubRepo = https://forbidden.org/SubRepo

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

1 голос
/ 24 февраля 2011

Кажется, что то, что делает Mercurial, является законным: используя пути, перечисленные в вашем .hgsub, он пытается переместиться в каталог с именем 'SubRepo', который существует на один уровень выше, чем Main.Это явно не то, что вы хотите, так что вам, вероятно, придется поработать над магией.Я могу придумать два варианта:

  1. Если вы можете это поддержать, поместите локальную копию репозитория forbidden.org в C:/Forbidden/Subrepo или что-то подобное, и используйте этот абсолютный путь в вашем.hgsub.Mercurial будет иметь возможность подтолкнуть к этому, и он должен работать.

  2. Нет проблем, включая фактический URL-адрес disabled.org в качестве адреса вашего подотчета, если вы этого не сделаетевнести любые изменения в этот репо.Если в подпункте нет изменений, ваш толчок должен быть успешным.Конечно, это довольно ручной вариант, и в более крупной команде его невозможно было бы применить.Если вы случайно совершили какое-то изменение в подпункте, вам придется пройти и использовать histedit или MQueues , чтобы вытащить его, что может быть сложно с подпунктами.

...