January 2025

S M T W T F S
   1234
567891011
12131415161718
1920 2122232425
262728293031 

Style Credit

Expand Cut Tags

No cut tags
Wednesday, September 29th, 2021 11:57 am
Гит не заточен под энтерпрайзную разработку(*). Под Win  не заточен тоже.
Я с недавних пор пересел на корпоративный win10, и вот что выловил в процессе.

1) Если с вашим репозиторием работали из линукса, немаловероятно что в нем, в одном каталоге, будут файлы, различающиеся по имени только кейсом. xxx.txt & Xxx.txt например. При попытке вычекивания рабочей копии получите ошибку.
Решение:
  1. Устанавливаете WSL: -- wsl --install --distributive Ubuntu
  2. Заводите директорию для проектов
  3. Вызываете "fsutil file setCaseSensitiveInfo <yourfolder> enable"
  4. Теперь можно вычекивать рабочую копию в нее -- она нынче кейс-сенситивная.
2) Ваш репозиторий большой и неповоротливый, для работы надо только часть директорий. Вам нужна новая модная фича гита sparse-checkout.
  1. У него есть два режима работы: cone и "обычный". В cone он считает каждую строку своего конфига паттерном, который надо оставить, в не-cone -- в строке должен быть прям паттерн со звездочками.
  2. Проблема в том, что тул для конфигурирования оч корявый, и постоянно путает эти два режима.
  3. git sparse-config init --cone сгенерит в .git/info/ файл конфига sparse-checkout "не-cone" версии.
  4. потом можно добавить в "рабочий набор" директорий посредством git sparse-checkout set dir1 dir2 dir7 dir5 и в конфиг это всё влетит и будет хорошо.
  5. Но вот если сделать git sparse-checkout disable а следом git sparse-checkout reapply -- оно вспомнит про "cone" режим, перепишет конфиг и выберет только директории (и всю бурду что попадет под паттерн из того, чего вы не ждали).
  6. Вывод -- пока не допилят, ходить надо по пути -- инит, сет. Не пытаясь переконфигурять. Надо новый расклад -- инит по новой, сет по новой.
3) В вашем репе большая вложенность каталогов -- влипнете в "path too long". По неизвестной причине гит с git-scm.com по дефолту считает MAX_PATH=260. 
  • git config --system core.longpaths true

4) Реп содержит симлинки? Поздравляю! Еще одни пляски.
  • git config --system core.symlinks true. Но этого не достаточно.
Вычекнется всё молча, но на месте симлинков будут текстовые файлы с указанием куда кажет симлинк. Молча. Тихо. Предупреждать об этом совершенно лишнее, сюрприз будет.
Причины:
  • По дефолту Win дает создавать симлинки только админу.
Что делать:
  1. выставить developer mode (ну или всегда запускать гит из админской консоли -- это для самых храбрых)
  2. клонировать реп по новой (да, да, только чекаута не достаточно)
  3. чекаут

5) Про боль и унижение с git lfs migrate расскажу как-нибудь потом. В двух словах -- это пока не работает.

(*) Примечание.
Не все знают что такое энтерпрайзная разработка. Это не синоним большого проекта и не синоним распределенной команды. Разработка линуксового ядра -- не энтерпрайзная разработка.
Энтерпрайз -- это когда в проекте есть человеки ОЧЕНЬ разного уровня. Некоторым человекам может прийти в голову положить в реп tar.gz на сотню метров. Другим -- пдфов, да пожирнее. Третьи будут туда xls запихивать. А четвертые смотреть на это всё с удивленными глазами, но сделать ничего не смогут.


Tags:

Reply

This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting