4

Можно ли подключить все способы создания git-репо? Поэтому я могу запустить скрипт, когда репо клонируется, инициализируется ... (есть ли другие способы, кроме перемещения / копирования папки?).

Мое намерение состоит в том, чтобы отслеживать все репозитории, поэтому мне не нужно проходить через все директории, чтобы выполнить какое-либо действие (в основном это git status поскольку я иногда забываю зафиксировать изменения и git gc --auto).

2 ответа2

5

Хуки (в настоящее время) настроены исключительно для каждого репозитория, поэтому до создания репозитория не может быть активных хуков.

Если вы просто хотите инициализировать некоторые специфичные для репозитория настройки одинаково для всех новых репозиториев, вы можете использовать механизм шаблонов репозитория.

Используя свой собственный шаблон, вы можете

  • установить активированные хуки (предоставив файл <template‑dir>/hooks/<hook‑name> ),
  • установить переменные конфигурации (предоставив файл <template‑dir>/config ) и
  • настроить правила или атрибуты для каждого репозитория (предоставив файл <template‑dir>/info/exclude или <template‑dir/info/attributes> ).

Любой файл конфигурации, который находится в каталоге .git может быть помещен в шаблон, чтобы служить начальной копией этого файла в новых хранилищах, инициализированных из шаблона. Я полагаю, вы могли бы даже предоставить начальные объекты и ссылки.

После того, как вы создали каталог шаблонов с вашими настройками, вы должны указать git init и git clone где его найти. Это можно сделать явно с опцией --template (Git 0.99.4 или новее) или неявно с переменной среды GIT_TEMPLATE_DIR (Git 1.5.0 или новее), или неявно, установив переменную конфигурации init.templatedir в «global »(Для пользователя) или« системные »файлы конфигурации Git (то есть ~/.gitconfig или /etc/gitconfig (зависит от установки); Git 1.7.1 или более поздняя версия ).

0

Вы не можете "отслеживать" git-репо (как в «запросить какой-то центральный референс» список активных в данный момент git-репо).
Каждое git репо не зависит от другого.

Можно рассмотреть два решения:

  • шаблон git, как в ответе Криса, с одним из клиентских хуков, способных при первом использовании зарегистрировать git-репо в каком-то "центральном" файле.
    Затем этот файл будет прочитан внешним сценарием (внешним по отношению к git), чтобы получить соответствующий git status git или git gc который вы хотите.

  • если все ваши git-репозитории объявлены в одном и том же общем каталоге, вы можете объявить глобальное родительское git-репо и добавить все суб-репо как подмодули.
    Начиная с git1.7.0, git status знает, когда подмодуль содержит незафиксированные изменения.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .