diff --git a/src/Mod/AddonManager/AddonManager.py b/src/Mod/AddonManager/AddonManager.py
index bf86c0c9a6..c38e3ae832 100644
--- a/src/Mod/AddonManager/AddonManager.py
+++ b/src/Mod/AddonManager/AddonManager.py
@@ -550,8 +550,39 @@ class ShowWorker(QtCore.QThread):
desc = "Unable to retrieve addon description"
self.repos[self.idx].append(desc)
self.addon_repos.emit(self.repos)
- if self.repos[self.idx][2] == 1 :
- message = "" + translate("AddonsInstaller", "This addon is already installed.") + "
" + desc + ' - ' + self.repos[self.idx][1] + ''
+ if self.repos[self.idx][2] == 1:
+ upd = False
+ # checking for updates
+ if not NOGIT:
+ try:
+ import git
+ except:
+ pass
+ else:
+ repo = self.repos[self.idx]
+ clonedir = FreeCAD.ConfigGet("UserAppData") + os.sep + "Mod" + os.sep + repo[0]
+ if os.path.exists(clonedir):
+ if not os.path.exists(clonedir + os.sep + '.git'):
+ # Repair addon installed with raw download
+ bare_repo = git.Repo.clone_from(repo[1], clonedir + os.sep + '.git', bare=True)
+ try:
+ with bare_repo.config_writer() as cw:
+ cw.set('core', 'bare', False)
+ except AttributeError:
+ FreeCAD.Console.PrintWarning(translate("AddonsInstaller", "Outdated GitPython detected, consider upgrading with pip.\n"))
+ cw = bare_repo.config_writer()
+ cw.set('core', 'bare', False)
+ del cw
+ repo = git.Repo(clonedir)
+ repo.head.reset('--hard')
+ gitrepo = git.Git(clonedir)
+ gitrepo.fetch()
+ if "git pull" in gitrepo.status():
+ upd = True
+ if upd:
+ message = "" + translate("AddonsInstaller", "An update is available for this addon.") + "
" + desc + ' - ' + self.repos[self.idx][1] + ''
+ else:
+ message = "" + translate("AddonsInstaller", "This addon is already installed.") + "
" + desc + ' - ' + self.repos[self.idx][1] + ''
else:
message = desc + ' - ' + self.repos[self.idx][1] + ''
self.info_label.emit( message )