# Duplicate Methods Analysis - main_window.py ## Übersicht Analyse der 4 duplizierten Methoden-Paare in `gui/main_window.py`. ## 1. `manage_branches` (Zeilen 1374 & 2336) ### Erste Version (Zeile 1374) ```python def manage_branches(self, project): messagebox.showinfo("Branches", "Branch management coming soon") ``` - **Typ**: Placeholder - **Funktionalität**: Zeigt nur Info-Dialog ### Zweite Version (Zeile 2336) ```python def manage_branches(self, project): # 55 Zeilen Code # Vollständige Implementierung mit: # - Branch-Auflistung # - Branch erstellen # - Branch wechseln # - UI Dialog ``` - **Typ**: Vollständige Implementierung - **Funktionalität**: Komplettes Branch-Management ### Empfehlung ✅ **Erste Version löschen, zweite behalten** - Die erste Version ist nur ein Placeholder - Die zweite Version ist die fertige Implementierung --- ## 2. `link_to_gitea` (Zeilen 1378 & 2392) ### Erste Version (Zeile 1378) ```python def link_to_gitea(self, project): messagebox.showinfo("Link to Gitea", "Link functionality coming soon") ``` - **Typ**: Placeholder - **Funktionalität**: Zeigt nur Info-Dialog ### Zweite Version (Zeile 2392) ```python def link_to_gitea(self, project): # 64 Zeilen Code # Vollständige Implementierung mit: # - Repository-Existenz prüfen # - Repository erstellen wenn nötig # - Remote URL setzen # - Fehlerbehandlung ``` - **Typ**: Vollständige Implementierung - **Funktionalität**: Komplette Gitea-Verlinkung ### Empfehlung ✅ **Erste Version löschen, zweite behalten** - Die erste Version ist nur ein Placeholder - Die zweite Version ist die fertige Implementierung --- ## 3. `test_gitea_connection` (Zeilen 1757 & 2457) ### Erste Version (Zeile 1757) ```python def test_gitea_connection(self, project): # 35 Zeilen Code # Basis-Implementierung: # - Verbindungstest # - User-Info anzeigen # - Organisationen auflisten ``` - **Parameter**: `project` (required) - **Anzeige**: Via `messagebox.showinfo` ### Zweite Version (Zeile 2457) ```python def test_gitea_connection(self, project=None): # 98 Zeilen Code # Erweiterte Implementierung: # - Optional project parameter # - Team-Berechtigungen # - Projekt-spezifische Git-Info # - Repository-Auflistungen # - Bessere Fehlerbehandlung ``` - **Parameter**: `project=None` (optional) - **Anzeige**: Via `self._show_scrollable_info` ### Unterschiede 1. **Parameter**: Erste Version erfordert `project`, zweite ist optional 2. **Funktionalität**: Zweite Version hat erweiterte Features 3. **Anzeige**: Unterschiedliche Dialog-Methoden ### Empfehlung 🔄 **Beide Versionen zusammenführen** ```python def test_gitea_connection(self, project=None): # Kombinierte Implementierung: # - Optional project parameter (von Version 2) # - Erweiterte Features (von Version 2) # - Robuste Fehlerbehandlung (von beiden) ``` --- ## 4. `verify_repository_on_gitea` (Zeilen 1792 & 2556) ### Erste Version (Zeile 1792) ```python def verify_repository_on_gitea(self, project): # 103 Zeilen Code # Features: # - Git-Repository Vorprüfung # - Repository-Status prüfen # - Branches vergleichen # - Remote-URL Validierung ``` - **Anzeige**: Via `messagebox.showinfo` - **Besonderheit**: Prüft ob `.git` Verzeichnis existiert ### Zweite Version (Zeile 2556) ```python def verify_repository_on_gitea(self, project): # 100 Zeilen Code # Features: # - Debug-Info (.git/config Inhalt) # - Repository-Status prüfen # - Branches vergleichen # - Remote-URL Validierung ``` - **Anzeige**: Via `self._show_scrollable_info` - **Besonderheit**: Zeigt Debug-Informationen ### Unterschiede 1. **Vorprüfungen**: Erste Version prüft Git-Verzeichnis 2. **Debug-Info**: Zweite Version zeigt .git/config 3. **Dialog**: Unterschiedliche Anzeige-Methoden ### Empfehlung 🔄 **Beide Versionen zusammenführen** ```python def verify_repository_on_gitea(self, project): # Kombinierte Implementierung: # - Git-Verzeichnis Vorprüfung (von Version 1) # - Debug-Informationen (von Version 2) # - Scrollbare Anzeige (von Version 2) ``` --- ## Aufruf-Analyse Alle duplizierten Methoden werden vom `gitea_operation` Method aufgerufen: ```python def gitea_operation(self, operation_name, project): operations = { "status": self.show_git_status, "push": lambda p: self.push_to_gitea(p), "init_push": self.init_and_push_to_gitea, "test": self.test_gitea_connection, # Ruft duplizierte Methode auf "verify": self.verify_repository_on_gitea, # Ruft duplizierte Methode auf "link": self.link_to_gitea, # Ruft duplizierte Methode auf "branches": self.manage_branches, # Ruft duplizierte Methode auf # ... } ``` ## Konsolidierungs-Strategie ### Sofort löschbar (Placeholder): 1. ❌ `manage_branches` (Zeile 1374) - Nur Placeholder 2. ❌ `link_to_gitea` (Zeile 1378) - Nur Placeholder ### Zusammenführung erforderlich: 3. 🔄 `test_gitea_connection` - Features beider Versionen kombinieren 4. 🔄 `verify_repository_on_gitea` - Vorprüfungen und Debug-Info kombinieren ### Priorität: 1. **Hoch**: Placeholder löschen (einfach, keine Risiken) 2. **Mittel**: Methoden zusammenführen (mehr Aufwand, Tests nötig)