Вопрос или проблема
Unison может игнорировать .git
каталоги вполне нормально,
Ignore = Name .git
но мне бы хотелось, чтобы он игнорировал весь репозиторий (предпочитая вместо этого использовать git для синхронизации всего между машинами). Например, если у меня есть
MyProject/
.git
Makefile
README.md
src/
test/
Я хотел бы, чтобы Unison игнорировал весь каталог MyProject
, поскольку он содержит подкаталог .git
. Я пробовал
Ignore = Name */.git
но это все равно игнорирует только сам каталог .git
. Есть ли правило, которое исключит родительский каталог на основе его содержимого?
Ответ или решение
Чтобы сделать так, чтобы Unison игнорировал целые репозитории Git, вы можете воспользоваться параметрами конфигурации. К сожалению, Unison не поддерживает изначально механизм, позволяющий игнорировать родительские директории на основе наличия определённых поддиректорий, таких как .git
. Однако, есть способ добиться желаемого поведения с помощью шаблона игнорирования.
Ваш файл конфигурации Unison должен содержать правила игнорирования для вашего проекта. Если вы хотите игнорировать весь каталог проекта, который содержит .git
, вы можете использовать следующее правило:
ignore = Name MyProject/.git
ignore = Path MyProject
Это правило игнорирует директорию MyProject
, когда она содержит .git
. Однако, если структура каталогов может быть более сложной, вам, возможно, потребуется добавить дополнительные правила.
Если необходимо применить это ко всем проектам, стоит использовать более общее правило, которое проверяет на наличие .git
в любом из подкаталогов и игнорирует родительский каталог. Вы можете использовать следующий подход:
- В корневом файле конфигурации Unison (например,
default.prf
) добавьте следующее:
ignore = Name .git
ignore = Path */.git
ignore = Path MyProject
- Если вы используете несколько репозиториев и хотите применить это правило ко всем проектам, можете создать общую конфигурацию:
ignore = Name .git
ignore = Path */ # Это правило будет игнорировать директории, содержащие .git
Обратите внимание, что использование правила ignore = Path */
будет игнорировать все подкаталоги, которые не хотите синхронизировать, поэтому убедитесь, что это соответствует вашим целям синхронизации.
Но в общем случае, хорошей практикой будет размещение понятных и специфичных правил в вашем конфигурационном файле, чтобы избежать непреднамеренного исключения необходимых каталогов из синхронизации.
Если у вас возникнут дополнительные вопросы или сложные ситуации, вы можете изучить документацию Unison для получения более детальной информации о синтаксисе правил игнорирования или задать вопрос сообществу.