Seite 1 von 1

Wie Organisiert ihr euren Quellcode

Verfasst: Samstag 8. November 2008, 22:39
von veers
Ich würde gerne wissen wie ihr euren Quellcode Organisiert. Und zwar nicht innerhalb von Projekten/Produkten sondern eben genau diese.

Bei mir sieht das derzeit so aus:
Ich habe einen Ordner für checkouts/clones an denen ich nicht mitarbeite, wie Python o.ä.
~/checkouts/

Beispiel:
~/checkouts/python-trunk/

Dann habe ich einen code Ordner, welcher für jede Sprache einen Ordner enthält:
~/code/$primary_programming_language/$name/
Beispiel
~/code/python/lanshark

Dazu kommen noch diverse um einiges chaotischere Ordner dazu:
~/code/soi
~/code/spoj
~/code/ghop
~/code/finished/legacy/Coding/
~/Coding

Sowie für Kunden Projekte:
~/Projects/$customer/

Aber irgend wie ist das weder übersichtlich, noch simpel, noch ...

Als neue Struktur strebe ich derzeit folgendes an:
~/code/products/ Für "fertige" brauchbare Dinge
~/code/projects/$customer/$start_year - $name für Projekte/Aufträge
~/code/legacy/ für alten Kram den ich nicht sortieren mag.
~/code/sandbox/ für alles andere

Gruss,
Jonas

PS:
Dabei fällt mir noch etwas anderes auf, es wird ja oft von Opensource- oder Software-Projekten gesprochen. Was mir jedoch (zumeist) falsch erscheint. Produkt scheint eher angebracht zu sein. Gibt es da ein passenderes Wort?

Verfasst: Samstag 8. November 2008, 23:12
von Dauerbaustelle

Code: Alles auswählen

~/dev                       (development-root)
    client/                 (alles, was aufm Client läuft)
        app_1/ app_2/
    modules/                (selbstgeschriebene Module)
        module_1/ module_2/
    sandbox/                (Sandbox für Tests und Zeugs was keiner braucht)
        stuff1.py stuff2.py stuff3.py
    templates/              (Templates, z.B. für eine werkzeug-Applikation o.ä.)
        template_1/ template_2/
    web/                    (Webapplikationen- und -projekte)
        app_1/ app_2/
Gruß, Jonas ;)

Re: Wie Organisiert ihr euren Quellcode

Verfasst: Samstag 8. November 2008, 23:42
von lunar
Unterhalb von ~/devel sieht es bei mir so aus:

- ~/devel/projects für Projektcode
- ~/devel/sandbox – Tests, Benchmarkscripte, Lösungen für diverse Python-Programmieraufgaben ala pythonchallange, random stuff
- ~/devel/scripts – Kleinere Shell- und Python-Skripte
- ~/devel/snippets – Beispielcode für diverse Bibliotheken und Techniken (auch aus diesem Forum oder für dieses Forum)
- ~/devel/archiv – alte, nicht mehr fortgeführte Projekte

Skripte sortiere ich noch teilweise nach Einsatzzweck (z.B. ~/devel/scripts/win32) für Skripte, die diverse Stellschrauben eines Windows-Systems manipulieren. Möglicherweise sortiere ich die Projekte auch irgendwann noch mal nach Art des Projekts (z.B. Pakete, GUI-Anwendungen, Webanwendungen, etc.), aber noch habe ich da die Übersicht.

In ~/devel/projects liegen nicht nur eigene Projekte, sondern auch solche, an denen ich gelegentlich mitwirke. Projekte, bei denen ich nicht mitwirke, aber trotzdem gerne auf dem aktuellen Stand bin, liegen unter ~/share/src (da liegt z.B. ein Checkout vom python Trunk.)

Dann gibt es in ~/lib noch ein python2.6 Verzeichnis, welches ich für "python setup.py develop --prefix ~" nutze und in den $PYTHONPATH aufgenommen habe.
veers hat geschrieben:Dabei fällt mir noch etwas anderes auf, es wird ja oft von Opensource- oder Software-Projekten gesprochen. Was mir jedoch (zumeist) falsch erscheint. Produkt scheint eher angebracht zu sein.
Wieso?

Re: Wie Organisiert ihr euren Quellcode

Verfasst: Samstag 8. November 2008, 23:50
von veers
lunar hat geschrieben:
veers hat geschrieben:Dabei fällt mir noch etwas anderes auf, es wird ja oft von Opensource- oder Software-Projekten gesprochen. Was mir jedoch (zumeist) falsch erscheint. Produkt scheint eher angebracht zu sein.
Wieso?
http://de.wikipedia.org/wiki/Projekt hat geschrieben:Ein Projekt ist ein einmaliger Prozess, der aus einem Satz von abgestimmten und gelenkten Tätigkeiten mit Anfangs-und Endtermin besteht und durchgeführt wird, um unter Berücksichtigung von Zwängen bezüglich Zeit, Kosten und Ressourcen ein Ziel zu erreichen, das spezifische Anforderungen erfüllt.

Re: Wie Organisiert ihr euren Quellcode

Verfasst: Sonntag 9. November 2008, 00:15
von lunar
veers hat geschrieben:
lunar hat geschrieben:
veers hat geschrieben:Dabei fällt mir noch etwas anderes auf, es wird ja oft von Opensource- oder Software-Projekten gesprochen. Was mir jedoch (zumeist) falsch erscheint. Produkt scheint eher angebracht zu sein.
Wieso?
http://de.wikipedia.org/wiki/Projekt hat geschrieben:Ein Projekt ist ein einmaliger Prozess, der aus einem Satz von abgestimmten und gelenkten Tätigkeiten mit Anfangs-und Endtermin besteht und durchgeführt wird, um unter Berücksichtigung von Zwängen bezüglich Zeit, Kosten und Ressourcen ein Ziel zu erreichen, das spezifische Anforderungen erfüllt.
Und inwiefern passt diese Definition nun nicht zu Softwareprojekten?

Ein Opensource-Projekt wie beispielsweise KDE hat ja auch ein Anfangstermin (1998), ist einmalig (es gibt kein anderes KDE-Projekt, jede Desktopumgebung für Linux ist einmalig), wird gelenkt (KDE e.V.), und muss Zwänge hinsichtlich Zeit, Kosten und Ressourcen berücksichtigen (unfertiges KDE 4.0 Release). Auch ein ein solches Projekt Ziele, sowohl eher genereller Natur (eine Desktop-Umgebung für Linux zu erstellen) als auch ganz konkreter, unmittelbarer Natur (KDE 4.2 Feature Plan). Lediglich hinsichtlich des Enddatums ist diese Definition nicht direkt anwendbar, aber da kann man ja den Release Schedule des Projekts heranziehen.

Verfasst: Sonntag 9. November 2008, 00:26
von veers
Aber dann ist ja jedes Release ein Projekt, nicht?

Verfasst: Sonntag 9. November 2008, 00:29
von DasIch
veers hat geschrieben:Aber dann ist ja jedes Release ein Projekt, nicht?
Wieso? Endtermin ist erreicht wenn ein Projekt gestorben ist. Abgesehen davon denke ich nicht dass man die Definition da so genau nehmen muss, tut ja sonst auch keiner.

Verfasst: Sonntag 9. November 2008, 00:37
von Dauerbaustelle
@lunar: Die Aufteilung erscheint mir sinnvoll, plus 'modules' plus 'templates' für meine Zwecke ;)

Re: Wie Organisiert ihr euren Quellcode

Verfasst: Sonntag 9. November 2008, 02:08
von gerold
veers hat geschrieben:Ich würde gerne wissen wie ihr euren Quellcode Organisiert.
Hallo Jonas!

Ich miste laufend aus und verschiebe nicht mehr benötigte Ordner ins Archiv. Trotzdem glaube ich, dass ich doch mal wieder etwas ausmisten sollte... ;-)

http://halvar.at/krimskrams3/dev_tree.txt

Es sind halt verschiedene Programmiersprachen im Spiel. Einfach so die Ordner umbenennen und verschieben geht auch nicht. Dann müsste man die Programme umschreiben.

mfg
Gerold
:-)

Verfasst: Sonntag 9. November 2008, 09:56
von BlackJack
Ich habe mein Zeugs in einer recht flachen eher ungeordneten Verzeichnis"hierarchie". Ordnung kommt da erst durch ein lokales Wiki rein, wo die Verzeichnisse verlinkt sind.

Verfasst: Sonntag 9. November 2008, 11:33
von sma
Ich bin Chaot und habe daher einfach zwei Ordner Work und Privat, in denen sich Ordner für verschiedene Projekte ohne weitere Unterteilung finden. Wenn ich etwas wiederfinden muss, benutze ich Spotlight, die Mac-Desktop-Suche.

Stefan

Verfasst: Sonntag 9. November 2008, 13:53
von lunar
Dauerbaustelle hat geschrieben:@lunar: Die Aufteilung erscheint mir sinnvoll, plus 'modules' plus 'templates' für meine Zwecke ;)
Naja, "modules" sind ja auch "Projekte". Insofern sehe ich keinen Sinn, in der obersten Ebene nochmal zu unterteilen. Höchstens unterhalb von "projects", aber das tue ich erst, wenn ich da die Übersicht verliere.

Allerdings ist das mit den Vorlagen eine gute Idee, dass könnte ich mir auch mal anlegen. Allerdings wäre das für mich eher sinnvoll bei GUI-Anwendungen, da pylons mit paste script schon Vorlagen bietet.

Verfasst: Sonntag 9. November 2008, 20:45
von veers
DasIch hat geschrieben:
veers hat geschrieben:Aber dann ist ja jedes Release ein Projekt, nicht?
Wieso? Endtermin ist erreicht wenn ein Projekt gestorben ist. Abgesehen davon denke ich nicht dass man die Definition da so genau nehmen muss, tut ja sonst auch keiner.
Dieser Zeitpunkt ist jedoch normalerweise nicht definiert, und somit kein Termin ;)

~/Templates hab ich übrigens auch:
veers@vault:~$ ls ~/Templates/
cgi.py latex_article man pygtk python xhtml11

Verfasst: Sonntag 9. November 2008, 20:52
von lunar
veers hat geschrieben:
DasIch hat geschrieben:
veers hat geschrieben:Aber dann ist ja jedes Release ein Projekt, nicht?
Wieso? Endtermin ist erreicht wenn ein Projekt gestorben ist. Abgesehen davon denke ich nicht dass man die Definition da so genau nehmen muss, tut ja sonst auch keiner.
Dieser Zeitpunkt ist jedoch normalerweise nicht definiert, und somit kein Termin ;)
Ist das jetzt nicht ein kleines bisschen übertrieben? ;)

Verfasst: Montag 10. November 2008, 11:35
von numerix
BlackJack hat geschrieben:Ich habe mein Zeugs in einer recht flachen eher ungeordneten Verzeichnis"hierarchie". Ordnung kommt da erst durch ein lokales Wiki rein, wo die Verzeichnisse verlinkt sind.
Kann ich mir noch nicht so richtig vorstellen: Wie machst du es, wenn neue Projekte/Ordner etc. hinkommen? Musst du dann quasi eine "doppelte Buchführung" machen und manuell einen neuen Ordner anlegen und es im Wiki notieren? - Da du das vermutlich nicht tust: Wo/wie ist das automatisiert?

Verfasst: Montag 10. November 2008, 11:49
von BlackJack
Doch ich mache das manuell. Unglaublich aber wahr. Das Wiki ist auch viel zu unregelmässig, als das die eigentliche Einordung dort automatisiert erfolgen könnte.

Man könnte natürlich ein Skript schreiben, dass das "Projektverzeichnis" abgrast und Wikiseiten für Unterverzeichnisse erstellt. Das würde sich aber nur wirklich lohnen, wenn es davon regelmässig mehrere geben würde.

Eigentlich tritt auch eher der umgekehrte Fall ein: Aus einer Projektbeschreibung und Notizen im Wiki wird ein Projekt im Dateissystem. Das ist aber auch immer nur eins nach dem anderen.