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!
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.
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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.