Initial commit
Dieser Commit ist enthalten in:
186
DUPLICATE_ANALYSIS.md
Normale Datei
186
DUPLICATE_ANALYSIS.md
Normale Datei
@ -0,0 +1,186 @@
|
||||
# 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)
|
||||
In neuem Issue referenzieren
Einen Benutzer sperren