У меня есть репозиторий Git, в котором я храню все свои основные файлы JavaScript и CSS и сценарии, которые я буду использовать в различных проектах.
Если я создаю новый проект в своем собственном Git-репозитории, как мне использовать файлы JavaScript из моего медиа-репозитория в моем новом проекте таким образом, чтобы мне не приходилось обновлять обе копии скрипта при внесении изменений ?
git
git-submodules
multiple-repositories
Брент О'Коннор
источник
источник
Ответы:
Ключ это git submodules .
Начните читать главу « Подмодули» Git Community Book или Руководства пользователя.
Скажем, у вас есть хранилище PROJECT1, PROJECT2 и MEDIA ...
Повторите на другом репо ...
Круто то, что каждый раз, когда вы вносите изменения в MEDIA, вы можете сделать это:
Это только что зафиксировало тот факт, что подмодуль MEDIA WITHIN PROJECT2 теперь находится в версии XYZ.
Это дает вам 100% контроль над тем, какую версию MEDIA использует каждый проект. Подмодули git хороши , но вам нужно экспериментировать и узнавать о них.
источник
Подумайте об использовании поддерева вместо подмодулей, это сделает вашу жизнь пользователей репо намного проще. Вы можете найти более подробное руководство в книге Pro Git .
источник
Если я хорошо понимаю вашу проблему, вам нужны следующие вещи:
К сожалению, нет окончательного решения для того, что вы хотите, но есть некоторые вещи, с помощью которых вы можете сделать вашу жизнь проще.
Сначала вы должны решить одну важную вещь: хотите ли вы хранить для каждой версии в вашем репозитории проекта ссылку на версию медиа-файлов? Так, например, если у вас есть проект с именем example.com, вам нужно знать, какой style.css он использовал 2 недели назад, или последний всегда (или в основном) лучший?
Если вам не нужно это знать, решение легко:
Однако в большинстве случаев вам нужна эта информация о версиях. В этом случае у вас есть два варианта:
Храните каждый проект в одном большом хранилище. Преимущество этого решения заключается в том, что у вас будет только 1 копия хранилища мультимедиа. Большой недостаток заключается в том, что переключаться между версиями проекта гораздо сложнее (если вы переходите на другую версию, вы всегда будете изменять ВСЕ проекты).
Используйте субмодули (как объяснено в ответе 1). Таким образом, вы будете хранить медиа-файлы в одном репозитории, и проекты будут содержать только ссылку на конкретную версию медиа-репо. Но таким образом у вас обычно будет много локальных копий хранилища мультимедиа, и вы не сможете легко изменить медиафайл во всех проектах.
На вашем месте я бы, вероятно, выбрал первое или третье решение (символические ссылки или подмодули). Если вы решите использовать подмодули, вы все равно сможете сделать многое, чтобы облегчить себе жизнь:
Перед фиксацией вы можете переименовать каталог подмодулей и поместить символическую ссылку в общий каталог мультимедиа. Когда вы будете готовы к фиксации, вы можете удалить символическую ссылку и удалить подмодуль обратно, а затем зафиксировать.
Вы можете добавить одну из своих копий хранилища мультимедиа в качестве удаленного хранилища для всех своих проектов.
Вы можете добавить локальные каталоги как удаленные следующим образом:
Если вы измените файл в / my / project1 / media, вы можете зафиксировать его и извлечь из / my / project2 / media, не отправляя его на удаленный сервер:
Вы можете удалить эти коммиты позже (с помощью git reset), потому что вы не поделились ими с другими пользователями.
источник
www
папки Apache , вы должны поместить.htaccess
файл в кореньwww
папки или проекта,Options +FollowSymLinks
в котором он находится, или еще лучше<IfModule mod_rewrite.c>{new line}Options +FollowSymLinks{new line}RewriteEngine on{new line}</IfModule>
(заменить{new line}
на новую строку`)У меня были проблемы с поддеревьями и подмодулями, которые предлагают другие ответы ... главным образом потому, что я использую SourceTree, и он кажется довольно глючным.
Вместо этого я использовал SymLinks, и это, кажется, работает хорошо, поэтому я публикую его здесь в качестве возможной альтернативы.
Здесь есть полное руководство: http://www.howtogeek.com/howto/16226/complete-guide-to-symbolic-links-symlinks-on-windows-or-linux/
Но в основном вам просто нужно связать два пути в командной строке с повышенными правами. Убедитесь, что вы используете префикс жесткой ссылки / J. Что-то вроде этого: mklink / JC: \ projects \ MainProject \ plugins C: \ projects \ SomePlugin
Вы также можете использовать относительные пути к папкам и поместить их в список «летучих мышей», которые будут выполняться каждым человеком, когда он впервые проверяет ваш проект.
Пример: mklink / J. \ Assets \ TaqtileTools .. \ TaqtileHoloTools
После того, как папка была связана, вам может понадобиться игнорировать папку в вашем основном репозитории, которая на нее ссылается. В противном случае вы можете пойти.
Примечание. Я удалил свой дубликат ответа из другого поста, поскольку этот пост был помечен как дублирующий вопрос к этому сообщению.
источник