Closed alfeilex closed 1 month ago
See also #118 so we do not slow down every IDEasy command by checking if updates are available.
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.
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.
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?
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.
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 runningdevon
. Then the user gets the information and can decide to update the ide with the latestide-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: