Может ли репозиторий git иметь N рабочих деревьев

Я пытаюсь написать хранилище файлов на основе libgit2. Моментальные снимки программного обеспечения должны быть сохранены как ветки mysoftware, а определенные версии зафиксированы и помечены. Затем позже я хочу проверить теги в разных каталогах.

Глядя на git_checkout_tree, кажется, что для репозитория существует только одно рабочее дерево, и поэтому даже не представляется возможным одновременное извлечение нескольких рабочих деревьев. Это правильно!?

ИЗМЕНИТЬ:

Кроме того, я хотел бы, чтобы эта штука работала в Windows без необходимости в cygwin!


person abergmeier    schedule 07.03.2014    source источник
comment
возможный дубликат несколько рабочих каталогов с Git?   -  person meagar    schedule 07.03.2014
comment
На самом деле оказалось, что в моем случае было достаточно использовать голый репозиторий, так как я хочу, чтобы репо редактировалось только моей реализацией libgit2. И используя Tree и Index, это работает как шарм.   -  person abergmeier    schedule 25.03.2014


Ответы (2)


Структура git_checkout_opts в libgit2 содержит параметр target_directory, который позволит git_checkout_tree() записывать в другой каталог вместо использования рабочего дерева по умолчанию для репозитория. Это позволит вам создать собственное решение с помощью libgit2, которое поддерживает несколько извлеченных копий.

Без использования этого параметра объект libgit2 git_repository ожидает, что будет только один рабочий каталог, и обращается к параметру конфигурации core.worktree, если он не является «естественным» рабочим каталогом для репозитория.

Боюсь, трюки git-new-workdir с символическими ссылками в каталоге .git не очень хорошо работают с libgit2 прямо сейчас, особенно в Windows. Я бы хотел, чтобы это было решено, но это не слишком высоко в моем списке приоритетов.

person arrbee    schedule 07.03.2014
comment
Спасибо, это выглядит многообещающе. Рассмотрю это. - person abergmeier; 08.03.2014

Git изначально не поддерживает это, но вы можете использовать git-new-workdir для сделай это.

person meagar    schedule 07.03.2014
comment
Смотрите мой вопрос редактировать. Мне не нужен внешний сценарий, но он должен быть автономным. - person abergmeier; 07.03.2014
comment
Тогда нет, как я уже сказал, Git изначально не поддерживает это. Вам придется клонировать вторую копию репозитория. - person meagar; 07.03.2014