Как использовать Git worktree в файловой системе host-guest на виртуальной машине - PullRequest
0 голосов
/ 05 мая 2019

Я открываю новое рабочее дерево в своем локальном репозитории в Windows и не могу скомпилировать его на моей виртуальной машине Linux, потому что «.git» содержит полный путь, начинающийся с «C: / Git», что виртуальныймашина не распознает.

У меня есть git-репозиторий, который мне часто требуется для кросс-компиляции как в Windows, так и в Linux.Первоначально я клонировал репозиторий в моей системе Windows и смонтировал диск «C:» в качестве общей файловой системы на виртуальной машине с Ubuntu.Обычно это прекрасно работает.

При попытке открыть новое рабочее дерево в git, связанный репозиторий не имеет своей собственной папки ".git", а скорее ссылается на папку ".git" исходного репозитория.и сохраняется как абсолютный путь в следующем формате:

gitdir: C:/Git/...

При попытке запустить:

git rev-parse

Я получаю следующее сообщение:

fatal: not a git repository: /mnt/hgfs/WindowsDriveC/Git/WorktreeDir/C:/Git/OriginalGitDir/.git/worktrees/WorktreeDir

Из-за этого ограничения некоторые из моих сценариев терпят неудачу.

Есть ли способ "обмануть" Linux, чтобы он распознал полный путь и правильно идентифицировал исходный репозиторий git?

1 Ответ

0 голосов
/ 05 мая 2019

Как правило, делать подобные вещи не рекомендуется, поскольку это может привести к повреждению, и, как вы видели, пути Windows не очень хорошо подходят для путей Linux.

Однако, как говорится,Есть несколько вариантов.Один из них - настроить рабочее дерево в Cygwin или Windows Subsystem для Linux и поделиться им.Это все равно приведет к тому, что на виртуальной машине Linux не будет пути, но можно будет создать символическую ссылку от /cygdrive/c или /mnt/c до /mnt/hgfs/WindowsDriveC, и тогда все остальное будет работать.

Другой вариант - просто использовать подсистему Windows для Linux, что означает, что вы можете выполнять компиляцию и создавать двоичные файлы Windows, не выходя из Windows.Вы будете создавать двоичные файлы Linux, но вам не придется беспокоиться о совместном использовании с виртуальной машиной.Рабочее дерево должно быть создано в WSL.

Последний вариант - отредактировать файл .git в рабочем дереве, чтобы использовать относительный путь к основному хранилищу.Это не поддерживается и может сломаться, но опять же это может работать для ваших нужд.Для этой цели обязательно используйте косую черту.

...