Wie sollte ich Test-Kabelbäume in Git verwalten - Sollten sie in einem separaten Repo sein?

8

Ich habe ein großes (ish) Projekt [90 Dateien 650kb Code], das ich jetzt in Git verwalte. Ich habe ein paar unabhängige Test-Kabelbäume verwendet, um neue Low-Level-Bits der Berechnung zu testen / zu testen, die später in den Haupt-Code und seine Zweige (derzeit durch Kopieren-Einfügen!) Zusammengeführt werden.

Was ist die empfohlene empfohlene Vorgehensweise zum Verwalten der Test-Kabelbäume?

Sollten sie sich in einem separaten Repository befinden, oder sollte ich eine leere Verzweigung im Hauptrepo erstellen, um sie zu starten, oder einfach einen Zweig "Testumgebung" erstellen und den alten Code überschreiben?

Der erhoffte Vorteil ist, dass der getestete Code in der Hauptzweig nachweislich 'der gleiche' sein wird wie der, der getestet wurde.

Ich bin auf Windows (msysgit) und ich bin der führende "Explorer" für die Verwendung von Git in der Firma.

    
Philip Oakley 21.04.2011, 14:57
quelle

3 Antworten

8

Die übliche Struktur, die ich in den meisten Projekten gesehen habe, ist, eine Verzeichnishierarchie test/ parallel zu src/ einzufügen und sie dort zu speichern (im selben Repository).

    
Daenyth 21.04.2011 15:26
quelle
1

90 Dateien und 650 KB Quellcode ist definitiv nicht groß. Es ist besser, die Testumgebung / Test-Suite usw. zusammen mit Ihrem Quellcode im selben Repository zu halten. Überprüfen Sie einige der Repositorys in github (zum Beispiel: PLY ) und entscheiden Sie, wie Sie Ihren Quellcode und Ihre Testsuite organisieren.

    
sateesh 21.04.2011 16:28
quelle
1

Die Anzahl und Größe Ihrer Dateien ist gut innerhalb der Fähigkeit von git, all das als ein Repo zu behalten. Selbst wenn du sie um eine oder zwei Größenordnungen hochgestoßen hast. Die wahren Gründe also, sie in zwei Repos aufzuteilen oder sie in einem einzigen Repo zu halten, hätten mit der Benutzerfreundlichkeit zu tun, nicht mit den technischen Grenzen des Git.

Ich möchte Tests in demselben Repo wie den Code, den sie testen, behalten. Wenn ich den Code aktualisiere, um neue Funktionen hinzuzufügen, aktualisiere ich die Komponententests, und es ist schön, die beiden synchron zu haben.

Wenn ich Code hinzufüge, um einen Fehler zu beheben und einen Regressionstest hinzuzufügen, sind die beiden synchron wieder nett.

Wenn Einheits- und Regressionstests mit dem Code synchron sind, wenn ich eine alte Revision auschecke, weiß ich, dass die gebündelten Tests alle bestehen sollten. Alle Fehler, die ich einer anderen Komponente im System zuschreiben kann (z. B. ein Betriebssystem oder ein Werkzeugwechsel), was mir hilft, solche Dinge ohne Störungen zu erkennen, indem ich rate, welche Tests "erwartete Fehler" sein könnten.

Der Nachteil ist, wenn ich merke, dass bei meinen Unit-Tests etwas fehlt, ist es nicht einfach, es rückwirkend hinzuzufügen, wo es hätte sein sollen. Allerdings finde ich, dass ein kleiner Nachteil, dann viele "Schätze, es könnte in Ordnung sein" Fehler bei der Überprüfung, um zu sehen, ob letzten Aprils Code mit einem neuen Subsystem oder andere funktioniert.

Ihre Kompromisse könnten jedoch anders sein. Möglicherweise bietet Ihre Managementkette keine ausreichende Unterstützung für umfangreiche Komponententests, die hinzugefügt werden müssen, wenn neue Funktionen hinzugefügt werden. Daher haben Sie möglicherweise einen höheren Prozentsatz an Tests, die Sie rückwirkend anwenden möchten. Vielleicht sind Sie besser darin, Funktionsänderungen über ein lesbares Attribut zu exportieren, und Ihre Testgruppen können erwartete Fehler einfach nicht ausführen. Vielleicht werden Ihre Tests von einer anderen Gruppe als dem Code verwaltet. Irgendwelche davon könnten das Gleichgewicht verschieben.

    
Stripes 21.04.2011 17:50
quelle