Chciałbym sprawdzić kod przypisany do mojego zdalnego repozytorium git za pomocą PHP CodeSniffer i odrzucić go, jeśli są jakieś problemy standardów kodowych. Czy ktoś ma przykład jak go używać na zdalnym repozytorium git lub może np. Jak go używać z hakiem pre-receive? Dzięki.Git pre-receive hook do uruchomienia PHP CodeSniffer
Odpowiedz
Może ten punkt w dobrym kierunku: (Orginal from: http://www.squatlabs.de/versionierung/arbeiten-git-hooks w języku niemieckim)
#!/usr/bin/php
<?php
$output = array();
$rc = 0;
exec('git rev-parse --verify HEAD 2> /dev/null', $output, $rc);
if ($rc == 0) $against = 'HEAD';
else $against = '4b825dc642cb6eb9a060e54bf8d69288fbee4904';
exec('git diff-index --cached --name-only '. $against, $output);
$needle = '/(\.php|\.module|\.install)$/';
$exit_status = 0;
foreach ($output as $file) {
if (!preg_match($needle, $file)) {
// only check php files
continue;
}
$lint_output = array();
$rc = 0;
exec('php -l '. escapeshellarg($file), $lint_output, $rc);
if ($rc == 0) {
continue;
}
# echo implode("\n", $lint_output), "\n";
$exit_status = 1;
}
exit($exit_status);
Będziesz musiał zmodyfikować linię exec exec ('php -l ... punkt do codesniffer . instalacja
Ok znalazłem rozwiązanie :)
jest to dowód kodu koncepcyjnego :) dla wstępnego otrzymać haczyk:
#!/bin/bash
while read old_sha1 new_sha1 refname; do
echo "ns: " $new_sha1;
echo "os: " $old_sha1;
echo "----"
git ls-tree -r $new_sha1 | cut -f 3 -d ' ' | cut -f 1 | while read file; do
git cat-file blob $file
done;
echo "----"
done
exit 1
Ten przykładowy kod wyświetli tylko obiekty typu blob odebrane przez zdalne repozytorium, ale wystarczy, aby ktoś potrzebował czegoś podobnego (mam nadzieję).
można umieścić każdą plamę w jakiejś perspektywie czasowej plików cokolwiek trzeba ten plik usunąć plik i tak dalej ...
dziękuję, to bardzo pomogło –
To jest haczyk przed zatwierdzeniem, który jest zupełnie inny. –
opracowałem wcześniej otrzymane hak git na podstawie PHPCodeSniffer, aby sprawdzić styl kodowania plików PHP, JavaScript i CSS.
Mój skrypt jest dostępny od Github: https://github.com/blueicefield/PHP_CodeSniffer_GIT_Hook
Czy możesz przedłużyć swoją odpowiedź na przykładzie? Jak w przykładzie bash w powyższej odpowiedzi? Czy z samej odpowiedzi jest jasne, jak używać? – hakre
- 1. Git global hook customization
- 2. PowerShell Git Kod Hook Wyjście
- 3. git pre-receive hook odmówił z heroku
- 4. Git Hook post-Receive dla witryny WWW
- 5. pobierz wiadomość zatwierdzenia w git hook
- 6. Błąd Git push pre-receive hook odrzucono
- 7. PHP Codesniffer zwyczaj zasada: stała :: klasa zamiast napisu
- 8. Aktualizacja Xampp do uruchomienia php 7
- 9. Windows Batch Plik do uruchomienia pliku PHP
- 10. Shutdown Hook C++
- 11. Jak mogę ręcznie uruchomić hook-post-receive na git?
- 12. Git hook, gdy tworzony jest nowy oddział i/lub wypychany
- 13. Git przed zatwierdzeniem hook nie działa w systemie Windows
- 14. Git Hook: Podejmij działanie, gdy oddział jest zaawansowany
- 15. codesniffer za pomocą standardowego ignorowania linii gruszki
- 16. Używanie git hook do dodawania licencji i wersji aplikacji do komentowania u góry plików źródłowych
- 17. Hook-up MethodInfo do pola delegata (FieldInfo)
- 18. Logowanie do Meteora - wylogowanie ~ hook/callback
- 19. Hook, aby dodać polecenia do kompilacji distutils?
- 20. ASP.net MVC Validation Hook
- 21. C#: Keyboard Hook
- 22. Dropwizard Shutdown Hook
- 23. W jaki sposób pre-commit git hook uruchamia testy rspec i zapobiega zatwierdzeniu?
- 24. Problem Global Hook Keylogger
- 25. React-Router onChange hook
- 26. Web hook w salesforce?
- 27. Pagedown Editor insertimagedialog hook
- 28. Uruchamianie git pull ze skryptu php
- 29. Duża macierz do uruchomienia glmnet()
- 30. Stosować JPEG do uruchomienia obrazy
niestety nie działa z wcześniej otrzymać hak :( – Ralphz
NOP, musisz utworzyć pre-commit po stronie klienta, ale można śledzić hak, więc każdy program wywołujący będzie musiał pociągnąć za haki. AFAIK, ty serwer nie może przetestować zawartości podczas przesuwania ... :( – FMaz008