aboutsummaryrefslogtreecommitdiff
path: root/app/Controllers/updateController.php
diff options
context:
space:
mode:
authorGravatar Alexandre Alapetite <alexandre@alapetite.fr> 2019-11-02 13:38:04 +0100
committerGravatar GitHub <noreply@github.com> 2019-11-02 13:38:04 +0100
commitc277e15141b99cdcb392f4a32126757d58b44423 (patch)
treed4a15c82238fd59f79bf83e68bac3fb1908c5074 /app/Controllers/updateController.php
parent6a317d876c1da6243f212c9c2967cd44179762d1 (diff)
Git fetch+reset instead of clean+fetch+merge (#2625)
Fix https://github.com/FreshRSS/FreshRSS/issues/2619 Avoid potentially dangerous git clean, and use more robust fetch + reset strategy instead
Diffstat (limited to 'app/Controllers/updateController.php')
-rw-r--r--app/Controllers/updateController.php18
1 files changed, 11 insertions, 7 deletions
diff --git a/app/Controllers/updateController.php b/app/Controllers/updateController.php
index ebe5e4cc8..cc3aef9fd 100644
--- a/app/Controllers/updateController.php
+++ b/app/Controllers/updateController.php
@@ -29,20 +29,22 @@ class FreshRSS_update_Controller extends Minz_ActionController {
public static function gitPull() {
$cwd = getcwd();
chdir(FRESHRSS_PATH);
- $output = array();
+ $output = '';
$return = 1;
try {
- exec('git clean -f -d -f', $output, $return);
+ exec('git fetch', $output, $return);
if ($return == 0) {
- exec('git pull --ff-only', $output, $return);
- } else {
- $line = is_array($output) ? implode('; ', $output) : '' . $output;
- Minz_Log::warning('git clean warning:' . $line);
+ exec('git reset --hard FETCH_HEAD', $output, $return);
}
} catch (Exception $e) {
- Minz_Log::warning('git pull error:' . $e->getMessage());
+ Minz_Log::warning('Git error:' . $e->getMessage());
+ if ($output == '') {
+ $output = $e->getMessage();
+ }
+ $return = 1;
}
chdir($cwd);
+ deleteInstall();
$line = is_array($output) ? implode('; ', $output) : '' . $output;
return $return == 0 ? true : 'Git error: ' . $line;
}
@@ -52,6 +54,8 @@ class FreshRSS_update_Controller extends Minz_ActionController {
Minz_Error::error(403);
}
+ include_once(LIB_PATH . '/lib_install.php');
+
invalidateHttpCache();
$this->view->update_to_apply = false;