Как сделать, чтобы Git поддерживал символьные ссылки Windows как обычные файлы?
А то он поддерживает их как символьные ссылки. А я этого не хочу. Веду два проекта с общими самодельными библиотеками и хочу автоматической синхронизации этих библиотек.
Можно было бы и в одном Git держать — но вопросы с выпусками на GitHub. Проги разные, выпуски не синхронизированные. У одной состояние уже бета и старательно гоню в сторону законченной, у другой — всего лишь пре-альфа.
Lynn «Кофеман», Изменяешь в одном проекте — изменилось в другом.
Dmitry Roo, Чем проще развёртывание, тем лучше. И без того есть пара нестандартных шагов развёртывания — не хочется ещё и третий добавлять: качать определённый репозитарий и добавлять в определённый каталог.
Lynn «Кофеман», Есть два проекта.
Есть личная библиотека килобайт на тридцать. Ради такой не хочется заводить «большие пушки».
Она общая для обоих проектов. Занимается в основном теми штуками Qt, которые не сподобились сделать из коробки (например, наборы флагов QDlgType::FIXED и QDlgType::SIZEABLE), и простейшими строковыми операциями (например, str::trimSv — trim на string_view).
Иногда не расшаблонивается правильно. Иногда новую функцию хочу — в общем, библиотека не отлита в бронзе. Я просто хочу упростить синхронизацию этой библиотеки между двумя проектами.
А симлинки — это только вопрос удобства. Есть — хорошо. Нет — всё соберётся и так.
Мне это видится как три разных репозитория.
И можно использовать сабмодули.
Если не хочется сабмодули, то те же симлинки, но их вовсе не обязательно класть в гит.
Или любой способ запакетировать библиотеку и использовать как это принятов языке на котором вы пишите.
Lynn «Кофеман»,
Мне нужен этот файл. Но не нужно его оформлять в Git’е как симлинк. Гит слишком умный и понимает симлинки. Как эту функциональность отключить?
Lynn «Кофеман»,
А что взамен?
Налаживать внешнюю зависимость ради тридцати килобайт? Человек, скачавший репозитарий как ZIP, вообще ни хрена не скомпилирует.
Синхронизировать файлы вручную? Я УЖЕ ЗАДРАЛСЯ.
А с юнит-тестами как быть? Строить третий проект юнит-теста специально для общих модулей (и без того бывает, что модуль изменил — юнит-тестов не запустил), таскать в общем репозитарии Google Test? Как соизволите каталоги наладить?
Симлинк — тоже стандартный механизм, когда один и тот же файл должен быть одинаковым тут и там.
Lynn «Кофеман»,
Например, я по-чёрному использую симлинки, чтобы в том каталоге, куда программа откомпилировалась, были самые последние версии данных. Ну не классно?
Но тут ИСТОЧНИК в репозитарии, ССЫЛКА не версионируется. А я хочу версионировать и источник, и ссылку — как ни крути, ссылка будет в Git’е.
Lynn «Кофеман»,
И я не понимаю, как эта система сочетается с путями, прописанными в системе сборки (QMAKE, например). Две разных копии модуля для двух проектов? Когда пишешь в одиночку, ты точно знаешь, что тебе не нужно вызывать pull — с двумя копиями уже нужно! Один проект в стороне? А в каком каталоге, что писать в *.pro?
Lynn «Кофеман»,
То, что вы называете «стандартные механизмы», стандартные только на Linux. И то с оговоркой, потому что требуют многоэтажных командных строк. А под Windows — подобные утилиты часто требуют более крупных загрузок и большего геморроя с настройкой, чем собственно прога, которую ты пишешь.
Lynn «Кофеман», Язык программирования не важен, поскольку задача компилятора — увидеть файлы в папке, и всё. MinGW. Симлинки нормально компилирует.
И да, я хочу собирать грабли САМ, но чтобы другие пользователи могли собрать проект с минимумом посторонних утилит и уж тем более КАЧАТЬ ZIP, да и всё, БЕЗ УСТАНОВКИ ГИТА!!!
Lynn «Кофеман»,
Посмотрите на мой предпоследний вопрос: я попытался собрать KTextEditor — у меня просто НЕ ПОЛУЧИЛОСЬ. Там очень нестандартная цепочка сборки с кучей посторонних зависимостей, и скрипт для CMake вылетает с ошибкой: чего-то не хватает, ХЗ чего.
Lynn «Кофеман», А подмодули я пытаюсь применить к другой части — к сборке языкового ресурса. Дело относится только к сборке инсталлятора (перевести или откомпилировать можно и без Git), и для этого нужно собрать консольный переводчик. Главный камень преткновения — какие нужны команды Git для всего этого.
Встречный вопрос. Что должен делать Git при переключении веток? Если он будет воспринимать ссылки как файлы, тогда он будет принудительно менять эту библиотеку во всех проектах, где она используется. Зачем вам это?
Не изобретайте велосипед. Общую библиотеку подключают в виде подмодуля либо как поддерево. SmartGit умеет работать с поддеревьями и подмодулями.