aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/app/Controllers/updateController.php
diff options
context:
space:
mode:
authorAlexandre Alapetite <alexandre@alapetite.fr>2024-05-26 17:47:52 +0200
committerGitHub <noreply@github.com>2024-05-26 17:47:52 +0200
commit7593e0815bc4e1cf3ca7cc078cc480794aa8b87b (patch)
treed69ca68da4b82f62359f6c71926a47f28fbc9280 /app/Controllers/updateController.php
parentb7cc8142380ccf95d2ec886706e897dcfa9c946c (diff)
downloadfreshrss-7593e0815bc4e1cf3ca7cc078cc480794aa8b87b.tar.gz
freshrss-7593e0815bc4e1cf3ca7cc078cc480794aa8b87b.zip
Better git error messages (#6496)
* Better git error messages fix https://github.com/FreshRSS/FreshRSS/discussions/5174 fix https://github.com/FreshRSS/FreshRSS/issues/6483 * Avoid dependency on `which`
Diffstat (limited to 'app/Controllers/updateController.php')
-rw-r--r--app/Controllers/updateController.php27
1 files changed, 18 insertions, 9 deletions
diff --git a/app/Controllers/updateController.php b/app/Controllers/updateController.php
index 35f5c1691..f706e1713 100644
--- a/app/Controllers/updateController.php
+++ b/app/Controllers/updateController.php
@@ -10,20 +10,28 @@ class FreshRSS_update_Controller extends FreshRSS_ActionController {
}
/**
- * 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('git -v', $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 @@ class FreshRSS_update_Controller extends FreshRSS_ActionController {
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 @@ class FreshRSS_update_Controller extends FreshRSS_ActionController {
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',