2017-07-08 1 views
1

Ich habe ein Git Repository mit einem master Zweig auf dem origin Remote. Andere Entwickler im Team schieben ihre eigenen dev/feature Zweige auf dieselbe Fernbedienung. Eventuell werden diese Zweige entweder verworfen oder Squash -gespeichert in master und später gelöscht.Kann man einen Zweig in der gleichen Fernbedienung aufblähen?

Jetzt sind einige Entwickler im Team nicht vertraut mit Git und neigen dazu, die Geschichte ihrer Feature-Zweige durch Hinzufügen von Binärdateien usw. zu erweitern. Schließlich werden sie eine Pull-Review-Anfrage senden, die überprüft werden muss, und Prüfer werden erzwingen dass keine Binärdateien hinzugefügt werden.

In diesem Szenario erwarte ich, dass die dev/feature Zweige aufgebläht werden (z. B. könnte Git langsam werden, ziehen/Klonen sie eine Weile dauern, usw.). Die Frage ist, ob dies Leistungsprobleme für Leute verursacht, die gerade mit anderen Zweigen in derselben entfernten Umgebung arbeiten, die nicht aufgebläht sind.

+0

Erwägen Sie die Verwendung von [git-lfs] (https://git-lfs.github.com/) für die Binärdateien, um Repo-Blähungen zu vermeiden, während in der Versionskontrolle weiterhin Binärdateien vorhanden sind. – Schwern

+0

Wenn Sie keinen Branch-Access-Contronl-Mechanismus haben, den Git selbst nicht hat, erhalten andere Devs auch die binär-verwandten Git-Daten, wenn sie clone/pull/fetch verwenden. – ElpieKay

Antwort

2

Die Frage ist, ob dies Leistungsprobleme für Leute verursacht, die gerade mit anderen Zweigen in der gleichen Fernbedienung arbeiten, die nicht aufgebläht sind.

Wenn die aufgeblähten Zweige gedrückt werden, ja, es wird andere die Leistung auswirken, sondern nur für git fetch (die git pull enthält). Es wird standardmäßig den gesamten Verlauf und den vollständigen Inhalt jeder Verzweigung herunterladen. Es gibt verschiedene Möglichkeiten, wie git clone --single-branch nur master zu bekommen, aber es gibt eine bessere Lösung unten.

Aber es sollte andere Operationen nicht beeinflussen. git diff, git log, etc ... sollten alle weitgehend unberührt sein.

Anstatt Benutzer daran zu hindern, Binärdateien in die Versionskontrolle zu übernehmen oder nur bestimmte Zweige zu klonen, verwenden Sie git-lfs. Dies ist das Beste aus beiden Welten. Sie können Binärdateien in die Versionskontrolle einfügen, aber der eigentliche Inhalt wird außerhalb des Repositorys gespeichert, um ein Aufblähen des Repositorys zu vermeiden.

+0

git-lfs ist eine großartige Option, aber wie ich weiß, müssen wir einen Satz von Pfad-Glob-Mustern einrichten, die von git-lfs (z.B. * .png, * .a) verfolgt werden. Meine Befürchtung ist, dass die Leute unweigerlich damit enden, Binärdateien einzureichen, die alle von uns festgelegten Muster umgehen. – roim

+0

@roim Mit einem anständigen Netzwerk sollte es kein Problem sein, wenn gelegentlich ein Binär-Commit stattfindet. Und Sie können es rückwirkend mit der BFG beheben. Und da Sie Squash-Zweige verschmelzen, wird jeder aufgeblähte Verlauf in diesem Zweig Müll gesammelt. – Schwern

+0

ah, also ich denke, ich habe dies aus der Antwort verpasst: Wenn die Feature-Branches gelöscht/Müll gesammelt werden, wird der Bloat enden. Ist das der Fall? Wenn ja, könnte es sich lohnen, die Antwort zu ergänzen, und ich werde nachts gut schlafen, auch wenn wir nicht mit git-lfs enden. Ich liebe die Idee von lfs, aber die Unterstützung dafür ist in meiner Umgebung immer noch etwas experimentell. – roim

Verwandte Themen