2012-09-04 15 views
5

In meiner Firma haben wir eine Basissoftware, die für jeden Kunden angepasst wird. Heute mit SVN haben wir ein Setup wie folgt:Best Practice für mehrere benutzerdefinierte Projekte und Git

/trunk 
/tags 
    … 
/branches 
    /client_project_x 
    /client_project_y 
    /client_project_z 

Wie wäre der beste Weg, dies in Git zu organisieren? Verfügen Sie über ein Remote-Repository für jedes Projekt und eines für den Basiscode oder ein großes Remote-Repo mit mehreren Zweigen?

Wenn wir einen großen Remote-Repo mit mehreren Zweigen verwenden, gibt es eine Möglichkeit, nur einen Zweig aus einem Remote-Repository zu klonen.

Antwort

2

Konzeptionell besteht kein Unterschied zwischen mehreren Zweigen in einem Repository und Zweigen in mehreren Repositories. Der ganze Sinn von DVCS besteht darin, diese Unterscheidung zu beseitigen. Sie wollen es in Bezug auf die Menschen denken, die auf jeden gegebenen Zweig zugreifen und steuern müssen. Wenn es für jeden Entwickler üblich ist, von jedem Client aus auf den Code zuzugreifen, wird es einfacher, sie alle in einem zentralen Repo abzulegen. Sie können auswählen, welche Zweige geklont werden sollen oder nicht, obwohl das Klonen eines gesamten Repos am einfachsten ist. Wenn Sie in verschiedenen Zweigen sehr unterschiedliche Zugriffsberechtigungen benötigen, sollten Sie separate Repos für sie erstellen.

Mit anderen Worten, richten Sie es so ein, wie es für die Entwicklungs- und Testteams einfacher ist.

+0

Wie wähle ich welche Zweige ich klonen möchte? –

+0

Schauen Sie [hier] (http: // stackoverflow.com/questions/4811434/git-clone-only-one-branch). –

1

Separate Projekte sollten sich in separaten Repositories befinden.

(Es ist so einfach wie das mit git Es gibt keinen Vorteil und viele potentielle Nachteile zu viele unabhängige halten -. Oder lose in Verbindung stehend - Projekte in einem einzigen Repository entweder in einem großen Baum oder in getrennten Zweigen.)

+0

Gibt es Tipps, wie Sie mehrere selbst gehostete Repos so verwalten können, dass Sie einfach ein neues Remote-Repository erstellen können? –

+0

@MarcoPompei: 'git init --bare' an einem geeigneten Ort ist der einfachste Weg, um ein" zentrales "gemeinsames Repository zu erstellen. –

0

git wurde geboren, um die Zweige/Zusammenführungszweige so einfach zu machen, also machen Sie einfach Zweige wie Sie wollen für neue Funktionen, testen Sie Funktionalitäten, arbeiten Sie mit Untergruppen, ohne den Rest des Unternehmens zu beeinflussen! Linux zum Beispiel hat Tausende von Niederlassungen, und sie wachsen!

Uhr this video für Linus Torvalds, die Ihnen helfen wird, die "in Gedanken" -Werte zu verstehen, die er während der Entwicklung von Git hat.

0

verwende ich mehrere repos:

Der Kern ist in einem Repository, jedes Plugin und jeder Client sein eigenes Repository haben:

  • modwork (Kern)
  • modwork_foo (Konfiguration für Client „foo „)
  • modwork_app1 (eine App, die für mehrere Clients installiert werden können)

Nein einzelne Datei im Kern wird während des Installations- oder Erstellungsvorgangs geändert. Jeder Kunde hat denselben Kern. Der Kern enthält Hooks für benutzerdefinierte Methoden.

Ich möchte nicht Dateien im Kern in Filialen für Clients ändern. Ich denke, das wird schwierig, wenn Sie mehr als 5 Kunden haben.