From 02942f466e1961475e832125503dac595b5d9ac6 Mon Sep 17 00:00:00 2001 From: Alexandre Alapetite Date: Sat, 25 May 2024 23:08:00 +0200 Subject: [PATCH] Better git error messages fix https://github.com/FreshRSS/FreshRSS/discussions/5174 fix https://github.com/FreshRSS/FreshRSS/issues/6483 --- app/Controllers/updateController.php | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/app/Controllers/updateController.php b/app/Controllers/updateController.php index 35f5c16913f..ffc1299fa92 100644 --- a/app/Controllers/updateController.php +++ b/app/Controllers/updateController.php @@ -10,20 +10,28 @@ public static function isGit(): bool { } /** - * Automatic change to the new name of edge branch since FreshRSS 1.18.0. + * Automatic change to the new name of edge branch since FreshRSS 1.18.0, + * and perform checks for several git errors. * @throws Minz_Exception */ public static function migrateToGitEdge(): bool { - $errorMessage = 'Error during git checkout to edge branch. Please change branch manually!'; - if (!is_writable(FRESHRSS_PATH . '/.git/config')) { - throw new Minz_Exception($errorMessage); + throw new Minz_Exception('Error during git checkout: .git directory does not seem writeable! ' . + 'Please git pull manually!'); + } + + exec('which git', $output, $return); + if ($return != 0) { + throw new Minz_Exception("Error {$return} git not found: Please update manually!"); } //Note `git branch --show-current` requires git 2.22+ - exec('git symbolic-ref --short HEAD', $output, $return); + exec('git symbolic-ref --short HEAD 2>&1', $output, $return); if ($return != 0) { - throw new Minz_Exception($errorMessage); + throw new Minz_Exception("Error {$return} during git symbolic-ref: " . + 'Reapply `chown www-data:www-data -R ' . FRESHRSS_PATH . '` ' . + 'or git pull manually! ' . + json_encode($output, JSON_UNESCAPED_SLASHES)); } $line = implode('', $output); if ($line !== 'master' && $line !== 'dev') { @@ -34,13 +42,14 @@ public static function migrateToGitEdge(): bool { unset($output); exec('git checkout edge --guess -f', $output, $return); if ($return != 0) { - throw new Minz_Exception($errorMessage); + throw new Minz_Exception("Error {$return} during git checkout to edge branch! ' . + 'Please change branch manually!"); } unset($output); exec('git reset --hard FETCH_HEAD', $output, $return); if ($return != 0) { - throw new Minz_Exception($errorMessage); + throw new Minz_Exception("Error {$return} during git reset! Please git pull manually!"); } return true; @@ -142,7 +151,7 @@ public function indexAction(): void { if ($version == '') { $version = 'unknown'; } - if (touch(FRESHRSS_PATH . '/index.html')) { + if (@touch(FRESHRSS_PATH . '/index.html')) { $this->view->update_to_apply = true; $this->view->message = [ 'status' => 'good',