나는 git Hooks 세트를 가지고 있다계속해서실행 가능 플래그를 제거하십시오. 나는 그것이 무엇을 할 수 있을지 전혀 모르지만, 지금까지 문제를 어느 정도 완화할 수 있는 유일한 방법은 chmod +x ~/.git_template/hooks/*
내 .bashrc
파일에 있다는 것입니다(컴퓨터를 다시 시작하면 거의 항상 사라집니다). 이것을 내 기능에 넣는 것 외에는 아이디어가 부족 PS1
하고 내 특정 설정과 관련된 것이 이 문제를 일으키는지 또는 어떤 프로세스가 이 문제를 일으키는지 알아낼 수 있는 방법이 있는지 궁금합니다.
내 모든 git 저장소는 내가 사용하는 후크 디렉토리에 대한 심볼릭 링크만 포함하는 템플릿을 기반으로 생성됩니다 ~/.git_template
(그래서 모두 최신 버전을 사용합니다). 완전히 간단하지는 않을 수도 있지만 (솔직히) 혼란스러운 동작을 유발할 수 있는 내용은 없습니다.
편집: 실제로 새 후크( post-checkout
)를 추가한 이후 모든 후크에 대한 실행 권한이 제거된 것을 확인했습니다.매번후크가 실행됩니다(적어도 지금까지는). 이것이 관련될 수 있는 경우를 대비하여 여기에 전체 git 후크를 붙여넣겠습니다.
#!/usr/bin/env node
var spawn = require('child_process').spawn;
var providedArguments = process.argv.slice(2)
var previousHead = providedArguments[0];
var newHead = providedArguments[1];
var changed = false;
var git = spawn('git', ['diff', previousHead, newHead, '--stat', '--', 'package.json']);
git.stdout.on('data', function(data) {
changed = true;
});
git.on('exit', function() {
if (changed) {
console.log('package.json changed. Running npm install');
spawn('npm', ['install'], { stdio: 'inherit' });
}
});
답변1
Linux가 아닌 경우(예: Solaris, HP/UX, OS/X...) strace -fo strace.log
시스템에서 또는 이에 상응하는 명령을 실행하여 (결국) 후크를 호출합니다.truss
tusc
dtruss
그런 다음 에서 (또는 또는 ...)이 수행하는 작업을 strace.log
확인 하고 s의 단서를 따라 파일 권한이 수정된 원인을 확인할 수 있습니다.chmod()
fchmod()
fchmodat()
execve()