devonfw / IDEasy

Tool to automate the setup and updates of a development environment for any project (Successor of devonfw-ide).
Apache License 2.0
8 stars 20 forks source link

Feature to add notification when ide-settings has updates #161

Closed alfeilex closed 1 month ago

alfeilex commented 9 months ago

From our survey of experiences with devonfw-ide, there is a feature request to add notifications when the ide-settings are updated. This way the user can decide whether or not to update the ide.

One idea would be to get the latest status/commits of the ide-settings repo after running devon. Then the user gets the information and can decide to update the ide with the latest ide-settings.

There is also the idea in the survey to have a health check or report of the actual installation. This report could also include information about updates of any kind, such as new releases or new settings.

The original feature ideas of the survey are:

hohwille commented 5 months ago

See also #118 so we do not slow down every IDEasy command by checking if updates are available.

hohwille commented 3 months ago

For the record just so it wont get lost:

der Fetch ist die teuere Remote-Operation, die wir nicht ständig bei jedem Aufruf machen sollten. Wenn wir bei einem Fetch mal ein update bekommen, wissen wir danach via git ohne weitere Remote-Zugriffe, dass Änderungen vorliegen. D.h. als erstes sollten wir prüfen, ob der lokale checkout Änderungen aus dem gefetchten remote Branch noch nicht hat. Das sollte eine schnelle lokale Operation sein. Wenn dies der Fall ist, können wir Anzeigen, dass es Änderungen gibt. Sollten hierbei keine Änderungen festgestellt werden, so würden wir einen Fetch machen und sofern dieser überhaupt etwas neues vom Server bekommen hat, die vorige Prüfung wiederholen. Dabei sollten wir wie bei "smart git pulls" ein Caching-Intervall einbauen. Hier ist aber 1 Tag zu selten. Bei ide-urls macht das Sinn, da diese nur 1x pro Nacht wirklich aktualisiert werden. Trotzdem wurde bei der Implementierung das gemacht: GIT_PULL_CACHE_DELAY_MILLIS = Duration.ofMinutes(30) Bei den Änderungen von ide-settings sieht es anders aus: Hier kann jemand im Team (ein "IDE-Admin") durchaus mehrmals am Tag Änderungen pushen. In diesem Feature geht es jedoch nur darum, dass die Entwickler pro-aktiv von IDEasy auf die Änderung aufmerksam gemacht werden. Wenn man ide update macht, muss immer der aktuelle Stand gepulled werden ohne Caching. Typischerweise sollen Entwickler nicht immer automatisch Änderungen auch zu sich holen. Ggf. werden diese erst mal von Pilot-Usern (in größeren Teams) getstet, bevor das bei allen ausgerollt werden soll. Dies erfolt dann meist organisatorisch per Email an das Team. Folglich brauchen wir keine sekundenaktuelle Info für dieses Feature. Ich hätte aus dem Bauch heraus mal 5 Minuten gedacht. Wir könnten aber auch bei dem bereits existierenden GIT_PULL_CACHE_DELAY_MILLIS bleiben (und das ggf. in GIT_CACHE_DELAY_MILLIS umbenennen). Sollte der User nicht online sein, sollte die ganze Prüfung stillschweigend ignoriert werden und nicht zum Abbruch mit Fehler führen. Zudem darf die Ausgabe nicht im Output von Ideasy env landen.

hohwille commented 3 months ago

For the record: We are also planning and working on the IDEasy GUI that will bring a graphical dashboard. It will show you pro-actively if such updates (of settings or of our IDEasy product or of tools using a version pattern) are available. The user can click on such notification to apply the update.

diiinesh commented 3 months ago

For the record just so it wont get lost:

der Fetch ist die teuere Remote-Operation, die wir nicht ständig bei jedem Aufruf machen sollten. Wenn wir bei einem Fetch mal ein update bekommen, wissen wir danach via git ohne weitere Remote-Zugriffe, dass Änderungen vorliegen. D.h. als erstes sollten wir prüfen, ob der lokale checkout Änderungen aus dem gefetchten remote Branch noch nicht hat. Das sollte eine schnelle lokale Operation sein. Wenn dies der Fall ist, können wir Anzeigen, dass es Änderungen gibt. Sollten hierbei keine Änderungen festgestellt werden, so würden wir einen Fetch machen und sofern dieser überhaupt etwas neues vom Server bekommen hat, die vorige Prüfung wiederholen. Dabei sollten wir wie bei "smart git pulls" ein Caching-Intervall einbauen. Hier ist aber 1 Tag zu selten. Bei ide-urls macht das Sinn, da diese nur 1x pro Nacht wirklich aktualisiert werden. Trotzdem wurde bei der Implementierung das gemacht: GIT_PULL_CACHE_DELAY_MILLIS = Duration.ofMinutes(30) Bei den Änderungen von ide-settings sieht es anders aus: Hier kann jemand im Team (ein "IDE-Admin") durchaus mehrmals am Tag Änderungen pushen. In diesem Feature geht es jedoch nur darum, dass die Entwickler pro-aktiv von IDEasy auf die Änderung aufmerksam gemacht werden. Wenn man ide update macht, muss immer der aktuelle Stand gepulled werden ohne Caching. Typischerweise sollen Entwickler nicht immer automatisch Änderungen auch zu sich holen. Ggf. werden diese erst mal von Pilot-Usern (in größeren Teams) getstet, bevor das bei allen ausgerollt werden soll. Dies erfolt dann meist organisatorisch per Email an das Team. Folglich brauchen wir keine sekundenaktuelle Info für dieses Feature. Ich hätte aus dem Bauch heraus mal 5 Minuten gedacht. Wir könnten aber auch bei dem bereits existierenden GIT_PULL_CACHE_DELAY_MILLIS bleiben (und das ggf. in GIT_CACHE_DELAY_MILLIS umbenennen). Sollte der User nicht online sein, sollte die ganze Prüfung stillschweigend ignoriert werden und nicht zum Abbruch mit Fehler führen. Zudem darf die Ausgabe nicht im Output von Ideasy env landen.

Could you explain why an additional git fetch is needed if the local and remote commit hashes are the same?

hohwille commented 1 month ago

Could you explain why an additional git fetch is needed if the local and remote commit hashes are the same?

If I have updated then local and remote are the same. Now if some new commits are pushed to the git server, they mean that updates are available. But I will only see them after I did a git fetch. However, if the user then decides not do call ide update or manually do git pull on settings folder, then I still know that there are updates to pull without the need to git fetch again.