Der einfachste Ansatz besteht darin, ein einziges Repository zu verwenden. Wenn Sie also Komplexität nicht aus Gründen der Komplexität bevorzugen, sollte dies die Standardauswahl sein, wenn keine zwingenden Argumente vorliegen.
Wird die Client- und Serverentwicklung von verschiedenen Organisationen durchgeführt? Wird es mehrere Implementierungen des Clients (oder Servers) geben? Ist der Client Open Source und die Server-Implementierung geheim? Wenn die Antwort auf all diese Fragen "Nein" lautet, ist es wahrscheinlich, dass alles, was komplexer ist als ein einzelnes Repository, nur Unannehmlichkeiten mit sich bringt, die keinen Nutzen bringen.
Wenn Sie sich dafür entscheiden, separate Codebasen zu verwalten, benötigen Sie klare Richtlinien zur Verwaltung, um Inkompatibilitäten und Abhängigkeiten zu vermeiden. Nachdem Sie die ersten Schluckaufe durchgearbeitet haben, stellen Sie möglicherweise fest, dass es am sichersten ist, beide Repositorys immer zusammen zu überprüfen, zusammen aufzubauen und zusammen bereitzustellen ... was offensichtlich den ganzen Zweck der Trennung zunichte macht!
Modularität ist eine nette Eigenschaft, aber das Aufteilen von Repositorys ist kein Werkzeug, um dies zu erreichen. Wie der vorherige Absatz impliziert, können Sie hochgradig gekoppelte Komponenten haben, die über mehrere Codebasen aufgeteilt sind (unerwünscht), und Sie können ebenfalls hochgradig modulare Komponenten innerhalb derselben Codebase haben (wünschenswert).
Bei mehr als einer Gelegenheit habe ich mich (erfolgreich) dafür ausgesprochen, dass mein Team vorhandene Git-Repositorys zusammenführt, da dies die Entwicklung und Bereitstellung vereinfacht.