2016-07-26 9 views
1

Ich möchte um einige Ratschläge in Bezug auf Code-Management bitten. Ich habe ein Projekt mit einem Kerncode, der für alle gleich funktioniert. Jeder Client erhält seine eigene Version des Codes mit ein paar Bildern ersetzt und ein paar Zeilen Code, die unterschiedlich sind (wie eine API-URL, Server-Adresse und Update-Adresse).Git-Kern-Code-Verwaltung

Ich habe das mit git-Zweigen versucht, aber sobald ich etwas im Kerncode ändere, muss ich alle git-Zweige mit dieser Änderung aktualisieren, während ich die pro-Client-Änderungen behalte.

Gibt es eine einfachere, elegantere Möglichkeit, dies zu tun? Oder etwas in Git gebaut, um dies zu tun?

Ich frage das im Stapel seit ich keine Ahnung habe, wie ich bei Google formulieren würde was ich will.

+0

Sie können diese persönlichen Dateien aus dem Git Repo lassen und sie zu Ihrer '.gitignore' Datei hinzufügen. Gibt es einen Grund, warum jemand diese nicht freigegebenen Dateien jemals mit dem Repository synchronisieren müsste? –

+0

Es gibt. Es ist eine App, und andere Leute müssen diese auch erstellen, falls ich nicht in der Lage bin, eine neue App zu erstellen. – Roboroads

+0

Entweder ist die Datei Teil des Repos, ist es nicht oder ist es, aber es wird irgendwie ignoriert. In jedem Fall kann ein Teil einer Datei nicht synchronisiert und der andere Teil nicht synchronisiert werden. Im Allgemeinen ist alles mit Git erledigt. –

Antwort

1

Sie mischen Code und Konfiguration, keine gute Sache, wie Sie herausgefunden haben.

Zuerst trennen Sie die beiden sauber, d. H. Stellen Sie sicher, dass der Code vollständig frei von solchen Konfigurationswerten ist (keine IP-Adressen innerhalb des eigentlichen Quellcodes codiert). Entfernen Sie die Optionen in den Konfigurationsdateien und ändern Sie den Code, damit die Werte von dort abgerufen werden.

Jetzt, je nachdem, wie viele Clients Sie haben, könnten Sie einfach ein Verzeichnis mit vielen Konfigurationsdateien haben (zusammen mit zusätzlichen Dateien, wie die Bilder, die Sie im Unterverzeichnis als notwendig/praktisch strukturiert); Zur Bauzeit würden Sie nur einen von ihnen auswählen. Natürlich würde Ihr Build-Prozess die Konfigurationsdateien nicht von den anderen Clients bereitstellen.

Solange die Dateien sauber getrennt sind, können Sie sie alle zusammen in Ihrem Hauptzweig haben. Ich gehe davon aus, dass Sie Ihr Repository nicht an Ihre Kunden übermitteln. Es besteht also kein Sicherheitsaspekt.

+0

Sie haben mich angefangen zu denken. Die Variablen, die geändert werden müssen, befinden sich in einer Konfigurationsdatei im Repo. Ich könnte versuchen, ein Batch-Skript zu erstellen, das die Konfigurationsdatei des Kunden in das Projekt kopiert und es erstellt. – Roboroads