staging.inyokaproject.org

Newbie-Fragen zu git - Zusammenführung von Upstream-Tarball und meinem Repository / Branches

Status: Ungelöst | Ubuntu-Version: Kein Ubuntu
Antworten |

Mankind75 Team-Icon

Lokalisierungsteam
Avatar von Mankind75

Anmeldungsdatum:
4. Juni 2007

Beiträge: 3374

Liebes Forum,

seit einiger Zeit arbeite ich mit dem betriebswirtschaftlichen Programm "SQL Ledger" wobei upstream kein git vorhanden ist sondern alles in einem Tarball ausgeliefert wird. Die Software steht unter GPL Version 3.

Dabei konzentriert sich mein Projekt "ledgerplus" insbesondere auf die Lokalisierung und Vervollständigung der Sprachpakete sowie die Entwicklung und Lokalisierung von Kontenrahmen und steht auf Versionsstand 3.2.9

Vor einiger Zeit hat "upstream" Version 3.2.10 freigegeben und ich habe bislang (aus Unwissen) quasi alles auf die Masterbranch abgebildet.

Wie kann ich jetzt idealerweise Version 3.2.10 in mein Repository einbinden ohne, dass meine Sprachmodifikationen etc. gelöscht werden? Würden da Branches Sinn machen?

Ich hoffe, dass ihr mir helfen könnt und bedanke mich schon einmal vorab für hilfreiche Hinweise. Mkd75

MisterIgo

Anmeldungsdatum:
23. April 2009

Beiträge: 947

Ich würde das wie einen normalen Fork abbilden, bei dem der Upstream "sehr große" Commits macht. D.h., dass du einen "upstream"-Branch pflegst, auf dem du immer die Releases von upstream einpflegst, und dann deine eigenen entweder auf die jeweils neuste Version rebased oder mit der neusten Version merged.

Siehe

man git-rebase
man git-merge

für schöne Grafiken, wie das dann im Git-Repository aussieht.

Für den Rebase-Ansatz wäre das in deinem Fall konkret das hier (ungetestet, am besten nach jedem Befehl den Stand des Git-Repositories kontrollieren mit git status und git log):

git checkout e2358d24 # das ist der Commit "Initial import from version 3.2.9"
git tag v3.2.9-upstream # einfach mal markieren, schadet nicht
git checkout -b upstream # neuen Branch "upstream" an genau dieser Stelle erstellen. Auf diesem Branch werden ab jetzt alle Änderungen des upstream getrackt
unpack_tarball # diese Funktion gibt es natürlich nicht. Hier müssen die Befehle hin, die den aktuellen Tarball wieder in das Git kopieren
git add .
git diff --staged # einmal anschauen, dass der neue commit auch sinnvoll aussieht
git commit -m "updating to 3.2.10" # dann den upstream code committen
git tag v3.2.10-upstream # markieren schadet nicht
# ab hier hast du ein Repository, das auf dem Branch "master" so aussieht, wie bisher und einen zusätzlichen Branch "upstream", der nur die Commits enthält, die 3.2.9 und 3.2.10 einpflegen
# jetzt kannst du entscheiden, wie du das mergen willst, ob du z.B. separate Branches für die verschiedenen Upstream-Versionen haben willst, etc.
# Für den Rebase-Fall:
git checkout master # wieder zurück auf master
git branch v3.2.9 # einen neuen Branch an der gleichen Stelle erstellen, um den Master zu "backuppen", da wir den gleich verändern
git rebase upstream # alle Commits auf den Branch "upstream" rebasen

Mankind75 Team-Icon

Lokalisierungsteam
(Themenstarter)
Avatar von Mankind75

Anmeldungsdatum:
4. Juni 2007

Beiträge: 3374

Wollte mich noch herzlich bedanken obwohl die Antwort etws spät kommt. Hast mir sehr geholfen.

Antworten |