Fossil, das beliebte verteilte Versionskontrollsystem, wurde kürzlich in der Version 2.26 veröffentlicht und bietet seinen Nutzern eine Reihe von bedeutenden Neuerungen sowie Verbesserungen bestehender Funktionen. Als kompaktes und vielseitiges Tool für Quellcode-Verwaltung, Bug-Tracking, Wiki und mehr, hebt diese neue Version die Benutzererfahrung auf ein höheres Niveau. Im Folgenden werden die wichtigsten Features und Erweiterungen vorgestellt, die Fossil 2.26 mitbringt, sowie deren Auswirkungen auf die tägliche Arbeit von Entwicklern und Teams.
Eines der Highlights von Fossil 2.26 ist die verbesserte Diff-Funktionalität. Insbesondere die Möglichkeit, als Argument für die --from-Option nun auch ein Verzeichnisnamen angegeben werden kann, erweitert den Anwendungsbereich deutlich. Dadurch lassen sich Dateivergleiche zwischen tatsächlichen Verzeichnissen und Versionen im Repository auf komfortable Weise durchführen. Für Nutzer der grafischen Oberfläche „gdiff“ wurde die Standard-Logik optimiert: Falls keine spezifische gdiff-Kommandoeinstellung existiert, versucht Fossil automatisch, einen visuellen Tk-Diff anzuzeigen, sofern „tclsh“ und „wish“ verfügbar sind.
Ist dies nicht der Fall, wird alternativ ein By-Diff generiert. Die Integration eines „Reload“-Buttons in den Tk-Diff-Fenstern ermöglicht es, die Anzeige stets auf dem aktuellsten Stand der im Dateisystem gespeicherten Änderungen zu halten. Außerdem wurde ein praktischer Umschalter zwischen „Diffs verstecken“ und „Diffs anzeigen“ zu den Web-UI-Diff-Seiten hinzugefügt, wenn mehrere Dateien verglichen werden. Diese UX-Verbesserungen machen das Betrachten von Änderungen wesentlich flexibler und übersichtlicher. Darüber hinaus führt Fossil 2.
26 eine neue Web-Seite namens /ckout ein, die Informationen zu ausstehenden Änderungen in der aktuellen Arbeitskopie bereitstellt. Diese Ergänzung hilft den Entwicklern, jederzeit den Überblick über nicht eingecheckte Modifikationen zu behalten und erleichtert die Verwaltung von Arbeitsergebnissen. Im Zusammenhang damit wurde auch der fossil ui-Befehl erweitert. Standardmäßig startet die Oberfläche jetzt mit der neuen /ckout-Seite. Wird jedoch die Option --from PATH angegeben, öffnet sich die Oberfläche mit der Startseite /ckout?exbase=PATH, womit vor allem Nutzer mit mehreren Arbeitsverzeichnissen profitieren.
Eine weitere clevere Neuerung stellt die Option --extpage FILENAME dar, mit der eine Datei als CGI-erweiterte Seite geöffnet werden kann. Das erleichtert das schnelle Reloaden und Überprüfen von Dokumenten oder Änderungsprotokollen per Browser, was den Entwicklungsworkflow beschleunigt. Netzwerkseitig wurde der Support für IP-Kommunikation ausgebaut. Fossil 2.26 akzeptiert nun sowohl IPv4- als auch IPv6-Verbindungen auf allen unterstützten Plattformen, darunter Windows und OpenBSD.
Diese Modernisierung betrifft auch den fossil server-Befehl und sorgt für eine bessere Anpassung an aktuelle Netzwerkinfrastrukturen sowie erhöhte Zukunftssicherheit. Im Bereich Versionsverwaltung und Merge-Vorgänge bringt Fossil 2.26 ebenfalls bedeutende Erweiterungen mit. Besonders hervorzuheben ist der neue Subbefehl fossil merge-info inklusive der --tk-Option, die detaillierte Analysen des jüngsten Merge- oder Update-Vorgangs liefert. Für Merge-Konflikte wurde der Konflikttext um eine Sektion erweitert, die speziell eine vom System empfohlene Auflösung des Konflikts anzeigt.
Diese Hilfe bei der Konfliktbearbeitung erleichtert das Zusammenführen von Branches deutlich und minimiert zeitaufwendige manuelle Eingriffe. Das Commit-Verfahren selbst wurde um praktische Sicherungen ergänzt. So warnt Fossil künftig, wenn das eingegebene Check-In-Kommentar potenzielle Formatierungsfehler, wie fehlerhafte Hyperlinks, beinhaltet. Entwickler haben dann die Option, den Kommentar vor der finalen Eingabe zu bearbeiten. Diese Methode wird durch die verify-comments-Einstellung gesteuert und bringt mehr Qualitätssicherung auf die Kommentarebene.
Durch die neue Option --if-changes wird das Commit zu einem leisen No-Op, wenn keine ausstehenden Änderungen vorliegen. Das ist insbesondere in automatisierten Skripten nützlich, wo unnötige Commits vermieden werden sollen. Eine innovative Funktion ist die Möglichkeit, Check-Ins durch SSH-Schlüssel digital zu signieren, was die Sicherheit und Verbindlichkeit von Einträgen erhöht. Zusätzlich erfolgte eine Erweiterung, die Warnmeldungen ausgibt, wenn ein Commit auf einem Branch durchgeführt wird, der sich zwischenzeitlich geändert hat. Die interaktive Eingabe für Check-In-Kommentare wurde verbessert, indem sie nun aktiv die für das Repository definierten Formatierungsregeln anzeigt.
Weitere neue Kommandozeilenoptionen wie --editor erweitern die Anpassbarkeit des Commit-Prozesses. Außerdem werden die veralteten Optionen --comfmtflags und --comment-format nun nur noch für Abwärtskompatibilität unterstützt, mit der „canonical“ Formatierung als neuem Standard. Die Timeline-Seite, ein zentraler Bestandteil jeder Versionskontrolle, wurde ebenfalls deutlich erweitert. Mit der Einführung des Parameters ml= („Merge-in List“) können Timeline-Ansichten nun gezielt auf „merge-only“-artige verwandte Check-Ins eingegrenzt werden. Die Reihenfolge der Branches in Graph-Darstellungen wird jetzt bei den Parametern tl=, rl= und ml= so gesteuert, dass sie der Reihenfolge in den Branch-Listen entspricht – was für Aufgeräumtheit und bessere Nachvollziehbarkeit sorgt.
Der „Match Style“-Parameter ms= wird dort genau beachtet und sorgt für flexiblere Sucheinstellungen. Zusätzlich steht der neue Sortierparameter sl=BRANCHLIST zur Verfügung, der festlegt, in welcher Reihenfolge die Zweige im Graphen dargestellt werden, unabhängig von vorherigen Sortierungen. Die durchgängige Unterstützung von Mustern mit GLOB-Zeichen wurde verbessert: Wenn in den Parametern „from=“ und ähnlichen GLOB-Zeichen vorkommen, setzt Fossil automatisch den ms=GLOB-Modus, wodurch Suchanfragen intuitiver funktionieren. Die Datumsfilter „ymd=YYYYMMDD-YYYYMMDD“ erlauben nun die Anzeige aller Ereignisse in einem definierten Zeitbereich und akzeptieren dabei den Zulu-Zeit-Zusatz "Z", etwa für UTC-basierte Zeitangaben. Eine weitere nützliche Neuerung ist die „min“-Option, die bei „from=“, „to=“ Query-Kombinationen lange aufeinanderfolgende Check-Ins auf demselben Branch kompakt auf die Endpunkte reduziert.
Durch die Erlaubnis, dass „p=“ und „d=“ unterschiedliche Check-Ins referenzieren können, wird die Filterung auf Check-Ins angewandt, die sowohl Ahnen von p= als auch Nachfahren von d= sind. Optisch sorgt ein automatischer Algorithmus dafür, dass bei Nutzer-definierten Hintergründen die Farbintensität so angepasst wird, dass die Darstellung zum gewählten Skin kompatibel bleibt. Auch abseits von Commit- und Timeline-Verbesserungen wurden diverse neue Web-Seiten eingeführt. Darunter befindet sich die /docfile-Seite, die ähnlich wie /doc funktioniert, jedoch die Titeldarstellung direkt innerhalb des Dokuments belässt, was eine bessere Übersichtlichkeit ermöglicht. Für Analysezwecke gibt es jetzt die /clusterlist-Seite, die beim Debuggen von Repository-Daten unterstützt.
Die SQL-Funktion artifact_to_json(NAME) wurde hinzugefügt, um Artefakte im JSON-Format auszugeben, was den Datenzugriff und die Integration in andere Tools erleichtert. Besondere Aufmerksamkeit erhielt außerdem das Patchmanagement: Ein Fehler beim Erstellen neuer Patches wurde behoben, der bei revertierten Dateien nach Merges auftrat, wodurch sonst Änderungen unter Umständen nicht korrekt übernommen wurden. Das verwaltet der neue Patch-Alias-Befehl, der Remote-Checkout-Namen effizient verwaltet. Das Hilfe- und Dokumentationssystem von Fossil wurde erweitert. Neben der Möglichkeit, im Web UI nach Hilfe-Inhalten zu suchen, kann nun auch von der Kommandozeile aus mit „fossil search -h PATTERN“ gezielt nach bestimmten Unterbefehlen oder Optionen gesucht werden.
Zudem differenzieren die Optionen -u und -o nun die Ausgabe in Syntax-Übersicht und detaillierte Optionen. Auch innerhalb des Ticket-Systems wurden nützliche Erweiterungen vorgenommen. Tickets können jetzt Wiki-Seiten als ausführliche Beschreibung anhängen. Über ein Submenü auf der Ticketansicht lässt sich ein Ticket als Vorlage für neue Tickets verwenden, was Workflows für häufig wiederkehrende Aufgaben beschleunigt. Ein praktischer Button „Submit and New“ erlaubt die schnelle Nacheingabe mehrerer Tickets.
Weitere Verbesserungen schließen die Verlinkung von Version-Feldern in der Ticketansicht mit zugehörigen Check-Ins oder Tags ein und zeigen Erstellungszeiten auf Berichten an. Administratoren profitieren von neuen Abo-Mechanismen, die bei Änderungen der Nutzerrechte automatisch Benachrichtigungen versenden. Außerdem wurde die Anzeige der Repository-Liste verbessert, indem jetzt Projektbeschreibungen und Login-Gruppen optional eingeblendet werden, steuerbar über die Umgebungsvariable FOSSIL_REPOLIST_SHOW. Auf Sicherheitsebene wurde das interne TH1-Skriptsystem überarbeitet, um eine Unterscheidung zwischen „kontaminierten“ und „unkontaminierten“ Strings einzuführen. Das minimiert Risiken bei der Erstellung benutzerdefinierter Skripte und verhindert potenzielle Cross-Site-Scripting- oder SQL-Injections.
Der neue vuln-report-Setting erlaubt die Feinjustierung des Verhaltens bei Sicherheitsrisiken. Bestimmte alte Optionen und TH1-Kommandos wurden im Sinne einer konsistenteren und sichereren Plattform entfernt. Die Chat-Komponente von Fossil wurde robuster gegen Server-Ausfälle gestaltet. Die Frequenz von automatischen Verbindungsversuchen wurde gedrosselt, und es werden Statusmeldungen angezeigt, wenn der Server nicht erreichbar ist. Zugriffsrechte auf die /sqlar-Seite wurden verschärft, so dass nicht angemeldete Nutzer nun keinen Zugriff mehr haben, außer wenn sie als „anonymous“ angemeldet sind und die entsprechenden Download-Rechte besitzen.
Zahlreiche weitere kleinere Fehlerbehebungen und Detailverbesserungen komplettieren den Release. Zusammenfassend zeigt der Fossil 2.26 Release, dass das Team großen Wert auf durchdachte Feature-Erweiterungen legt, die sowohl die Arbeit mit dem System erleichtern als auch technische und sicherheitstechnische Aspekte voranbringen. Die Mischung aus moderner Diff-Darstellung, erweiterten Web-UI-Funktionalitäten, einer stärkeren Sicherung der Commit-Kommentare und verbesserten Merge-Hilfen profitiert vor allem Teams, die Wert auf effiziente Zusammenarbeit und Nachvollziehbarkeit legen. Auch die stärkere Unterstützung aktueller Netzwerktechnologien wie IPv6 und die verbesserte Such- und Hilfe-Funktionalität tragen zu einer rundum gelungenen Weiterentwicklung bei.
Die Integration vieler neuer kleinerer Details und Ausbau bestehender Prozesse unterstreicht Fossils Anspruch, ein leichtgewichtiges, aber dennoch leistungsfähiges und sicheres Versionsverwaltungssystem zu bleiben. Für Entwickler, Teams und Administratoren ist der Umstieg oder die Aktualisierung auf 2.26 daher ein klarer Schritt nach vorn in Richtung einer modernen und zuverlässigen Softwarearchitektur.