2010-04-06 13 views
5

Ich habe 2 Projekt, und eigentlich diese 2 Projekt ist etwa 80% gleiche einander, der Hauptunterschied ist nur über Sprache und Geschäftsmodell, man ist für ein größeres Publikum mit englischer Sprache und haben eine 9 $/Geschäftsmodell, ein anderes verwendet lokale Sprache mit Freemium Geschäftsmodell.Wartung Projekt mit Git

Irgendwann, wenn ich neue Funktion hinzufügen möchte, möchte ich es in beiden des Projekts hinzufügen, aber auch irgendwann möchte ich Feature nur für das lokale Projekt hinzufügen.

Meine Frage ist, wie behalte ich diese 2 Projekt mit Git?

  1. Pflegen 2 Git Repository für jedes Projekt oder
  2. pflegen einzelnen Git Repository mit 2 hauptsächlich verzweigen oder
  3. Alle anderen Vorschlag?

Antwort

8

erstellen drei git Projekte:

  • ein "Kern" Projekt: es enthält die Code geteilt zwischen den beiden anderen Projekte

  • Ihr Englisch Projekt: es hat Submodul für den Kern plus spezifische Code

  • Ihr übersetztes Projekt: es hat auch ein Submodul für den Kern plus spezifischen Code

diese Weise können Sie Ihr Kern Projekt ändern können, die Submodul Referenzen aktualisieren und Sie wären gut

+0

Submodule sind der Weg dafür. Jeder muss genau wissen, was passiert, aber sobald es soweit ist, ist es die geringste Arbeit. –

2

Ist es möglich, damit Sie das über Konfiguration und Lokalisierung handhaben können? Das heißt:

  • Eine Codebasis
  • Zwei Dateien Lokalisierung enthält englisch- und lokalsprachigen Strings
  • Konfiguration für jede Version der Website, um die Zahlungsmodell/aktivierte Funktionen zu bestimmen und Verhaltensänderung entsprechend

Meine persönliche Sicht ist, dass ein Projekt = ein Repository. Wenn Ihre Websites deutlich anders sind, dann kann Ihr Problem nach wie vor besser gelöst werden, wenn Sie den gemeinsamen Code in Module umwandeln, die auf vernünftige und kontrollierte Weise konfiguriert und geändert werden können. Wenn Sie jedem Projekt erlauben, sein eigenes Git-Repository zu haben, dann könnten sie ohne harte Arbeit leicht divergieren und Unterschiede enthalten, die nicht leicht zu verfolgen sind, was zu kleinen Fehlern oder ungeprüften Funktionen führt.