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

OSCHINA-MIRROR/oscstudio-git-analyze

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

Инструмент анализа Git

При использовании пользователями Git в качестве системы контроля версий, могут возникнуть ситуации, когда большие файлы попадают в историю коммитов. Из-за распределённой природы Git и его основы на снимках, размер хранилища может существенно увеличиться. Инструмент git-analyze помогает пользователям выявить, какие коммиты внесли файлы, превышающие заданный объём. Инструмент git-rollback позволяет откатить изменения до указанной точки коммита, сохранив текущее состояние рабочего каталога без изменений, что позволяет пользователям создать новые коммиты.

Контроль сборки

Зависимости Windows:

  • Visual Studio 2019 или более поздняя версия
  • CMake 3.14 или более поздняя версия

Зависимости Unix:

  • GCC 8.3 или более поздняя версия (рекомендуется 9.2)
  • CMake 3.14 или более поздняя версия
git clone https://gitee.com/oscstudio/git-analyze.git

Сборка для Windows:

mkdir build
cd build
cmake -G "NMake Makefiles" -DCMAKE_BUILD_TYPE=Release ..
cpack

Далее откройте установочный пакет. Важно отметить, что Ninja плохо поддерживает возможности cmake ExternalProject, поэтому сборка может завершиться ошибкой.

Сборка для Unix:

mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release .. -DCMAKE_INSTALL_PREFIX=/opt/oscstudio
make
make install

Инструмент анализаКомандная строка git-analyze принимает следующие параметры:

ОБЩИЕ СВЕДЕНИЯ: Инструменты анализа Git
Использование: git-analyze [параметры]... [--] [<pathspec>...] [<refs|branches>...]
ПАРАМЕТРЫ:
  -h [--help]      вывод информации о помощи и выход
  --limitsize      установка ограничения размера анализируемого объекта
  --warnsize       установка предупредительного размера анализируемого объекта
  --timeout        установка времени жизни анализатора
  --who            показ автора коммита
  --all            анализ всех ссылок
```По умолчанию, `git-analyze` сканирует голову текущей ветки в рабочем каталоге. Для сканирования других директорий или веток требуется указывать дополнительные параметры. Директория репозитория может быть корневым рабочим каталогом или боссами репозитория, а имя ветки должно совпадать с именем ссылки или локальной ветки.

git-analyze /путь/к/репозиторию master


Параметры `limitsize` и `warnsize` являются целыми числами, измеряемыми в мегабайтах, значения по умолчанию — 100 МБ и OnClickListener.MOVED 50 МБ соответственно. Параметр `timeout` измеряется в секундах и может не быть установлен. Все эти параметры можно указывать как `--limitsize=100` или `--limitsize 100`.

Параметр `--who` является флагом; если он присутствует в командной строке, то при обнаружении большого файла будет показываться автор коммита и информация о нем. Этот ключ, если включен, будет сканировать все ссылки.

Порядок параметров не имеет значения.

Пример:

![Пример анализа](./docs/images/analyze-001.png)

## Инструмент Rollback

Параметры командной строки `git-rollback`

```sh
Описание: инструменты восстановления Git
Использование: git-rollback [options]... [--] [pathspec]... [refs|branches]...
ОПЦИИ:
  -h, --help        вывод справочной информации и выход
  --git-dir         установка пути репозитория для восстановления
  --backid          установка идентификатора коммита для восстановления
  --backrev         установка текущего количества шагов назад
  --refname         установка имени ссылки для восстановления

Пример использования

git-rollback --git-dir=/путь/к/репозиторию --backid=abc123 --backrev=5 master

Формат параметров аналогичен параметрам git-analyze, ключ --force заставляет выполнить git gc и очистить непотребляемые объекты. Когда путь репозитория (git-dir) не указан, используется текущий каталог; когда имя ссылки (refname) не указано, используется текущий указатель HEAD.

Инструмент Cheat

инструмент git-cheat позволяет создать новый ветвь с одним коммитом на основе текущей ветви. Этот коммит будет иметь ту же информацию о деревьях и метаданных, что и текущая ветвь, но не будет иметь родителей. Один из возможных сценариев использования — это ситуация, когда пользователь чистит проект после создания одного коммита, а затем использует git-cheat для открытия этого коммита.

Формат команды:

git-cheat branch commit-message

Инструмент Pre-Commit

pre-commit является типом хуков Git, который выполняется после того, как пользователь создает коммит с помощью git commit. Если в хранилище есть такие хуки, они будут запущены перед тем, как коммит будет создан. Это помогает избежать случайного добавления больших файлов или двоичных данных в репозиторий, что может привести к ошибкам при попытке отправить изменения на платформу управления версиями. Для активации pre-commit достаточно связать его с .git/hooks/pre-commit, а для настройки можно использовать git config. ```Здесь limitsize ограничивает размер файла, единицы измерения могут быть `К`, `М`, `Г`, регистр не важен. `warnsize` выводит предупреждение, если размер файла превышает половину `limitsize`.А `filters` представляет собой регулярное выражение для фильтрации расширений файлов, обычно такие шаблоны можно найти в интернете. `filterbroken` определяет, следует ли прекратить процесс коммита при наличии фильтрованных файлов. По умолчанию значение равно `false`.

git config commit.limitsize 100M # ограничение размера файла
git config commit.warnsize 50M # предупреждение о большом размере файла
git config commit.filters "\.(exe|obj|pdb)$" # регулярное выражение для фильтрации
git config commit.filterbroken true # завершить коммит при наличии фильтрованных файлов

Инструмент Git Complete

Этот инструмент создает коммиты за весь год.

git-complete dir branch 'сообщение коммита' 2018~2100

Обновление хуков

Хук update является экспериментальным и предназначен для реализации возможности использования git в режиме только для чтения. Дополнительные сведения можно найти в статье Реализация контроля доступа для директорий в Git.

Интеграция с GIT

GIT поддерживает запуск специальных команд в формате git subcommand, например, команда git add эквивалентна git-add. Когда пользователю требуется запустить такие команды напрямую, как git analyze, это можно сделать несколькими способами. Первый метод заключается в добавлении команды git-analyze в переменные окружения, после чего она может быть вызвана напрямую:```bash git analyze . refs/heads/master git rollback --backrev 1


Альтернативно, можно использовать символьные ссылки для привязки команд к системной директории. В POSIX системах или Windows Subsystem for Linux это делается с помощью команды `ln -s`, а в Windows — с помощью `mklink /d`.

## Авторское право

Автор: Force Charlie  
Авторское право © 2020, Gitee.com, Все права защищены.

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

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

Введение

Описание недоступно Развернуть Свернуть
MIT
Отмена

Обновления (2)

все

Участники

все

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

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