From 482f20b735491337bacf689432412d356e70f78e Mon Sep 17 00:00:00 2001 From: echel0n Date: Sat, 20 Dec 2014 07:07:37 -0800 Subject: [PATCH] Malformed airdates now raises a warning instead of a error so we dont clutter logs. Updates now remove untracked files plus perform a hard reset on branch if first update attempt fails then trys to update for a 2nd time. --- sickbeard/tv.py | 4 ++-- sickbeard/versionChecker.py | 38 ++++++++++++++++++++++++------------- 2 files changed, 27 insertions(+), 15 deletions(-) diff --git a/sickbeard/tv.py b/sickbeard/tv.py index bc9e4465..df39d1af 100644 --- a/sickbeard/tv.py +++ b/sickbeard/tv.py @@ -1686,8 +1686,8 @@ class TVEpisode(object): except (ValueError, IndexError): logger.log(u"Malformed air date of " + str(firstaired) + " retrieved from " + sickbeard.indexerApi( self.indexer).name + " for (" + self.show.name + " - " + str(season) + "x" + str(episode) + ")", - logger.ERROR) - # if I'm incomplete on TVDB but I once was complete then just delete myself from the DB for now + logger.WARNING) + # if I'm incomplete on the indexer but I once was complete then just delete myself from the DB for now if self.indexerid != -1: self.deleteEpisode() return False diff --git a/sickbeard/versionChecker.py b/sickbeard/versionChecker.py index 2e017cc3..a475687e 100644 --- a/sickbeard/versionChecker.py +++ b/sickbeard/versionChecker.py @@ -395,10 +395,19 @@ class GitUpdateManager(UpdateManager): # update remote origin url self.update_remote_origin() - if self.branch == self._find_installed_branch(): - output, err, exit_status = self._run_git(self._git_path, 'pull -f %s %s' % (sickbeard.GIT_REMOTE, self.branch)) # @UnusedVariable - else: - output, err, exit_status = self._run_git(self._git_path, 'checkout -f ' + self.branch) # @UnusedVariable + def update_cmd(): + if self.branch == self._find_installed_branch(): + output, err, exit_status = self._run_git(self._git_path, 'pull -f %s %s' % (sickbeard.GIT_REMOTE, self.branch)) # @UnusedVariable + else: + output, err, exit_status = self._run_git(self._git_path, 'checkout -f ' + self.branch) # @UnusedVariable + + return output, err, exit_status + + output, err, exit_status = update_cmd() + if not exit_status == 0: + # remove untracked files and reset branch then attempt updating again + if self.clean() and self.reset(): + output, err, exit_status = update_cmd() if exit_status == 0: self._find_installed_version() @@ -406,13 +415,17 @@ class GitUpdateManager(UpdateManager): # Notify update successful if sickbeard.NOTIFY_ON_UPDATE: notifiers.notify_git_update(sickbeard.CUR_COMMIT_HASH if sickbeard.CUR_COMMIT_HASH else "") - return True - else: - # perform a hard reset to try and resolve the issue - if self.reset() and self.update(): - return True - return False + return True + + def clean(self): + """ + Calls git clean to remove all untracked files. Returns a bool depending + on the call's success. + """ + output, err, exit_status = self._run_git(self._git_path, 'clean -d -fx ""') # @UnusedVariable + if exit_status == 0: + return True def reset(self): """ @@ -421,11 +434,10 @@ class GitUpdateManager(UpdateManager): """ if sickbeard.GIT_RESET: output, err, exit_status = self._run_git(self._git_path, 'reset --hard') # @UnusedVariable - if exit_status == 0: return True - - return False + else: + return True def list_remote_branches(self): # update remote origin url