Ich würde gerne wissen, ob es Sinn macht, das Projekt, an dem ich arbeite, in zwei Repositories anstatt in eines zu unterteilen.
Soweit ich sagen kann:
- Frontend wird in html + js geschrieben
- Backend in .net
- Das Backend ist nicht vom Frontend abhängig und das Frontend ist nicht vom Backend abhängig
- Das Frontend verwendet eine im Backend implementierte "Restful API".
- Das Frontend kann auf einem beliebigen statischen http-Server gehostet werden.
Das Repository hat ab sofort folgende Struktur:
Wurzel:
- Vorderes Ende/*
- Backend / *
Ich halte es für einen Fehler, beide Projekte im selben Repository zu belassen. Da beide Projekte keine Abhängigkeiten untereinander aufweisen, sollten sie in einzelne Repositorys und bei Bedarf in ein übergeordnetes Repository mit Submodulen gehören.
Mir wurde gesagt, dass es sinnlos ist und wir keinen Nutzen daraus ziehen werden.
Hier sind einige meiner Argumente:
- Wir haben zwei Module, die nicht voneinander abhängig sind.
- Langfristig kann es schwierig sein, die Quellhistorie beider Projekte zu haben (versuchen Sie, in der Historie nach etwas im Frontend zu suchen, während Sie die Hälfte der Commits haben, die überhaupt nichts mit dem gesuchten Fehler zu tun haben).
- Konflikt und Zusammenführung (Dies sollte nicht passieren, aber wenn jemand auf das Backend pusht, werden andere Entwickler gezwungen, Änderungen am Backend zu übernehmen, um Änderungen am Frontend zu pushen.)
- Ein Entwickler arbeitet möglicherweise nur am Backend, muss aber immer das Frontend ziehen oder umgekehrt.
- Auf lange Sicht, wenn es Zeit ist, bereitzustellen. In gewisser Weise könnte das Frontend auf mehreren statischen Servern bereitgestellt werden, während ein Backend-Server vorhanden ist. In jedem Fall werden die Benutzer gezwungen sein, entweder das gesamte Backend damit zu klonen oder ein benutzerdefiniertes Skript zu erstellen, um nur das Frontend auf alle Server zu pushen oder das Backend zu entfernen. Es ist einfacher, nur das Frontend oder das Backend zu schieben / ziehen als beide, wenn nur eines benötigt wird.
- Gegenargument (Eine Person könnte an beiden Projekten arbeiten), Erstellen Sie ein drittes Repo mit Submodul und entwickeln Sie damit. Die Historie wird in einzelnen Modulen getrennt gehalten und Sie können jederzeit Tags erstellen, bei denen die Version des Backends / Frontends wirklich synchron zusammenarbeitet. Wenn beide Frontends / Backends in einem Repo zusammengefasst sind, bedeutet dies nicht, dass sie zusammenarbeiten. Es verschmilzt einfach beide Geschichten zu einem großen Repo.
- Wenn Sie Frontend / Backend als Submodule verwenden, wird dies einfacher, wenn Sie dem Projekt einen Freiberufler hinzufügen möchten. In einigen Fällen möchten Sie nicht wirklich vollen Zugriff auf die Codebasis gewähren. Ein einziges großes Modul erschwert die Arbeit, wenn Sie einschränken möchten, was "Außenstehende" sehen / bearbeiten können.
- Fehlerbeschreibung und Fehlerbehebung: Ich habe einen neuen Fehler in das Frontend eingefügt. Dann hat jemand einen Fehler im Backend behoben. Mit einem einzigen Repository wird durch das Zurücksetzen vor dem neuen Fehler auch das Backend zurückgesetzt, was die Behebung erschweren könnte. Ich müsste das Backend in einen anderen Ordner klonen, damit das Backend funktioniert, während ich den Fehler im Frontend behebe ... und dann versuche, die Dinge neu zu ordnen ... Wenn zwei Repositorys vorhanden sind, ist es schmerzlos, den HEAD eines Repos zu verschieben den anderen nicht ändern. Und das Testen mit verschiedenen Versionen des Backends wird schmerzlos sein.
Kann mir jemand mehr Argumente geben, um sie zu überzeugen, oder zumindest sagen, warum es sinnlos (komplizierter) ist, das Projekt in zwei Teilmodule zu unterteilen. Das Projekt ist neu und die Codebasis ist ein paar Tage alt, so dass es nicht zu früh ist, es zu beheben.