Можно ли изменить пути Mercurial subrepo с абсолютного на относительный - PullRequest
4 голосов
/ 20 сентября 2010

Первоначально мои подпункты были определены с абсолютным URL-адресом в .hgsub, что сейчас вызывает некоторые проблемы. Это делает рабочий процесс «дружественного диктатора» невозможным, поскольку я хочу использовать промежуточный сервер, с которого пользователи клонируют свои рабочие копии. Затем я перенесу изменения на промежуточный сервер, прежде чем отправлять их в главный репозиторий (промежуточный сервер также является хостом непрерывной интеграции, поэтому я не буду извлекать материал напрямую на главный сервер). Абсолютные пути предотвращают это, поскольку клонированные репозитории будут перенаправлены непосредственно на мастер.

Теперь проблема в том, что мой hg сервер выдает 404 ошибки, когда я пытаюсь отправить изменения, сделанные в файле .hgsub. Ниже приведен пример изменения, которое я сделал

# original subrepo definition
common = http://hgserver/disp/common
# and after the change
common = common

Это не работает, выдает следующую ошибку

$ hg push
pushing to http://hgserver/disp
pushing subrepo common
abort: HTTP Error 404: Not Found

Можно ли таким образом изменить конфигурацию подрепортажа или мне нужно заново создать весь репозиторий?

Ответы [ 2 ]

3 голосов
/ 20 сентября 2010

Да, это должно быть изменяемым (и вы правы, что относительный делает для лучшего рабочего процесса), однако, относительный путь URL берется относительно hg root репо, в котором живет .hgsub- не туда, куда вы случайно нажимаете (что происходит от .hg/hgrc записи deafult в разделе paths.

Вот довольно нормальный макет подпункта:

on server http://hgserver/disp/main
    http://hgserver/disp/common # the "common" repo
    http://hgserver/disp/main # the main repo
        http://hgserver/disp/main/.hgsub # contains "common=../common"

Затем, после клонирования, все просто работает, и тот же hgsub отлично работает и на сервере.

Есть много вопросов о переполнении стека, когда люди просматривают лучшие макеты для относительных настроек субрепаратов, и пока я 'я не пробовал переключаться с одного на другое, я думаю, что если вы используете стиль «рядом с» суб-репо с "../sibling", который я показываю выше, он будет работать нормально.

1 голос
/ 08 декабря 2010

Обратите внимание, что проблема существует (ред.), Когда:

  1. Использование ssh (топ репо)
  2. Подпункты перечислены относительно top (как предлагается здесь - и обычно желательно) - и
  3. В репозитории верхнего уровня (ssh) указан абсолютный путь.

См. http://mercurial.808500.n3.nabble.com/subrepos-with-ssh-urls-with-absolute-paths-td1462834.html. По сути, он вызывает использование абсолютных путей в файле .hgsub, что нарушает упомянутый «дружественный диктатор» / интеграция рабочий процесс сервера.

Требуется решение , но сейчас нам нужно использовать абсолютные пути и выполнить повторное сопоставление для каждого пользователя в разделе [subpaths]. : - (

Примечание: теперь это исправлено: https://www.mercurial -scm.org / repo / hg-stable / rev / 71ea5b2b9517 Это версия Hg 1.8.3 (и выше)

...