186 Zeilen
5.2 KiB
Markdown
186 Zeilen
5.2 KiB
Markdown
# 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) |