EGit: Pruning Remote Tracking Branches, die im Remote Repo gelöscht wurden

Lesezeit: 3 Minuten

Benutzer-Avatar
Steven Byle

Ich verwende EGit (für Eclipse) mit einem Team von Entwicklern. Wir haben eine Menge erstellt feature und fix Branches für neue Arbeit und dann Zusammenführung mit unseren release Filialen, wenn sie fertig sind. Gleich nachdem sie in die richtige zusammengeführt wurden release Branch werden diese temporären Branches normalerweise gelöscht, um unser Remote-Repo sauber zu halten.

Mir ist aufgefallen, dass ich, wenn diese Zweige gelöscht werden, aus unserem Remote-Repo abrufen werde, aber EGit sie nicht aus meiner Remote-Tracking-Ansicht entfernt. Meine Remote-Tracking-Ansicht zeigt weiterhin gelöschte Branches an, die sich nicht mehr im Remote-Repo befinden (und es gibt keinen Hinweis darauf, dass sie gelöscht wurden). Die einzige Möglichkeit (die ich gefunden habe), damit meine Remote-Tracking-Ansicht das tatsächliche Repo widerspiegelt, besteht darin, alle meine Remote-Tracking-Zweige manuell zu löschen (hervorzuheben und zu löschen) und sie dann erneut abzurufen. Dies scheint sehr umständlich zu sein, zumal Sie entfernte Zweige wie folgt über die Befehlszeile löschen können:

git remote prune origin

Grundsätzlich würde ich gerne wissen, ob es eine Möglichkeit gibt, EGit zu konfigurieren/zu veranlassen, diese Bereinigung durchzuführen, wenn sich Remote-Tracking-Zweige ändern (nachdem ich abgerufen habe). Hier ist meine aktuelle Abrufkonfiguration auf my origin Fernbedienung:

Geben Sie hier die Bildbeschreibung ein

Benutzer-Avatar
VonC

Update März 2014: Wie in Cheshires Antwort erwähnt, EGit 3.3 fügte diese Prune-Funktion hinzu.

Sie können die darin eingeführte Funktion sehen Gerrit-Code-Review in JGit (und hier getestet)

Der Eintritt fetch.prune erwähnt in git config kann zu Ihrer Egit-Konfiguration hinzugefügt werden:

https://wiki.eclipse.org/images/f/f8/RepositoryConfigurationSettings.png


Ursprüngliche Antwort (März 2013)

EGit führt diese Bereinigung durch, wenn sich Remote-Tracking-Zweige ändern (nachdem ich abgerufen habe).

Nicht, dass ich davon Wüste.

Allgemeiner gesagt ist es mit Hooks nicht möglich, nach jedem Abruf auf der Clientseite eine Aktion auszuführen.
Es hat angefordert wordenund wurde zu einem bestimmten Zeitpunkt nur auf der Serverseite implementiert: Haken post-upload (wird nach einem Abruf ausgeführt), aber aus Sicherheitsgründen in einer Mehrbenutzerumgebung entfernt.

  • Also ich verstehe das als hook, kann das Ausführen dieser Art von Skripts eine Sicherheitsbedrohung darstellen. Betrieb prune automatisch nach dem Abrufen wäre meine ideale Lösung. Die Wurzel meiner Frage ist jedoch, dass die prune Befehl funktioniert bereits mit Git Befehlszeile. Selbst wenn ich auswählen könnte, es manuell auszuführen, löst das mein Problem. Ich verstehe nicht, warum EGit das nicht implementieren kann prune Befehl. Wissen Sie, ob EGit das Beschneiden überhaupt durchführen kann?

    – Steven Byle

    5. März 2013 um 14:26 Uhr

  • @StevenByle siehe Folie 10 von EGit 2.3 Review: bugs.eclipse.org/bugs/attachment.cgi?id=226938 . prune wird nicht unterstützt.

    – VonC

    5. März 2013 um 16:11 Uhr

  • Genau das wollte ich wissen. Ich schätze deinen Fleiß :).

    – Steven Byle

    5. März 2013 um 16:17 Uhr

  • @VonC Ich habe den Konfigurationswert „Prune“, den Sie in Ihrem obigen Screenshot erwähnen, nicht gesehen

    – Andreas Norman

    4. Mai 2016 um 21:18 Uhr


  • @hamena314 Vielen Dank für dieses Feedback. Ich habe den Screenshot aktualisiert.

    – VonC

    22. August 2016 um 9:07 Uhr

Das Kürzliche EGit 3.3-Version eingeführte Prune-Unterstützung.

Sie können eine hinzufügen fetch.prune oder ein remote.<yourremotename>.prune key zur gitconfig und setze es auf true. Wenn Sie mit EGit abrufen, werden automatisch Zweige entfernt, die im zentralen Repository gelöscht werden.

Das Setzen von fetch.prune = true in den git-Settings löst das Problem. Wenn Sie dies in den Repository-Einstellungen tun, können Sie diese Einstellung für jedes Repository unterscheiden. Wenn Sie diese Einstellung für jedes Repository verwenden möchten, setzen Sie besser fetch.prune = true in die Benutzereinstellungen. Sie müssen es also nicht für jedes Repository wiederholen.

1256370cookie-checkEGit: Pruning Remote Tracking Branches, die im Remote Repo gelöscht wurden

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy