Forum: PC-Programmierung Versionsverwaltung: wie Projekt organisieren?


von Max W. (Gast)


Lesenswert?

Mahlzeit,

ich arbeite daheim an einem mittelgroßen uC Projekt.
Die Funktion meines Gerätes ist relativ trivial, eine typische 
Bastleruhr mit paar lustigen Features.
Allerdings wird sehr viel verschiedene Controllerhardware benötigt, im 
Spiel sind ADC, UART, DCF77, Spi, Schieberegister usw.
Deswegen hab ich das nicht eben mal dreckig reingehackt sondern sauber 
modular aufgebaut, schöne Schnittstellen geschaffen und auf 
Wiederverwertbarkeit des Codes geachtet.
Jetzt hab ich eine schöne Codebasis, aus der ich mich für zukünftige 
Projekten bedienen kann.
Das ganze hab ich auch mit git als Versionsverwaltung gelöst, dadurch 
konnte ich je nach Belieben an verschiedenen Modulen simultan arbeiten, 
indem ich einfach den Branch gewechselt habe. Wenn ein Modul oder 
Feature fertig war hab ichs in den Hauptzweig gemergt. Somit haben auch 
alle meine Module eine saubere Versionshistorie.
Im root-Ordner meines Projektes liegt also der .git Ordner.

So, jetzt mein Problem.
Ich würde mein Gerät gerne um ein Feature erweitern.
Das Modul wird recht umfangreich, vielleicht sogar das Größte der 
bisherigen Software. Im Grunde könnte es fast schon als eigenständiges 
Projekt durchgehen. Wenn es fertig ist würde ich es gerne als OpenSource 
veröffentlichen, da es vielleicht dem ein oder anderen nützen kann und 
nicht speziell auf mein Projekt zugeschnitten ist.

Dementsprechend wäre mein erster Gedanke, ein eigenes Projekt mit 
eigenem git-Repository anzulegen.
Allerdings braucht dieses Modul eine Softwareumgebung, in der es laufen 
kann, sonst ist es nicht sinnvoll (ähnlich einer FAT-Bibliothek, die für 
sich alleine ja eigentlich wenig Nutzen hat). Da würde sich eben meine 
Uhr anbieten.
Aber dann wüsst ich spontan nicht, wie ich eine separate Projekthistorie 
kriege. Wenn ich mein Repository später mal auf github o.Ä. hochlade 
will ich da nicht meinen Uhrencode drinhaben weil der keinen 
interessieren wird.
Das spricht auch für ein eigenes Projekt, angereichert mit bisl Testcode 
drum herum, der das Modul nutzt.
Was dagegen spricht: das Projekt wird sich wohl hinziehen, und ich will 
dieses geplante Feature vielleicht schon teilweise in meiner Uhr nutzen. 
Daher würde es sich anbieten, das Modul eben doch im bisherigen 
git-Projekt zu entwickeln.

So, steh grad bisl aufn Schlauch. Wie würdet ihr dieses Projekt 
organisieren?
- Eigenes Projekt, und funktionierende Teilstände in die Uhr 
rüberkopieren?
- direkt im Uhrenprojekt entwickeln?

Grüße!

von Doc Brown (Gast)


Lesenswert?

Aus der Hüfte geschossen würde ich sagen: Mache ein neues Projekt, in 
welches Du Deinen "Uhrencode" als "Submodule" einfügst. Bin aber auch 
nicht der Git Experte, aber sollte so oder so ähnlich möglich sein.

von Florian H. (heeen)


Lesenswert?

deine buildumgebung anweisen das submodul aus uhr/../anderesmodul zu 
bauen
oder
symlink in uhr: anderesmodul -> ../anderesmodul
oder
gitignore nutzen um anderesmodul zu ignorieren, anderesmodul einfach 
unterhalb uhr entwickeln

von Eduard S. (schneehase)


Lesenswert?

Du kannst das mit git submodulen machen.
http://git-scm.com/book/de/Git-Tools-Submodule

Dein Uhr Projekt bleibt so bestehen.
Für dein neues Modul legst du ein neues git Projekt an.

Dann kannst du z.B. das neue Modul als submodul zur Uhr hinzufügen oder
auch Anders herum. Je nachdem was mehr Sinn ergibt.

Wenn du dein Modul so oder so veröffentlichen willst, mach es doch 
jetzt. Damit kann Jeder in deinen Code gucken und dir helfen.
Je früher desto besser. Hier gibt es Experten für C, C++, Python, 
Makefiles, etc. Der Eine oder Andere wird vielleicht mitmachen wollen 
und so kannst du dich z.B. auf deinen Code konzentrieren, während ein 
Anderer Bugs ausbügelt oder an Makefiles schraubt, oder oder ...

Wie wäre es mit github.com oder bitbucket.com. Bei Beiden kannst du 
opensource Projekte hosten. Bei bitbucket auch eine Hand voll Privater.

von Max W. (Gast)


Lesenswert?

Eduard Scheske schrieb:
> Du kannst das mit git submodulen machen.
> http://git-scm.com/book/de/Git-Tools-Submodule

Danke dir.
Eine frage dazu noch: das Modul, respektive "submodul" im git-Jargon, 
soll ja auch eigentständig testbar sein. Dementsprechend muss das 
Subprojekt eine eigene main.c und noch bisl Bastelcode mitbringen. Diese 
würden ja dann auch im "großen" Projekt landen.

Buildtechnisch macht das wohl keine Probleme, weil das makefile des 
Superprojektes unnötige Dateien ja ignoriert. Aber schön wärs halt wenn 
das submodul wirklich nur das notwendigste mitbringt, also eine 
submodul.h und eine submodul.c. Ansonsten würden unnötige Dateien das 
Superprojekt zumüllen.
Lässt sich das irgendwie handlen?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.