Это задавали много раз, и я прошел через бесчисленные потоки и страницы Google, но никто, похоже, не смог исправить мою проблему. Возможно, я не делаю это стандартным способом, но он все равно должен работать.Крючок-приемник GIT не запускается
У меня есть удаленный сервер, который имеет Git репо
я нажимаю на него из локально через SSH:
git add Y:\NetBeansProjects\pics\pics-client-branding\src\main\java\com\waudware\pics\viewer\TypeTopComponent.java
git commit -m Testing GIT Friday 8 Y:\NetBeansProjects\pics\pics-client-branding\src\main\java\com\waudware\pics\viewer\TypeTopComponent.java
Commit Log
revision : b2d7fd5cbafbfddfccf8d3c8ac75614c4b357887
author : Denis <[email protected]>
date : Jun 21, 2013 3:21:47 PM
summary : Testing GIT Friday 8
INFO: End of Commit
==[IDE]== Jun 21, 2013 3:21:48 PM Committing... finished.
==[IDE]== Jun 21, 2013 3:21:52 PM Pushing
git push ssh://wwbert/cygdrive/d/Shared_Data/Development/dev_NetBeans/Projects/PICS.git +refs/heads/master:refs/heads/master
Remote Repository Updates
Branch : master
Old Id : e51af3dbc01ee2372f9c92bb8070cb1100bef220
New Id : b2d7fd5cbafbfddfccf8d3c8ac75614c4b357887
Result : OK
Local Repository Updates
Branch : origin/master
Old Id : e51af3dbc01ee2372f9c92bb8070cb1100bef220
New Id : b2d7fd5cbafbfddfccf8d3c8ac75614c4b357887
Result : FAST_FORWARD
==[IDE]== Jun 21, 2013 3:21:56 PM Pushing finished.
Принудительные работает отлично и удаленный репозиторий обновляется. Я могу легко проверить, что с помощью шпатлевки и бега git show
. Тем не менее, крюк post-receive, который я написал, не запускается. Удаленная папка проекта git: wwbert/cygdrive/d/Shared_Data/Development/dev_NetBeans/Projects/PICS.git и крючок находится в wwbert/cygdrive/d/Shared_Data/Development/dev_NetBeans/Projects/PICS.git/hooks/post -Получить
содержание после приема являются:
#!bin/sh
touch worked.txt
SMTPSERVER=10.0.0.2
[email protected]
[email protected]
SUBJECT="Subject: GIT [commit] $(date +"%m-%d-%Y")"
LOGFILE="commit-$(date +"%m-%d-%Y").log"
DIFF=1
SHORTLOG=1
echo "$SUBJECT" > ../logs/"$LOGFILE"
echo >> ../logs/"$LOGFILE"
git log --since=yesterday >> ../logs/"$LOGFILE"
if [ "$DIFF" == "1" ]; then
git show --pretty >> ../logs/"$LOGFILE"
fi
git send-email --smtp-server "$SMTPSERVER" --to "$TO" --from "$FROM" ../logs/"$LOGFILE"
я должен отметить, что выполнение этого файла вручную отправляет электронную почту, как и ожидалось. Но никогда не запускается как крючок. Даже не touch
. Любые намеки на то, что вы думаете, причина этого может быть оценена!
P.S. ls -la
на крючках папку:
WAUDWARE\[email protected] /cygdrive/d/Shared_Data/Development/dev_NetBeans/Projects/pics.git/hooks
$ ls -la
total 38
drwxr-x--- 1 WAUDWARE\denis WAUDWARE\12513 4096 2013-06-21 15:20 .
drwxr-x--- 1 WAUDWARE\denis WAUDWARE\12513 4096 2013-06-21 14:48 ..
-rwxr-x--- 1 WAUDWARE\denis WAUDWARE\12513 452 2013-04-23 10:02 applypatch-msg.sample
-rwxr-x--- 1 WAUDWARE\denis WAUDWARE\12513 896 2013-04-23 10:02 commit-msg.sample
-rwxr-x--- 1 WAUDWARE\denis WAUDWARE\12513 160 2013-04-23 10:02 post-commit.sample
-rwxr-x--- 1 WAUDWARE\denis WAUDWARE\12513 514 2013-06-21 16:08 post-receive
-rwxr-x--- 1 WAUDWARE\denis WAUDWARE\12513 552 2013-04-23 10:02 post-receive.sample
-rwxr-x--- 1 WAUDWARE\denis WAUDWARE\12513 189 2013-04-23 10:02 post-update.sample
-rwxr-x--- 1 WAUDWARE\denis WAUDWARE\12513 398 2013-04-23 10:02 pre-applypatch.sample
-rwxr-x--- 1 WAUDWARE\denis WAUDWARE\12513 1578 2013-04-23 10:02 pre-commit.sample
-rwxr-x--- 1 WAUDWARE\denis WAUDWARE\12513 4951 2013-04-23 10:02 pre-rebase.sample
-rwxr-x--- 1 WAUDWARE\denis WAUDWARE\12513 1239 2013-04-23 10:02 prepare-commit-msg.sample
-rwxr-x--- 1 WAUDWARE\denis WAUDWARE\12513 3611 2013-04-23 10:02 update.sample
Edit: я был прогресс. Вместо того, чтобы выталкивать из среды IDE NetBeans, я использовал Git GUI, чтобы увидеть более подробный вывод. Вот что произошло, когда я нажал на пульт: remote: fatal: cannot exec 'hooks/post-receive': Permission denied[K To ssh://WAUDWARE\[email protected]/cygdrive/d/Shared_Data/Development/dev_NetBeans/Projects/PICS.git ab6ddef..a5644e8 master -> master
. Вы можете видеть мои разрешения в сообщении. Что-то не так с ними? Существуют ли другие разрешения, которые могут препятствовать выполнению post-receive?
Учитывая, что крючки выполняются в корневом каталоге репо (http://stackoverflow.com/a/11655420/6309), вы уверены, что ищете файл 'work.txt' в правой части место, и что '' ../ logs' 'относится к правильному каталогу? – VonC
@ VonC post-receive находится в папке pics.git/hooks; однако 'touch work.txt', похоже, не отображается ни в каталоге pics.git, ни в pics.git/hooks/= (каталог журналов находится в pics.git/logs /. Из того, что вы сказали, кажется, что post-receive будет запускаться, как если бы из pics.git, поэтому мне не нужно подниматься на уровень? –
@VonC Просто попытался изменить мои '../ logs /' только на 'logs', как если бы он запускался из pics.git dir, тем не менее, все еще не повезло. Скрипт по-прежнему работает, если выполняется как «sh hooks/post-receive», но не при нажатии с локального на удаленный:/ –