Гит не заточен под энтерпрайзную разработку(*). Под Win не заточен тоже.
Я с недавних пор пересел на корпоративный win10, и вот что выловил в процессе.
1) Если с вашим репозиторием работали из линукса, немаловероятно что в нем, в одном каталоге, будут файлы, различающиеся по имени только кейсом. xxx.txt & Xxx.txt например. При попытке вычекивания рабочей копии получите ошибку.
Решение:
4) Реп содержит симлинки? Поздравляю! Еще одни пляски.
Причины:
5) Про боль и унижение с git lfs migrate расскажу как-нибудь потом. В двух словах -- это пока не работает.
(*) Примечание.
Не все знают что такое энтерпрайзная разработка. Это не синоним большого проекта и не синоним распределенной команды. Разработка линуксового ядра -- не энтерпрайзная разработка.
Энтерпрайз -- это когда в проекте есть человеки ОЧЕНЬ разного уровня. Некоторым человекам может прийти в голову положить в реп tar.gz на сотню метров. Другим -- пдфов, да пожирнее. Третьи будут туда xls запихивать. А четвертые смотреть на это всё с удивленными глазами, но сделать ничего не смогут.
Я с недавних пор пересел на корпоративный win10, и вот что выловил в процессе.
1) Если с вашим репозиторием работали из линукса, немаловероятно что в нем, в одном каталоге, будут файлы, различающиеся по имени только кейсом. xxx.txt & Xxx.txt например. При попытке вычекивания рабочей копии получите ошибку.
Решение:
- Устанавливаете WSL: -- wsl --install --distributive Ubuntu
- Заводите директорию для проектов
- Вызываете "fsutil file setCaseSensitiveInfo <yourfolder> enable"
- Теперь можно вычекивать рабочую копию в нее -- она нынче кейс-сенситивная.
- У него есть два режима работы: cone и "обычный". В cone он считает каждую строку своего конфига паттерном, который надо оставить, в не-cone -- в строке должен быть прям паттерн со звездочками.
- Проблема в том, что тул для конфигурирования оч корявый, и постоянно путает эти два режима.
- git sparse-config init --cone сгенерит в .git/info/ файл конфига sparse-checkout "не-cone" версии.
- потом можно добавить в "рабочий набор" директорий посредством git sparse-checkout set dir1 dir2 dir7 dir5 и в конфиг это всё влетит и будет хорошо.
- Но вот если сделать git sparse-checkout disable а следом git sparse-checkout reapply -- оно вспомнит про "cone" режим, перепишет конфиг и выберет только директории (и всю бурду что попадет под паттерн из того, чего вы не ждали).
- Вывод -- пока не допилят, ходить надо по пути -- инит, сет. Не пытаясь переконфигурять. Надо новый расклад -- инит по новой, сет по новой.
- git config --system core.longpaths true
4) Реп содержит симлинки? Поздравляю! Еще одни пляски.
- git config --system core.symlinks true. Но этого не достаточно.
Причины:
- По дефолту Win дает создавать симлинки только админу.
- выставить developer mode (ну или всегда запускать гит из админской консоли -- это для самых храбрых)
- клонировать реп по новой (да, да, только чекаута не достаточно)
- чекаут
5) Про боль и унижение с git lfs migrate расскажу как-нибудь потом. В двух словах -- это пока не работает.
(*) Примечание.
Не все знают что такое энтерпрайзная разработка. Это не синоним большого проекта и не синоним распределенной команды. Разработка линуксового ядра -- не энтерпрайзная разработка.
Энтерпрайз -- это когда в проекте есть человеки ОЧЕНЬ разного уровня. Некоторым человекам может прийти в голову положить в реп tar.gz на сотню метров. Другим -- пдфов, да пожирнее. Третьи будут туда xls запихивать. А четвертые смотреть на это всё с удивленными глазами, но сделать ничего не смогут.
Tags: