Ein Repository (deutsch: „Ablage“, „Speicher“ oder „Depot“) ist ein zentraler Ort, an dem Daten, Dateien oder Code organisiert, gespeichert und verwaltet werden. Der Begriff wird je nach Kontext etwas unterschiedlich verwendet – hier sind die häufigsten Bedeutungen:
Ein Repository ist ein Verzeichnis, das den Quellcode eines Projekts, Konfigurationsdateien, Dokumentationen und die Versionsgeschichte enthält. Es dient dazu, die Entwicklung von Software zu verfolgen, Änderungen zu speichern und im Team zusammenzuarbeiten.
🔁 Versionierung: Mit Tools wie Git kann man Änderungen rückgängig machen, alte Versionen vergleichen und neue Features in eigenen Branches entwickeln.
🤝 Zusammenarbeit: Entwickler können gemeinsam am Code arbeiten, Pull Requests stellen, Issues anlegen und Code-Reviews durchführen.
🌍 Remote-Repository: Online-Plattformen wie GitHub, GitLab oder Bitbucket hosten Repositories, damit Teams weltweit gemeinsam entwickeln können.
Beispiel:
git clone https://github.com/nutzername/mein-projekt.git
Ein Repository ist eine Sammlung von Softwarepaketen, die von einer Paketverwaltung (z. B. apt
, yum
, pip
) verwendet wird, um Programme zu installieren oder zu aktualisieren.
Beispiel:
sudo apt update
sudo apt install firefox
Auch außerhalb der IT kann ein „Repository“ eine Art Datenbank oder Archiv sein – z. B. für wissenschaftliche Publikationen oder digitale Sammlungen.
Deployer ist ein Open-Source-Deployment-Tool für PHP-Projekte – speziell entwickelt, um Anwendungen wie Laravel, Symfony, Magento, WordPress oder auch generische PHP-Apps automatisiert, wiederholbar und sicher auf Server zu bringen.
Es ist ein CLI-Tool, geschrieben in PHP.
Du definierst dein Deployment in einer deploy.php
-Datei mit klaren Aufgaben (Tasks).
Es setzt auf das Prinzip Zero Downtime Deployment, z. B. durch Symlinks.
Unterstützt mehrstufige Umgebungen (z. B. staging, production).
Du installierst Deployer über Composer:
composer require deployer/deployer --dev
Du generierst ein Template:
vendor/bin/dep init
Du konfigurierst deploy.php
, z. B. für Laravel:
host('mein-server.com')
->set('deploy_path', '/var/www/meinprojekt')
->set('branch', 'main');
task('deploy', [
'deploy:prepare',
'deploy:vendors',
'artisan:migrate',
'deploy:publish',
]);
Du startest das Deployment:
vendor/bin/dep deploy production
Deployer:
Verbindet sich via SSH mit dem Zielserver
Klont das Git-Repository in ein neues Release-Verzeichnis
Installiert Composer-Abhängigkeiten
Führt Tasks aus (z. B. php artisan migrate
)
Verlinkt das neue Release mit dem Live-Verzeichnis (current
)
Löscht alte Releases nach Bedarf
Vorteil | Beschreibung |
---|---|
🚀 Schnell & Skriptbar | Alles per CLI steuerbar |
🔁 Rollback-Funktion | Bei Fehlern einfach zum letzten funktionierenden Release zurück |
⚙️ Flexibel erweiterbar | Eigene Tasks, Hooks und Bedingungen |
🧩 Viele Presets | Für Laravel, Symfony, WordPress etc. |
🔐 Sicher durch SSH | Keine FTP-Abhängigkeit |
GitHub Actions ist ein Feature von GitHub, mit dem du automatisierte Workflows für deine Softwareprojekte erstellen kannst – direkt im GitHub-Repository.
Du kannst CI/CD-Pipelines (Continuous Integration / Continuous Deployment) aufbauen, z. B.:
🛠️ Code bei jedem Push oder Pull Request builden
🚀 Software automatisch deployen (z. B. auf einen Webserver, in die Cloud, zu DockerHub)
📦 Releases erstellen (z. B. ZIP-Dateien, Versionstags)
🔄 Cronjobs oder geplante Tasks laufen lassen
GitHub Actions basiert auf sogenannten Workflows, die du in einer Datei definierst:
Die Datei heißt z. B. .github/workflows/ci.yml
Sie ist im YAML-Format
Du definierst Events (z. B. push
, pull_request
) und Jobs (z. B. build
, test
)
Jobs bestehen aus Steps, die Befehle oder Aktionen ausführen
name: CI
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: '20'
- run: npm install
- run: npm test
Eine Action ist ein einzelner Schritt, den man in einem Workflow ausführt. Es gibt:
Vorgefertigte Actions (z. B. actions/checkout
, setup-node
, upload-artifact
)
Eigene Actions (z. B. Shell-Skripte oder Docker-Container)
Du kannst Actions im GitHub Marketplace finden und nutzen.
Spart manuelle Arbeit
Verbessert Codequalität (durch automatisierte Tests)
Macht Deployments reproduzierbar
Alles direkt in GitHub – kein externer CI-Dienst nötig (wie Jenkins oder Travis CI)
TortoiseGit ist eine grafische Benutzeroberfläche (GUI) für Git, die speziell für Windows entwickelt wurde. Es handelt sich um eine Erweiterung für den Windows Explorer, mit der sich Git-Repositories direkt per Kontextmenü verwalten lassen.
✅ Integration in den Windows Explorer → Kein separates Tool nötig, alles über das Rechtsklick-Menü erreichbar
✅ Einfache Bedienung → Ideal für Nutzer, die sich mit der Git-Kommandozeile nicht auskennen
✅ Visuelle Unterstützung → Änderungen, Diffs, Logs und Branches werden grafisch dargestellt
✅ Push, Pull, Commit & Merge → Standard-Git-Funktionen über eine Benutzeroberfläche
✅ Unterstützung für mehrere Repositories → Verwaltung mehrerer Projekte parallel
TortoiseGit benötigt eine Git-Installation (z. B. Git for Windows), um zu funktionieren.
➡ Download & Infos: https://tortoisegit.org/
Churn PHP ist ein Tool, das dabei hilft, potenziell riskante oder wartungsintensive Teile in einem PHP-Code zu identifizieren. Es analysiert, wie oft Klassen oder Funktionen geändert wurden (Churn-Rate) und wie komplex sie sind (zyklomatische Komplexität). Das Hauptziel besteht darin, Bereiche im Code zu finden, die sich häufig ändern und schwer zu warten sind, was darauf hinweist, dass sie von einer Überarbeitung profitieren könnten oder genauere Aufmerksamkeit benötigen.
Kurz gesagt, Churn PHP hilft Entwicklern, technischen Schulden vorzubeugen, indem es problematische Codebereiche markiert, die in Zukunft potenziell Probleme verursachen könnten. Es lässt sich gut in Git-Repositories integrieren und kann als Teil einer CI/CD-Pipeline ausgeführt werden.
Renovate ist ein Open-Source-Tool, das den Prozess der Abhängigkeitsverwaltung automatisiert. Es überwacht kontinuierlich die Abhängigkeiten eines Softwareprojekts (wie npm, Maven, Docker) und erstellt Pull Requests, um veraltete Pakete zu aktualisieren. So bleibt das Projekt auf dem neuesten Stand und sicher.
Hauptfunktionen umfassen:
Es hilft, technische Schulden zu reduzieren und Sicherheitslücken durch Drittabhängigkeiten zu minimieren, was es besonders bei GitHub, GitLab und Bitbucket beliebt macht.
Helm ist ein Open-Source-Paketmanager für Kubernetes, eine Container-Orchestrierungsplattform. Mit Helm können Anwendungen, Dienste und Konfigurationen als sogenannte Charts definiert, verwaltet und installiert werden. Ein Helm-Chart ist im Grunde eine Sammlung von YAML-Dateien, die alle Ressourcen und Abhängigkeiten einer Anwendung in Kubernetes beschreiben.
Helm vereinfacht den Prozess der Bereitstellung und Verwaltung komplexer Kubernetes-Anwendungen. Statt alle Kubernetes-Ressourcen manuell zu erstellen und zu konfigurieren, kann man ein Helm-Chart verwenden, um dies automatisiert und wiederholbar zu tun. Helm bietet Funktionen wie Versionskontrolle, Rollbacks (zurücksetzen auf frühere Versionen einer Anwendung) und eine einfache Möglichkeit, Anwendungen zu aktualisieren oder zu deinstallieren.
Hier sind einige der wichtigsten Konzepte:
Helm vereinfacht also die Verwaltung und Bereitstellung von Kubernetes-Anwendungen erheblich.
Ein Monorepo (kurz für "Monorepository") ist ein einziges Versionsverwaltungssystem (z.B. ein Git-Repository), in dem der Code für mehrere Projekte oder Dienste gespeichert wird. Im Gegensatz zu einem "Multirepo", bei dem jedes Projekt oder jeder Dienst in einem eigenen Repository verwaltet wird, umfasst ein Monorepo alle Projekte in einem einzigen Repository.
Merkmale und Vorteile eines Monorepos:
Gemeinsame Codebasis: Alle Projekte teilen sich eine einzige Codebasis, was die Zusammenarbeit zwischen verschiedenen Teams erleichtert. Änderungen, die sich auf mehrere Projekte auswirken, können gleichzeitig gemacht und getestet werden.
Einfache Code-Synchronisation: Da alle Projekte denselben Versionsverlauf nutzen, ist es einfacher, gemeinsame Bibliotheken oder Abhängigkeiten konsistent zu halten.
Wiederverwendbarkeit: In einem Monorepo ist es einfacher, wiederverwendbare Module oder Bibliotheken zwischen Projekten zu teilen.
Integrierte Versionskontrolle: Es gibt eine zentrale Versionskontrolle, sodass Änderungen in einem Projekt sofort auch andere Projekte betreffen können.
Skalierbarkeit: Große Unternehmen wie Google oder Facebook nutzen Monorepos, um Tausende von Projekten und Entwicklern unter einem einzigen Repository zu organisieren.
Nachteile eines Monorepos:
Komplexität des Builds: Der Build-Prozess kann komplizierter werden, da er die Abhängigkeiten zwischen vielen verschiedenen Projekten berücksichtigen muss.
Leistungsprobleme: Bei sehr großen Repositories können Versionskontrollsysteme wie Git langsamer arbeiten, da sie mit der Größe des Repos kämpfen.
Ein Monorepo ist besonders sinnvoll, wenn verschiedene Projekte eng miteinander verzahnt sind und es oft zu Überschneidungen oder Abhängigkeiten kommt.
Closed Source (auch Proprietary Software genannt) bezeichnet Software, deren Quellcode nicht öffentlich zugänglich ist und nur vom Eigentümer bzw. Entwickler eingesehen, geändert und weitergegeben werden kann. Im Gegensatz zu Open Source-Software, bei der der Quellcode offengelegt wird, bleibt der Quellcode bei Closed Source streng vertraulich.
Geschützter Quellcode: Der Quellcode der Software ist nicht für die Öffentlichkeit einsehbar. Nur der Entwickler oder das Unternehmen, das die Software besitzt, hat Zugriff darauf. Dadurch wird verhindert, dass Dritte die Funktionsweise der Software nachvollziehen oder Änderungen daran vornehmen können.
Lizenzrechtliche Beschränkungen: Closed Source Software wird häufig unter restriktiven Lizenzen vertrieben, die die Nutzung, Modifikation und Weitergabe streng regulieren. Dies bedeutet, dass Nutzer die Software nur innerhalb der durch die Lizenz erlaubten Rahmenbedingungen verwenden dürfen.
Zugangsbeschränkung: Nur autorisierte Entwickler oder Teams innerhalb des Unternehmens, das die Software besitzt, haben die Berechtigung, den Code zu modifizieren oder neue Funktionen hinzuzufügen.
Kommerzielle Nutzung: Closed Source Software wird oft als kommerzielles Produkt angeboten. Nutzer müssen in der Regel eine Lizenz erwerben oder Abonnements abschließen, um die Software zu nutzen. Typische Beispiele sind Anwendungen wie Microsoft Office oder Adobe Photoshop.
Geringere Transparenz: Nutzer haben keine Möglichkeit, den Quellcode auf Sicherheitslücken oder versteckte Funktionen (z. B. Backdoors) zu überprüfen. Dies kann ein Risiko darstellen, wenn Vertrauen in die Software-Sicherheit ein kritischer Faktor ist.
Einige bekannte Closed Source Programme und Plattformen sind:
Closed Source Software ist proprietäre Software, deren Quellcode nicht öffentlich zugänglich ist. Sie wird in der Regel von Unternehmen entwickelt und kommerziell angeboten. Nutzer können die Software verwenden, aber weder den Quellcode einsehen noch modifizieren. Dies bietet Vorteile in Bezug auf den Schutz des geistigen Eigentums und die Qualitätssicherung, geht jedoch zulasten der Flexibilität und Transparenz.
Quellcode (auch Quelltext oder Code genannt) ist die für Menschen lesbare Anweisungssammlung, die von Programmierern geschrieben wird, um die Funktionsweise eines Programms zu definieren. Er besteht aus einer Abfolge von Befehlen und Anweisungen, die in einer bestimmten Programmiersprache geschrieben sind, wie z. B. Java, Python, C++, JavaScript und vielen anderen.
Menschlich lesbar: Quellcode wird von Entwicklern geschrieben und ist so gestaltet, dass er für Menschen lesbar und verständlich ist. Oft wird er mit Kommentaren und gut strukturierten Anweisungen versehen, um seine Logik nachvollziehbar zu machen.
Programmiersprachen: Quellcode wird in verschiedenen Programmiersprachen geschrieben, die unterschiedliche Syntax und Regeln haben. Jede Programmiersprache hat spezifische Zwecke und Anwendungsbereiche.
Maschinenunabhängig: Quellcode ist in seiner Rohform nicht direkt ausführbar. Er muss in eine maschinenlesbare Form (Maschinencode) übersetzt werden, damit der Computer ihn verstehen und ausführen kann. Diese Übersetzung erfolgt durch einen Compiler oder Interpreter.
Bearbeitung und Wartung: Entwickler können Quellcode bearbeiten, erweitern und verbessern, um neue Funktionen hinzuzufügen oder Fehler zu beheben. Der Quellcode bildet die Grundlage für alle weiteren Entwicklungs- und Wartungsarbeiten eines Softwareprojekts.
Ein einfaches Beispiel in Python, das zeigt, wie Quellcode aussieht:
# Ein einfacher Python-Quellcode, der "Hello, World!" ausgibt
print("Hello, World!")
Dieser Code besteht aus einer einzigen Anweisung (print
), die den Text "Hello, World!" auf dem Bildschirm ausgibt. Obwohl es nur eine Zeile ist, muss der Interpreter (in diesem Fall der Python-Interpreter) den Quellcode lesen, verstehen und in Maschinencode umwandeln, damit der Computer die Anweisung ausführen kann.
Quellcode ist das Herzstück jeder Softwareentwicklung. Er definiert die Logik, das Verhalten und die Funktionalität einer Software. Einige wichtige Aspekte des Quellcodes:
Quellcode ist der grundlegende, menschenlesbare Text, aus dem Softwareprogramme bestehen. Er wird von Entwicklern geschrieben, um die Funktionalität eines Programms zu definieren und muss von einem Compiler oder Interpreter in Maschinencode umgewandelt werden, bevor ein Computer ihn ausführen kann.