El gancho post-recepción de Git está agregando cambios de forma inconsistente

Intento escribir un gancho de post-recepción que atraerá todas las twigs nuevas a una count de bitbucket. Luego, si la persona que presionó esos cambios es un usuario designado de un sitio de desarrollo en particular, la sucursal debería ser verificada automáticamente.

Este es el código:

 $payload = stripslashes(($_POST['payload']) ? $_POST['payload'] : $_GET['payload']); $obj = json_decode($payload); $commits = $obj->commits; $head_commit = $commits[0]; for ($i=0; $i<sizeof($commits); $i++) { $commit = $commits[$i]; $head_date = strtotime($head_commit->timestamp); $comm_date = strtotime($commit->timestamp); if ($comm_date > $head_date) { $head_commit = $commit; } } $branch = $head_commit->branch; $author = $head_commit->raw_author; $msgs = array(); $ini = parse_ini_file('pull_settings.ini',true); define ("CURRENT_SITE",$_SERVER["SERVER_NAME"]); foreach ($ini as $server) { if (CURRENT_SITE==$server["site_name"]) { if ($server["type"]=="master") { $users = $server["users"]; if (in_array($author,$users) && $branch == "master") { exec("git pull",$msgs); } else $users = array(); } if ($server["type"]=="dev") { exec("git stash",$msgs); exec("git fetch --all",$msgs); $users = $server["users"]; if (in_array($author,$users)) { exec("git checkout -f $branch",$msgs); exec("git merge origin/$branch",$msgs); } else $users = array(); } } } 

El problema es este:

¡No siempre funciona! A veces no se va a retirar la twig, incluso si debería. Además, a veces deja files cuando revisa nuevas sucursales. Esto hace que Git diga que se modificaron muchos files que no estaban dentro de la twig en la que se encuentran.

¡Por favor ayuda! Muy atascado

Gracias

git stash saveá las modificaciones hechas de los files rastreados. Si tiene files nuevos, no se saveán. ¿No es posible que este sea uno de tus problemas? Usted tiene nuevos files sin seguimiento que luego serán agregados por su combinación git.