Включение отдельных файлов или каталогов из больших репозиториев 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
.
Почему это существует
Выберите свой яд:
Состояние проекта
Этот инструмент определённо не стабилен, интерфейс библиотеки и интерфейс CLI немного сложны. В целом, считайте это либо альфа-инструментом, либо просто доказательством концепции. Хорошая новость заключается в том, что, поскольку весь код копируется и проверяется в git, вам никогда не придётся беспокоиться о потере данных. Вы сможете заменить этот инструмент другим позже, если он будет заменён, так как все данные, такие как ваша базовая ревизия, находятся прямо здесь в виде обычного текста.
Использование
Вот пример скринкаста, где я возился с инструментом через несколько минут после завершения первоначальной версии:
Установка
Я рекомендую устанавливать этот проект (или любой другой!) с помощью менеджера пакетов Nix. Он автоматически получит все собственные зависимости, поэтому вам нужно только выполнить следующее.
nix-env -if https://gitlab.com/jD91mZM2/git-subcopy/-/archive/master.tar.gz
В качестве альтернативы вы можете вручную убедиться, что у вас установлены rust, компилятор C и openssl, а затем использовать менеджер пакетов cargo для получения этого проекта.
cargo install git-subcopy
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )