2013-06-14 3 views
2

Я управляю своим личным небольшим сайтом через git, больше как опыт обучения, чем для каких-либо реальных преимуществ при этом. Мой рабочий, как правило:Зависимости от git

  1. Вносите изменения на моем рабочем столе
  2. Тестовый файл: /// путь/к/папке в моем браузере, а также добавлять/фиксация/изменение в соответствующих случаях
  3. Когда я счастливый, толкать происхождению, который я настроил, чтобы быть экземпляром EC2, где после совершения крюка обновляет рабочему дерево

Я хочу использовать MathJax для отображения математики уравнения на моем сайте, но Папка MathJax - 128 Мб, а t остальная часть моего проекта почти не содержит 1 Мб. Кроме того, MathJax/содержит много маленьких файлов, и (поскольку он вошел в мое рабочее дерево) операции, такие как git add и git status, выполняются очень медленно - я предполагаю, что git должен проверять каждый из файлов отдельно для статуса.

Я искушаю git reset --hard коммиту перед добавлением MathJax /, исключаю папку MathJax из моего git repo (.gitignore) и просто добавляю его на свой веб-сервер вручную на том основании, что я не буду меняться MathJax регулярно, и добавление его к репо, кажется, добавляет значительные накладные расходы для других быстрых операций. Опять же, это означает, что мое репо не является самодостаточной сущностью, что кажется концептуально неправильным - я знаю, как я разочаровался, когда загружаю вкусный новый скрипт или услугу, а затем мне нужно выследить пятнадцать зависимостей до этого будет работать.

Очевидно, что никто другой не будет работать над этим конкретным репо, но тем не менее я хотел бы получить хорошие привычки. Какова наилучшая практика в такой ситуации? Должны ли быть включены большие зависимости в репо? Если нет, то каков наилучший способ их обращения - README.md?

+2

Это звучит как случай учебника для [подмодуля] (http://git-scm.com/book/en/Git-Tools-Submodules). – 1615903

+0

Вы абсолютно правы - спасибо за то, что привлекли эту функциональность к моему вниманию, я никогда не слышал об этом раньше! Если вы будете так любезны представить его в качестве ответа, я соглашусь с ним. – scubbo

ответ

3

Цитируя GIT книга:

Часто бывает так, что во время работы над одним проектом, вам нужно использовать другой проект внутри него. Возможно, это библиотека, которая разработала третью вечеринку или что вы разрабатываете отдельно и используете в проектах несколько родительских проектов. В этих сценариях возникает общая проблема: вы хотите иметь возможность рассматривать два проекта как отдельные, но все же быть , способными использовать один из другого.

Вам необходимо использовать функцию git, называемую подмодулями. Это репозиторий git внутри другого репозитория git. Подробности см. На странице Git book или man pages.

Другой вариант - поддерево git (не путать с слиянием поддерева). Он доступен в версиях git 1.7.11 и новее. Хорошее сообщение в блоге, описывающее использование поддерева здесь: https://blogs.atlassian.com/2013/05/alternatives-to-git-submodule-git-subtree/

+0

Спасибо! Очень полезно. – scubbo

Смежные вопросы