Я пытаюсь написать крюк после приема, который потянет все новые ветви, нажатые на учетную запись bitbucket. Затем, если человек, который нажал эти изменения, является назначенным пользователем определенного сайта разработки, ветвь должна автоматически быть проверена.Git Post-Receive Hook несовместимо добавляет изменения
Это код:
$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();
}
}
}
Проблема заключается в следующем:
Это не всегда работает! Иногда он не проверяет ветку, даже если это необходимо. Кроме того, иногда он оставляет файлы позади, когда он проверяет новые ветви. Это приводит к тому, что git говорит, что была изменена целая куча файлов, которые не были в пределах ветки, в которой она находится.
Пожалуйста, помогите! Очень застрял.
Благодаря
новых файлов не остановит слияние, хотя я не думаю? процесс буквально останавливается в середине сценария – Quazz
Новые файлы могут быть проблемой, если они не отслеживаются в локальном репо, и вы пытаетесь объединить удаленное репо, добавляя отслеживаемые файлы с тем же именем. Это остановило бы слияние при попрошайничестве. – Gnujeremie