Весь смысл неотслеживаемого файла в том, что Git ничего о нем не знает. Git поэтому не может знать удалить это либо.
Git предоставляет общий механизм, позволяющий вам запускать свои собственные операции после каждого git checkout
, а именно то, что он называет ловушкой после проверки . (Соблюдает ли ваша Eclipse IDE этот же протокол, я понятия не имею.) Хук после проверки - это просто любой исполняемый файл 1 с именем .git/hooks/post-checkout
. Git запустит его с некоторыми аргументами, как описано в документации githooks , после каждого git checkout
.
Поскольку git checkout
можно использовать для операций, которые не изменяют имя ветви, к которой прикреплен HEAD
, вам необходимо будет проверить, какие условия вы считаете подходящими , Например, вы можете проверить третий параметр, который называется flag
в документации. Если он установлен, команда была операцией, которая изменила имя коммита или ветки, к которому привязано HEAD
. Если HEAD
теперь связан с коммитом или веткой, в которой некоторые *.min.js
файлы должны быть удалены, если они существуют, теперь вы можете удалить их, если они существуют. Если HEAD
теперь привязан к коммиту или ветви, в которой должны быть созданы некоторые файлы *.min.js
, если они не существуют, теперь вы можете создать их, если они не существуют.
Такой скрипт может выглядеть так, хотя вам нужно будет заполнить недостающие части:
#! /bin/sh
# Post-checkout hook to deal with `*.min.js` files.
# If flag is not 1, do nothing (and succeed).
if [ "$3" != 1 ]; then exit 0; fi
# Otherwise, determine whether there are *.min.js files that need to
# be created and/or removed. The code below is meant to be illustrative,
# not efficient.
for file in $(compute files that should be removed); do rm -f "$file"; done
for file in $(compute files that should be created); do create_minified "$file"; done
exit 0 # always report success, regardless of actual success
Эта последняя строка важна: в документации Git утверждается, что хук после проверки не может повлиять на результат git checkout
, но на самом деле статус выхода из хука после проверки устанавливает статус выхода самой git checkout
. , Если ваша ловушка после оформления заказа сообщает о состоянии отказа, git checkout
сообщит о состоянии отказа, что может ввести в заблуждение более крупные автоматизированные системы. Это может быть хорошо или плохо, в зависимости от вашей точки зрения, поэтому, хотя последняя строка важна , она не обязательно правильна для вашего конкретного приложения.
1 исполняемый файл , здесь должен быть фактически исполняемым . То есть ему нужно не только установить бит x
(в Unix-подобной системе используйте chmod +x
или chmod 755
или аналогичный для установки исполняемых битов), он должен быть непосредственно исполняемым через execve
системный вызов . Для сценариев в Unix-подобных системах это означает, что сценарий должен начинаться со строки, такой как #! /bin/sh
или #! /usr/bin/env bash
, где имя пути после #!
- это имя пути интерпретатора. Сценарии Python могут быть сделаны исполняемыми через #! /usr/bin/env python
или #! /usr/bin/env python3.6
или тому подобное, в зависимости от того, какой интерпретатор Python вам нужно вызывать.