FAQ и hginit.com были действительно полезны, поскольку помогли мне перейти с svn на hg.
Однако, когда дело доходит до использования функции подхранилища Hg в качестве внешних элементов Subversion, я пробовал все и не могу воспроизвести хорошее поведение svn externals.
Вот простейший пример того, что я хочу сделать:
Инициализировать репозиторий "lib" Этот репозиторий никогда не должен использоваться как автономный; он всегда включается в основные репозитории как вспомогательный репозиторий.
Инициируйте один или несколько репозиториев, включая репозиторий. Чтобы не усложнять пример, я «инициализирую» репозиторий под названием «main».
Попросите "main" включить "lib" в качестве подрепозитория
Важно - И ВОТ ЧТО Я НЕ МОГУ НАЧАТЬ РАБОТАТЬ: когда я изменяю файл внутри «main / lib» и нажимаю модификацию, это изменение помещается в репозиторий «lib», а НЕ в копию. внутри «основного».
Командные строки говорят громче, чем слова. Я перепробовал столько вариаций на эту тему, но вот суть. Если кто-то сможет ответить в командной строке, я буду вечно благодарен!
1. Запустить репозиторий "lib"
$ cd / home / moi / hgrepos ## Где я храню свои репозитории hg, на моем основном сервере
$ hg init lib
$ echo "foo"> lib / lib.txt
$ hg добавить библиотеку
$ hg ci -A -m "Init lib" lib
2. Запустите «главный» репозиторий и включите «lib» в качестве подрепозитория.
$ cd / home / moi / hgrepos
$ hg init main
$ echo "foo"> main / main.txt
$ hg добавить основную
$ cd main
$ hg clone ../lib lib
$ echo "lib = lib"> .hgsub
$ hg ci -A -m "Инициировать главную".
Все это работает нормально, но когда я делаю клон «основного» репозитория и делаю локальные изменения в файлах в «main / lib» и нажимаю их, изменения переносятся в «main / lib», а НЕ в «lib». ".
В COMMAND-LINE-ESE ЭТО ПРОБЛЕМА:
$ / home / moi / hg-test
$ hg clone ssh: //[email protected]/hgrepos/lib lib
$ hg clone ssh: //[email protected]/hgrepos/main main
$ cd main
$ echo foo >> lib / lib.txt
$ hg st
M lib.txt
$ hg com -m "Измененный lib.txt из основных репозиториев" lib.txt
$ hg push
отправка на ssh: //[email protected]/hgrepos/main/lib
Последняя строка вывода hg показывает проблему.
Это показывает, что я внес изменения в КОПИЮ файла в lib, а НЕ в файл в репозитории lib. Если бы это работало так, как я бы хотел, чтобы он работал, толчок был бы в hgrepos / lib, а НЕ в hgrepos / main / lib. То есть я бы увидел:
$ hg push
отправка на ssh: //[email protected]/hgrepos/lib
ЕСЛИ ВЫ МОЖЕТЕ ОТВЕТИТЬ НА ЭТО УСЛОВИЯ
КОМАНДНЫХ СТРОК, А НЕ НА АНГЛИЙСКОМ ЯЗЫКЕ,
БУДУ ВЕЧНО БЛАГОДАРНЫ!
Заранее спасибо!
Эмили в Портленде