Введение
Git repo-clean — это расширение Git, разработанное на Golang. Оно предназначено для сканирования, очистки и перезаписи истории коммитов в репозиториях Git.
Зависимости:
Установка
Есть два способа установки:
Установите среду разработки Golang версии 1.15 или выше. Для этого перейдите на сайт https://docs.studygolang.com/doc/install.
Клонируйте репозиторий с исходным кодом: git clone https://gitee.com/oschina/git-repo-clean.
Перейдите в каталог с исходным кодом и скомпилируйте программу: make.
Если при компиляции возникает ошибка i/o timeout, попробуйте использовать прокси-сервер: go env -w GOPROXY=https://goproxy.cn,direct.
Для Linux: скопируйте исполняемый файл git-repo-clean в папку с утилитами Git: sudo cp git-repo-clean $(git --exec-path).
Для Windows: есть три способа установить программу. Первый способ — добавить путь к исполняемому файлу в переменную PATH. Второй способ — скопировать исполняемый файл в папку с утилитами Git. Третий способ — скопировать файл в системную папку C:\Windows\system32. Этот способ не рекомендуется, так как он может привести к ошибкам в работе системы.
Для Mac OS: после настройки программы может потребоваться предоставить ей права на выполнение. Для этого откройте «Системные настройки», перейдите в раздел «Безопасность и конфиденциальность», нажмите Allow Anyway.
После установки программы выполните команду git repo-clean --version, чтобы убедиться, что установка прошла успешно.
Использование
Программа может использоваться двумя способами: через командную строку и в интерактивном режиме.
Доступные опции:
В интерактивном режиме программа запускается без дополнительных параметров. По умолчанию доступны опции --scan, --delete и --verbose. Чтобы использовать другие опции, например --branch, добавьте опцию -i [--interactive].
В режиме командной строки можно использовать несколько опций одновременно. Например:
Если вы знаете, какие файлы хотите удалить, можно пропустить этап сканирования и указать конкретные файлы или каталоги с помощью опции --file. Например: git repo-clean --verbose --file file1 --file dir/ --delete.
Также можно указать порог размера файлов, которые будут удалены. Например: git repo-clean --verbose --limit=1G --delete. В этом случае опция --number не имеет смысла, и по умолчанию используется значение UINT_MAX.
Обратите внимание, что по умолчанию программа сканирует и удаляет файлы во всех ветках. Опция --branch указывает только ветку для удаления, но не для сканирования. Поэтому если вы используете эту опцию, программа может выбрать файлы из другой ветки.
С версии v1.3.0 программа поддерживает преобразование больших файлов в указатели Git Large File Storage (LFS). Если у вас есть доступ к этой функции, вы можете перенести большие файлы на сервер LFS и хранить их отдельно от основного репозитория Git. Для этого после сканирования файлов установите локально инструмент git lfs и используйте его для управления указателями LFS. --limit=100M --type=so --delete --lfs Эта команда преобразует файлы .so размером более 100 МБ в репозитории в указатели LFS размером не более 200 байт, что значительно экономит место в хранилище.
В настоящее время основное внимание уделяется самим файлам, поэтому при сканировании учитываются только объекты типа blob.
Начиная с Git 2.32.0, git-rev-list имеет опцию --filter = object: type, которая позволяет фильтровать определённые типы при сканировании, ускоряя процесс. Рассмотрите возможность использования более новой версии Git в будущем.
Отдельные параметры --branch, --scan, --verbose, --delete не действуют, их необходимо использовать в сочетании с другими параметрами.
Q: При использовании git Bash на Windows для запуска программного обеспечения, такого как git repo-clean --version, вывод отображается в виде искажённых символов. A: Вероятно, это проблема локализации терминала. Проверьте конфигурацию терминала: в контекстном меню git Bash выберите «Параметры» и перейдите к разделу «Текст». Выберите «zh_CN» в раскрывающемся списке «Локаль» и «UTF-8 (Unicode)» в разделе «Набор символов». Если после успешной настройки вывод по-прежнему искажён, рекомендуется использовать PowerShell.
Q: Интерактивный модуль Win10 не запускается, см. issue. A: В некоторых терминалах Windows, таких как git bash (Mingw64), действительно может возникать эта проблема, связанная с использованием сторонней библиотеки survey. Решение состоит в использовании другого терминала, такого как Command Prompt или Windows PowerShell.
Q: Удаление не удалось. После удаления файлов с помощью git repo-clean повторное сканирование показывает, что файлы всё ещё присутствуют. A: Возможно, один и тот же файл существует в нескольких версиях истории, и они имеют разные идентификаторы файлов при сканировании. По умолчанию отображаются и удаляются только первые три файла. Поэтому, если один и тот же файл присутствует в нескольких версиях, первая операция удаляет только три из них, а вторая операция сканирования отображает другие три версии. Кроме того, файл может существовать в других ветках, и текущее сканирование является полным сканированием всех веток, но удаление ограничено текущей веткой. Если вы обнаружите, что удалённые файлы всё ещё существуют, можно выполнить полное удаление всех веток.
Q: После удаления файлы по-прежнему не удаётся отправить. A: Во время отправки вычисляется общий размер сервера репозитория и добавляется к размеру локального репозитория. Если общая сумма превышает лимит, отправка будет отклонена. Рекомендуется очистить локальные файлы перед попыткой отправки. Если серверный репозиторий уже превысил лимит, выполните ручную операцию GC через веб-интерфейс. Если размер репозитория по-прежнему превышает лимит, обратитесь в службу поддержки.
Q: Файлы не удаляются. Используется команда git repo-clean --file build/ --delete для удаления указанного каталога, но файлы остаются. A: Если появляется сообщение «Нет изменений в файле, выход...», это означает, что каталог build находится в рабочем каталоге, но не добавлен в репозиторий Git. Вы можете проверить содержимое файла .gitignore для подтверждения. В других случаях попробуйте повторно запустить команду.
См. docs/technical.md
Если у вас есть какие-либо вопросы, вы можете создать issue для обсуждения. Или, если у вас есть хорошие идеи для улучшения или новые функции, вы можете отправить PR. Процесс следующий:
Git repo-clean лицензирован под Mulan PSL v2.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )