Исключение нулевого указателя генерируется, когда приложение пытается использовать null в случае, когда требуется объект. К ним относятся:
null
. null
. null
, как если бы это был массив. null
, как если бы это был массив. null
как будто это было значение Throwable. Приложения должны бросать экземпляры этого класса, чтобы указать на другие незаконные использования объекта null
.
Ссылка: http://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html
Здесь - пример использования Python для хука. Вообще хуки не зависят от языка. Вы используете скрипт для выполнения какой-либо работы или для выхода с кодом возврата 0 / other для изменения потока процесса git.
Я обнаружил, что на python легко написать git hook. Это пример хука после получения на питоне. Приведенный пример разворачивает основную ветку и развивает ветки в разных папках (изменения в главном устройстве будут отправлены на производственный веб-сайт, а изменения в ветке разработки будут перенесены на qa-сайт)
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
#post-receive
import sys
import subprocess
# 1. Read STDIN (Format: "from_commit to_commit branch_name")
(old, new, branch) = sys.stdin.read().split()
# 2. Only deploy if master branch was pushed
if branch == 'refs/heads/master':
subprocess.call('date >> ~/prod-deployment.log', shell=True)
subprocess.call('GIT_WORK_TREE=/home/ft/app.prod git checkout master -f', shell=True)
subprocess.call('cd ../../app.prod;bower update', shell=True)
#3. Only deploy if develop branch was pushed
if branch == 'refs/heads/develop':
subprocess.call('date >> ~/dev-deployment.log', shell=True)
subprocess.call('GIT_WORK_TREE=/home/ft/app.dev git checkout develop -f', shell=True)
subprocess.call('cd ../../app.dev;bower update', shell=True)
Примеры, которые идут с git, написаны в сценарии оболочки; в .git/hooks
каждого репо есть несколько базовых и более продвинутые в /usr/share/doc/git-core/contrib/hooks
.
Также есть больше информации о различных хуках, доступных через $ man githooks
.