2014-02-06 4 views
6

Ich beginne ein neues Projekt und versuche zu entscheiden, wie ich den Code in Bitbucket organisieren soll. Ich arbeite in einem Startup, wo wir alle technische Erfahrung haben, aber keiner von uns hat in Softwareentwicklungsunternehmen gearbeitet. Wir haben darüber gestritten, wie wir unseren Code am besten in unserem bitbucket-Repository organisieren können.Ist es in Ordnung, zwei verschiedene Arten von Code in demselben git-Repository zu speichern?

Wir haben einige PHP-Code für das Frontend unserer Website, und einige Matlab für das Backend (das Matlab wird eingehalten, um mit dem PHP zu arbeiten, aber ich denke nicht, dass das relevant ist). Der PHP-Code wird ausschließlich für die Website verwendet, aber das Matlab wird von vielen Entwicklern bearbeitet, die Änderungen vornehmen, von denen einige für die Website relevant sind und andere nicht.

Wir haben mit drei Regelungen kommen, wie Sie den Code organisieren:

Schema 1: Legen Sie die Matlab und PHP im gleichen Repository. Verzweige das Matlab in "Website" (a.k.a stabile Hauptfiliale), "Develop1", "Develop2", usw. Die Entwickler arbeiten auf ihrer eigenen Zweigstelle, und periodisch verbinden wir die Develop Zweige in die Website Zweigstelle.

Schema 2: Legen Sie Matlab und PHP in das gleiche Repository. Entwickler, die am Matlab arbeiten möchten, verzweigen das Matlab in andere Repositories und übermitteln dann Pull-Requests, wenn sie ihren Code mit dem Matlab-Code der Website zusammenführen möchten.

Schema 3: Setzen Sie die PHP in ein Repository und das Matlab in ein anderes. Dann verzweigen sich die Entwickler wie oben beschrieben.

Was sind Ihre Gedanken? Der DBA in unserem Unternehmen sagt, dass es eine schreckliche Idee ist, zwei Arten von Code in ein und demselben Repository zu speichern (und irgendwann wären es drei, da wir den Matlab-Code langsam auf C oder eine andere Sprache umstellen würden) . Auf der anderen Seite mache ich mir Sorgen, dass es schwierig sein wird zu verfolgen, welche Versionen für PHP und Matlab miteinander arbeiten, wenn sie sich in separaten Repositories befinden.

las ich eine Reihe von Stellen auf Stack-Überlauf, der meine Fragen teilweise beantwortet:

Das half mir, den Unterschied zwischen den Zweigen und Gabeln zu verstehen - es mir erscheinen würde, dass Zweige einfach mehr Vertrauen in die Entwickler benötigen, da Sie können ohne Erlaubnis oder Code-Überprüfung zusammenführen.

git branch, fork, fetch, merge, rebase and clone, what are the differences?

Dies scheint auf meine Frage sehr nahe, obwohl, wenn ich es mit dem DBA zeigte, sagte er, es ist kein gutes Beispiel ist da Java und Javascript so ähnlich ist. Allerdings geschrieben die Antwort hier scheint mein Schema 1.

How to organize shared code/assets across projects with git repositories

Dies auch darauf hat mir geholfen, im Allgemeinen besser Zweige und git zu verstehen.

http://tom.preston-werner.com/2009/05/19/the-git-parable.html

Diese Antwort scheint auch zu vermuten, dass auch Code, dass keine Dateien gemeinsam nutzen im gleichen Repository sein sollte, wenn es Teil des gleichen Projekts ist.

Should I separate client and server side of my project into two Git repositories, or keep them in one?

Antwort

10

Verwenden Sie nur ein Repository. Es gibt absolut keinen Grund, nur aufgrund der Sprachen zwei Repositories zu erstellen.Die meisten Projekte verwenden sowieso mehr als eine Sprache (zum Beispiel hätte eine Web-Anwendung einen Server-Teil, sprich Java oder Go, einige HTML-, CSS- und JavaScript-Dateien, ein paar Shell-Skripte, einige SQL-Skripte, einige Dienstprogramme usw.).). Verwenden Sie nur zwei Repositories, wenn Sie eines ohne das andere in irgendeiner Weise verwenden können und Sie eine saubere Schnittstelle zwischen ihnen angegeben haben (in diesem Fall, könnte es nützlich sein, zwei Repositories zu machen, aber das ist natürlich nicht Ihr Fall). Ihre Sorge ist richtig: Getrennte Repositories zu synchronisieren ist ein Albtraum.

Und Zweige werden überhaupt nicht verwendet, um Sprachen zu trennen. Sie ermöglichen es Ihnen, verschiedene Versionen Ihres gesamten Codes zu haben (Entwicklung einer neuen Funktion, Speicherung einer freigegebenen Version, damit Sie zu einer Reparatur zurückkehren können, mit einem speziell getesteten Zweig für die Produktion usw.).

Beachten Sie auch, dass Sie Klone des Endlagers haben kann (zur Erinnerung: git ist verteilt), können Sie auch entscheiden, dass es ein Repository, auf dem nur wenige Maintainer Schreibzugriff haben, und sie holen aus anderen Repositories. Aber zu diesem Zeitpunkt, mit Ihrer Erfahrung, möchten Sie vielleicht eine Lösung über Git anstelle von reinen Basis-Git verwenden, sei es kommerzielle (Suche nach Atlassian, GitHub, etc.) oder frei (gitolith zum Beispiel).

+0

In Verbindung mit Ihrem letzten Absatz, ist Bitbucket "eine Lösung über Git gebaut"? Ich bin mir nicht sicher, was du damit meinst. – eam55

+0

Bitbucket können Sie Git oder Mercurial ja verwenden. Und jetzt gehört bitbucket zu Atlassian (was auch [Stash] (https://confluence.atlassian.com/display/STASH/Getting+started+mit+Git+and+Stash)). Für professionelle Teams empfehle ich Bitbucket zu vermeiden und Stash zu wählen. –