1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mirrors-git-subcopy

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Включение отдельных файлов или каталогов из больших репозиториев git.

Подумайте об этом как о плохом клоне git subtree, но с возможностью вручную выбирать то, что вам нужно.

Как это работает

Вы можете добавить подкопию в свой репозиторий аналогично тому, как вы можете добавить поддерево:

git subcopy add <source url> <rev> <source file> <dest file>

Любой исходный файл в репозитории можно включить и сопоставить с любым целевым файлом. То же самое касается каталогов.

Это буквально клонирует голую версию репозитория временно во временную папку, а затем извлекает выбранный вами путь. После этого он сохраняет вашу конфигурацию в файл .gitcopies, аналогичный файлу .gitmodules. Основная причина этого — отслеживать исходную ревизию, чтобы позже перебазировать ваши изменения. Вы можете пропустить этот шаг, заменив add на fetch.

После того как вы внесли изменения в скопированный файл, вы можете захотеть проверить разницу или запустить любую другую произвольную команду git поверх него.

git subcopy shell <source file>

повторно клонирует соответствующую конфигурацию из вашего файла .gitcopies и добавляет ваши изменения как неустановленные. Это позволяет вам запустить git diff, и любые внесённые вами изменения будут переданы обратно в исходный репозиторий. Однако проверенная версия не будет обновляться. Поэтому для перебазирования используйте следующую команду.

git subcopy rebase <source file> <new revision>

аналогично поместит вас в оболочку с применёнными изменениями, но на этот раз они зафиксированы и запущена перебазировка. Продолжайте перебазирование с помощью git rebase --continue, устраните все возникающие конфликты, повторите попытку до успеха. Стандартный материал git. После того, как вы закончите и выйдете из оболочки, все ваши изменения копируются обратно, и ваша новая базовая ревизия сохраняется в файле .gitcopies.

Почему это существует

Выберите свой яд:

  • Я ненавижу монорепозитории! => Я лично их не очень люблю, и это хорошая причина. Иногда вы просто хотите изменить один компонент чего-либо, и не иметь субмодуля, связывающего весь репозиторий для всех, кто создаёт ваш код для загрузки. Это позволит вам копировать отдельные компоненты из монорепозитория, или, если вы действительно хотите следовать философии unix, сделать отдельный репозиторий из компонентов, которые вам нужны, и затем подмодулировать их.
  • Мне нравятся монорепозитории! => Отлично! Этот инструмент позволит вам выборочно включать код в ваш репозиторий, при этом не делая его слишком раздутым. Вам не придётся делать более одного репозитория, даже если вы хотите разветвить какой-нибудь внешний проект, и вашим пользователям не придётся загружать какие-либо субмодули.
  • У меня нет мнения о монорепозиториях => Тем не менее, этот инструмент довольно крут, и вы должны попробовать его просто потому, что :)

Состояние проекта

Этот инструмент определённо не стабилен, интерфейс библиотеки и интерфейс CLI немного сложны. В целом, считайте это либо альфа-инструментом, либо просто доказательством концепции. Хорошая новость заключается в том, что, поскольку весь код копируется и проверяется в git, вам никогда не придётся беспокоиться о потере данных. Вы сможете заменить этот инструмент другим позже, если он будет заменён, так как все данные, такие как ваша базовая ревизия, находятся прямо здесь в виде обычного текста.

Использование

Вот пример скринкаста, где я возился с инструментом через несколько минут после завершения первоначальной версии:

asciicast

Установка

Я рекомендую устанавливать этот проект (или любой другой!) с помощью менеджера пакетов Nix. Он автоматически получит все собственные зависимости, поэтому вам нужно только выполнить следующее.

nix-env -if https://gitlab.com/jD91mZM2/git-subcopy/-/archive/master.tar.gz

В качестве альтернативы вы можете вручную убедиться, что у вас установлены rust, компилятор C и openssl, а затем использовать менеджер пакетов cargo для получения этого проекта.

cargo install git-subcopy

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Способ включения отдельных файлов или каталогов из больших репозиториев git. Считайте это упрощённым аналогом команды git subtree, но с возможностью самостоятельно выбирать нужные элементы. Развернуть Свернуть
MIT
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/mirrors-git-subcopy.git
git@api.gitlife.ru:oschina-mirror/mirrors-git-subcopy.git
oschina-mirror
mirrors-git-subcopy
mirrors-git-subcopy
master