Репозиторий кода для особых требований - может ли Git предлагать "небольшие загрузки"?
У меня есть код, который в настоящее время "с открытым исходным кодом", но не легко доступен, так как он не доступен из репозитория. Идея состоит в том, чтобы сделать его доступным через SourceForge или Github, но я хочу использовать любой бесплатный сайт, который отвечает требованиям.
Описание Проекта
Проект состоит из кода во многих модулях (пакеты Java под org.pscode
иерархия) и некоторые зависимости (например, 50 мегабайт кросс-компиляции, 5-10 мегапикселей MP3..). Проект содержит много автономных приложений, таких же разнородных, как компилятор кросс-компиляции, предназначенных для разработчиков, и музыкальный автомат для конечных пользователей. Но есть и отдельные классы (такие как BigClip
которые могут содержать большой аудиоклип), которые полезны в других приложениях, которые не относятся к самому проекту. В то время как некоторые из пакетов являются "самодостаточными" (например, JaNeLA), другие являются компонентами, используемыми в ряде существующих приложений.
Весь проект, существующий на моей машине, уже выдвигает 200 Мег.
Как разработчик, который хотел сыграть длинный клип, я не решался бы загрузить более 200 мегабайт проекта, чтобы получить класс, код которого достаточно короткий для публикации на SO.
Требования к хранилищу кода
- Система хранения / обмена кодами, которая позволяет пользователю загружать только те части, которые ему необходимы.
- Если он состоит из множества отдельных частей основного проекта, они загружаются автоматически.
- Предоставьте автоматический способ рассчитать (для отображения пользователю), сколько загрузки требуется для каждого "подпроекта". Хорошо, это не требование, которое "сделает или сломает" мой выбор, но это было бы очень удобно.
Я смотрел на Git, так как у него, похоже, было много достижений по сравнению со старыми формами CVS, и читал Git для пользователей Eclipse и дошел до пункта 3 Распределенных систем контроля версий, который начинается..
Учитывая, что нет главного репозитория, становится ясно, что репозиторий должен полностью жить на каждом из узлов в DVCS. ..
Это беспокоит меня, но я не уверен, что полностью понимаю это, или есть ли в Git другой механизм для обеспечения требуемого поведения.
Вопросы)
Может ли Git выполнить требования, указанные выше?
С другой стороны, это "не вопрос" для большинства разработчиков? Если люди обычно скачивают 200 мегабайт проекта, чтобы получить 3 Кбайт кода для анализа файла значений, разделенных запятыми, то, возможно, я ни о чем не беспокоюсь.
2 ответа
Вы можете использовать подмодули git. Подмодуль в репозитории git - это ссылка на другой репозиторий git. Обычно, когда вы клонируете git-репозиторий, вы должны копировать все. Однако, субмодули - это способ разделить большой проект на множество отдельных репозиториев.
Однако обратите внимание, что подмодуль должен находиться в отдельном подкаталоге, поэтому, если у вас есть исходный код, который вы хотите в отдельных подмодулях, вам может понадобиться переместить их и, возможно, изменить ссылки.
Когда вы клонируете основной проект, он не будет автоматически загружать все подмодули. Вам нужно указать, что вы хотите вытащить все подмодули вручную. Тем не менее, можно быстро загрузить все подмодули, для более подробной информации:
Это действительно невозможно с Git. Хотя, если вы размещаете свой код в Git-репозитории, таком как github, пользователи могут просматривать ваши файлы и загружать те файлы, которые они считают необходимыми. Смотрите Git против Subversion:
Git требует, чтобы вы клонировали весь репозиторий (включая историю) и создали рабочую копию, которая отражает по крайней мере подмножество элементов под контролем версий
Хотя функция субмодуля Git может помочь с этой проблемой, вы должны управлять несколькими репозиториями и обеспечивать координацию между ними. Это может быть несколько грязно, если вы все еще в основном в разработке, и может потребовать некоторого рефакторинга.