Обновление из-за новых идей : увидев этот вопрос пять лет спустя, я понимаю, что это связано с попыткой использовать систему управления версиями в качестве менеджера пакетов.Это, конечно, приводит к всевозможным неожиданным проблемам, и мы не должны использовать это таким образом.Если вы читаете этот вопрос, я предлагаю поискать менеджер пакетов для вашего предпочтительного языка.
Мой оригинальный вопрос : я сейчас нахожусь в процессе перехода от Subversion к Mercurial,и я должен сказать, что не жалею об этом решении.Однако, пытаясь преобразовать мой проект, я столкнулся с проблемой Mercurial, которая, похоже, не может быть исправлена.У меня есть два разных проекта: один - это фреймворк, а другой - приложение, которое опирается на эту фреймворк.Вот как выглядят репозитории:
Репозиторий Framework:
- документы /
- deploy /
- lib /
- тесты /
Репозиторий приложений:
- application /
- config /
- lib /
- tests /
- www /
Мне бы хотелось, чтобы каталог lib приложения содержал копию lib / фреймворков.каталог.Я делал это, используя svn: externals.Теперь я знаю, что Mercurial поддерживает концепцию субпозиториев , но это не похоже на «правильное» решение, поскольку оно фактически не тянет в каталог lib /, как я хотел, как выВсе равно придется тянуть и толкать изменения вручную .Кроме того, после клонирования репозитория фреймворка вы получите всех , а не только каталог lib /.Мне нужен только каталог lib /, а не тесты или документы.
Теперь я придумал два разных решения этой проблемы, но мне интересно, какое из них лучше.Первым решением было бы клонировать фреймворк в другом каталоге и создать символическую ссылку в каталоге lib / приложения, которая указывает на каталог lib / фреймворка.Помещение символической ссылки в .hgignore должно убедиться, что все в порядке, я думаю?Это означает, что вы можете редактировать код фреймворка и фиксировать его, а также редактировать код приложения и фиксировать его.
Другой вариант - иметь несколько репозиториев.Фреймворк полностью вытащен, что означает, что вы получите каталоги docs /, deploy /, test / etc., которые не нужны для использования фреймворка.Я подумал, что, может быть, создание репозитория исключительно для библиотеки может быть решением, хотя я искренне сомневаюсь в этом, поскольку модульные тесты очень зависят от самой библиотеки.
Кто-нибудь знает достойное решение этой проблемы?