Versioning-System auf Python- und SQL-Basis

Du hast eine Idee für ein Projekt?
Beyond

Versioning-System auf Python- und SQL-Basis

Beitragvon Beyond » Donnerstag 22. August 2002, 08:43

Jeder der schon bei umfangreicheren Projekten mitgearbeitet hat weiß,
wie wichtig ein gutes Versioning-System ist. Allerdings sind die meisten
proprietär, teuer und schwer erweiterbar.
Das freie, viel benutzte CVS hat einige Schwächen die einem das Leben schwer machen z.B. geht beim Umbenennen einer Datei die gesammte Datei-History verloren...
Ein Versioning-System, das auf Python und SQL basiert, sollte besser erweiterbar sein und ermöglich durch die Datenbank auch weit mehr Möglichkeiten seinen Quellcode zu durchsuchen und zu warten.
Ich habe bereits ein paar Tests in diese Richtung gemacht und sie waren recht vielversprechend. Teile davon könnte man dann als Grundlage für ein neues Versioning-System verwenden. Eine genaue Strukurierung konnen wir noch ausarbeiten bisher besteht es aus einem Server und Clients. Der Server verwaltet den Code mittels der Datenbank und fordert von den Clients Daten oder beliefert sie damit. Der Client hat ein Modul das sich um die Datenverwaltung auf dem Client-Rechner kümmert d.h. : ein checkin, checkout oder update ... durchführt und mit Hilfe des Servers feststellt welche Dateien aktuell, neuer, älter oder abweichend (Konflikt) sind. Schließlich gibt es noch ein plugable Frontend.

cu Beyond
piddon
Gründer
Beiträge: 410
Registriert: Dienstag 30. Juli 2002, 18:03
Wohnort: Oestrich-Winkel
Kontaktdaten:

Beitragvon piddon » Donnerstag 29. August 2002, 08:47

Wenn man bspw. eine Datenbanksystem benutzen würde, dass auch Syncronisation unterstützt (Firebird) würde das die sache evtl sogar noch weiter erleichtern.
irc: #python.de @ irc.freenode.net | python-wiki | python-forum FAQ
tabellar

Beitragvon tabellar » Mittwoch 4. September 2002, 12:31

Hallo Beyond,

die Idee von Dir finde ich sehr gut! Was fuer Tests hast Du denn schon gemacht und wie wuerdest Du gerne weitermachen??? Moechtest Du das System "nur" als Versionssystem einsetzen oder eventuell sogar als Basis fuer eine generative Programmierung verwenden...

Moechtest Du DBMS neutral bleiben oder Dich auf eine bestimmte Datenbank festlegen?

Frage an Christian:
Ich kenne das FireBird DBMS nicht. Was verstehst Du (FireBird) unter Synchronisation???
__________
tabellar
piddon
Gründer
Beiträge: 410
Registriert: Dienstag 30. Juli 2002, 18:03
Wohnort: Oestrich-Winkel
Kontaktdaten:

Beitragvon piddon » Mittwoch 4. September 2002, 13:50

:) C. = Carsten, aber ist nicht so schlimm...

Also, Firebird unterstützt das abgleichen von 2 Tabellen, die gleich aufgebaut sind, d. H. es kann schauen welche daten in welcher tabelle ergänzt werden müssen usw.

Ausserdem hat Firebird noch einiges an Features, die MySql erst jetzt so langsam lernt.

http://firebird.sourceforge.net hat natürlich mehr infos.
irc: #python.de @ irc.freenode.net | python-wiki | python-forum FAQ
Benutzeravatar
tabellar
User
Beiträge: 186
Registriert: Mittwoch 4. September 2002, 15:28

Beitragvon tabellar » Mittwoch 4. September 2002, 17:08

Hi Carsten,

das Abgleichen von 2 Tabellen innerhalb eines DBMS macht ja wohl nicht so viel Sinn. Du meinst wahrscheinlich eher den Abgleich von mehreren Tabellen in unterschiedlichen DBMSen....oder???

Aber ob dies hier bei dem Projektvorschlag noetig ist, sehe ich bis jetzt noch nicht.

Ich denke auch, dass wir uns nicht so sehr um das einzusetzende DBMS kuemmern sollten (es gibt auch noch andere DBMSe ausser MySQL und Firebird...), sondern mehr um die Vorgehensweise und die Datenstruktur, wie Programmcode in der Datenbank abgelegt und wieder entsprechend herausgeholt wird!

Die Python DB-SIG hat ja mit ihrer API Specification 2.0 einen schoenen Standard geschaffen, wo wir recht neutral DBMSe ansprechen koennen...
piddon
Gründer
Beiträge: 410
Registriert: Dienstag 30. Juli 2002, 18:03
Wohnort: Oestrich-Winkel
Kontaktdaten:

Beitragvon piddon » Mittwoch 4. September 2002, 17:20

Stimmt. Ichhabe es wohl falsch ausgedrückt :)

Aber richtig, DBMS ist irrelevant.
irc: #python.de @ irc.freenode.net | python-wiki | python-forum FAQ
Beyond

Beitragvon Beyond » Freitag 6. September 2002, 19:02

Hallo,
ich konnte in den letzten Tagen die Newsgroup nicht lesen, da ich Physik-Diplomvorprüfung hatte (nächste Woche geht's munter weiter).

Bisher habe ich eine SQL-Datenstruktur entworfen und sie entsprechend mit Python und dem PySQL-modul bearbeitet -- Dateien angelegt, gelöscht, umbenannt etc. das Userinterface ist spärlich, aber ich möchte das System ohnehin möglichst UI unabhängig halten. Bisher ist das System nur SQL anhängig aber das DBMS sollte egal sein, da ich nur SQL Standards verwendet habe.

Ich habe auch Dinge wie Branching und Branchmerging sowie gleichzeitiges Entwickeln am selben Programm/Modul. Ich denke generative Programmierung sollte sich implementieren lassen und wäre sicher noch ein wichtiger Punkt für ein solches System.

Firebird konnte ich mir bisher nicht anschauen. Sehr interessant fände ich aber den Sysnchronisierungsalgorithmus von Firebird. Kommt er klar mit Änderungen in beiden Tabellen gleicheitig am selben Datensatz.
Speziell beim Sysnchronisieren ist mir noch keine befriedigende Lösung eingefallen. Das Problem ist, dass man nicht alle Daten die ein Programmierer hat überspielen kann (Bandbreite, Checksums sind nicht zuverlässig genug) d.h. man muß mit modification-times o.ä. arbeiten. Bessere Vorschläge? Ein weiteres Problem entsteht, wenn zwei Programmierer die gleiche Datei verändert haben -- hier muß die Datei richtig zusammengesetzt werden (manuell oder automatisch u.U. automatisch Vorschlag erstellen...). Die zweite Datei darf dann aber nicht einfach die erste überschreiben. Ebenso problematisch ist es die zweite Datei nicht auf dem Server zwischenzuspeichern. Sollte dann auf dem Rechner des Programmierers ein Datenverlust auftreten ist die Datei weg. Außerdem sollte darauf geachtet werden, dass die Synchronisation atomar ist d.h. alle Veränderungen von einem Programmierer aufeinmal eingespielt werden. Ansonsten könnte ein unbrauchbares Code-Gemisch entstehen. Zusätzlich könnten dann Checks durchgeführt werden (Compilierbarkeit, Lauffähigkeit, Dukomentation ...) bevor die Veränderungen übernommen/angenommen werden.

Ich habe ein paar Programmteile und einige händische Skizzen zu Tabellen etc. Ich könnte das alles irgendwo ins Internet stellen/per Email verschicken allerdings weiß ich nicht wie nützlich das für jemand anderen ist. Das Programm sollte selbsterklärend sein allerdings weiß ich nicht ob es in der aktuellen Version (ich habe mit oben erläuterten Synchronisationsmethoden experimentiert) vollständig funtioniert. Außerdem sollte man sich Gedanken zur Lizenz machen.


Ich werde dieses Forum dann am Dienstag wieder lesen, wenn Analysis geschreiben ist.

Bis dann und vielen Dank für Euer Interesse,
Beyond
Benutzeravatar
tabellar
User
Beiträge: 186
Registriert: Mittwoch 4. September 2002, 15:28

Beitragvon tabellar » Montag 9. September 2002, 20:57

Ich hoffe, Du hast Analysis und die anderen Pruefungen gut ueber die Buehne gebracht... Na ja, muss halt auch sein...

Beyond hat geschrieben:Hallo,
...speziell beim Synchronisieren ist mir noch keine befriedigende Lösung eingefallen. Das Problem ist, dass man nicht alle Daten die ein Programmierer hat überspielen kann (Bandbreite, Checksums sind nicht zuverlässig genug) d.h. man muß mit modification-times o.ä. arbeiten. Bessere Vorschläge? Ein weiteres Problem entsteht, wenn zwei Programmierer die gleiche Datei verändert haben -- hier muß die Datei richtig zusammengesetzt werden (manuell oder automatisch u.U. automatisch Vorschlag erstellen...). Die zweite Datei darf dann aber nicht einfach die erste überschreiben...


Ich bin mir nicht sicher, ob der Ansatz mit der Synchronisation (...Abgleich...) von DBMSen der Schluessel zum Erfolg ist. Schiesslich hilft es uns wenig, wenn z.B. zwei Programmierer dieselbe Datei bearbeiten, deren Aequivalent im individuellen DBMS per Client eingespielt und anschliessend mit dem DBMS des anderen Programmierers automatisch synchronisiert wird... Man stelle sich nur mal vor, dass noch viel mehr Programmierer an einem Projekt beteiligt sind. Jeder braeuchte ein eigenes DBMS, alle DBMSe wuerden sich automatisch synchonisieren, hm... das ist sehr aufwendig!

Ich wuerde doch eher am Vorbild CVS bleiben und die Vorteile eines DBMSes einbringen. Man braeuchte EIN zentrales DBMS und eine intelligente Serverschicht darueber, die alle Zugriffe auf den Source-Code kontrolliert! Ich koennte mir vorstellen, dass sich unsere zwei Testprogrammierer per Client auf dem SourceCode-ControllerServer anmelden und somit *DAS SYSTEM* weiss, wer welchen Souce-Code updaten moechte... Man koennte somit Zugriffe sperren (locking) oder ev. auch gemeinsamen Zugriff erlauben (interactive programming??? :) ).

Wenn Du Deine Code-Beispiele, Skizzen (UML?) etc. irgendwo im Web ablegen koenntest, haetten wir die Moeglichkeit einmal drauf zu schauen. Bei einer entsprechenden e-mail Adresse koennten wir Dir dann auch Anregungen schicken! Eine gemeinsame Projekt EMail Adresse im Web (z.B. pycvs2dbms@freenet.de ...) waere auch ne Moeglichkeit...

Gruss
tabellar
Benutzeravatar
Beyond
User
Beiträge: 227
Registriert: Freitag 6. September 2002, 19:06
Kontaktdaten:

Beitragvon Beyond » Dienstag 10. September 2002, 20:26

tabellar hat geschrieben:Ich hoffe, Du hast Analysis und die anderen Pruefungen gut ueber die Buehne gebracht... Na ja, muss halt auch sein...



Danke. Ich glaube ich habe sie bestanden und dann kommt's noch auf die Korrektoren an, was sie einem geben wollen ... :)

tabellar hat geschrieben:Ich bin mir nicht sicher, ob der Ansatz mit der Synchronisation (...Abgleich...) von DBMSen der Schluessel zum Erfolg ist. Schiesslich hilft es uns wenig, wenn z.B. zwei Programmierer dieselbe Datei bearbeiten, deren Aequivalent im individuellen DBMS per Client eingespielt und anschliessend mit dem DBMS des anderen Programmierers automatisch synchronisiert wird... Man stelle sich nur mal vor, dass noch viel mehr Programmierer an einem Projekt beteiligt sind. Jeder braeuchte ein eigenes DBMS, alle DBMSe wuerden sich automatisch synchonisieren, hm... das ist sehr aufwendig!


Klar, jeder bräuchte ein eigenes DBMS usw., falls das DBMS eine solche Multipeer-Synchronisation beherrscht wäre es sehr praktisch, aber ich befürchte, daß das nicht geht -- schon allein weil ein DBMS "keine Ahnung" von verschiedensten Programmiersprachen hat.


tabellar hat geschrieben:Man braeuchte EIN zentrales DBMS und eine intelligente Serverschicht darueber, die alle Zugriffe auf den Source-Code kontrolliert!

Ja. Das ist auch einfacher für die Installation und resourcenfreundlicher.

tabellar hat geschrieben:Ich koennte mir vorstellen, dass sich unsere zwei Testprogrammierer per Client auf dem SourceCode-ControllerServer anmelden und somit *DAS SYSTEM* weiss, wer welchen Souce-Code updaten moechte... Man koennte somit Zugriffe sperren (locking) oder ev. auch gemeinsamen Zugriff erlauben (interactive programming??? :) ).

Allerdings würde ich es den Programmierern schon erlauben, die Dateien lokal auf ihrem Computer zu haben. Ich fände es sehr nachteilig, wenn man das System nur mit durchgehender Verbindung zum Server (-> Standleitung ...) benutzen könnte wie z.B. bei IBM Visual Age for Java (was mir aber ansonsten recht gut gefällt).
Wenn die Programmierer nun aber die Dateien lokal haben muß man sich Synchronisationsmethoden überlegen (s.o. soweit ich weiß verwendet CVS dazu die Modification-Time).
Mit dem "Anmelden" würde ich vorschlagen, daß der Server sozusagen protokolliert wer welche Version heruntergeladen hat -- damit sollte auch eine spätere Synchronisation möglich sein. Bei Lockingg usw. könnte es meiner Meinung nach zu viele Probleme mit sich gegenseitig blockierenden Programmierern geben. (z.B. könnte einer "Angemeldet" und mit lockings in den Urlaub fahren :( )

tabellar hat geschrieben:Wenn Du Deine Code-Beispiele, Skizzen (UML?) etc. irgendwo im Web ablegen koenntest ...


Ich werde morgen eine Seite und eine Email-Adresse einrichten. Die genauen Angaben poste ich dann noch.


Bis morgen,
Beyond
Benutzeravatar
Beyond
User
Beiträge: 227
Registriert: Freitag 6. September 2002, 19:06
Kontaktdaten:

Vorläufige Homepage

Beitragvon Beyond » Donnerstag 12. September 2002, 01:19

Also hier ist die vorläufige Homepage:
http://www.beyond-thoughts.com/cvs/

Wenn wir uns Name etc. überlegt haben (ich hatte es BraCoCoVerCo genannt) können wir ja eine eigene Homepage dafür einrichten.
Wie sieht es eigentlich mitz der Sprache aus (Deutsch/Englisch/Multilingual)?
Benutzeravatar
tabellar
User
Beiträge: 186
Registriert: Mittwoch 4. September 2002, 15:28

Re: Vorläufige Homepage

Beitragvon tabellar » Donnerstag 12. September 2002, 09:29

Hi Beyond,

da bewegt sich ja richtig was... :P

Beyond hat geschrieben:Also hier ist die vorläufige Homepage:
http://www.beyond-thoughts.com/cvs/

Super dass wir jetzt eine Projektseite haben! Besonders Deine Notizen finde ich spannend ... :wink:
Was mir natuerlich besonders gefaellt an Deinen Notizen, ist Deine Datenbankimplementierung auf PostgreSQL (auch mein Lieblings DMBS...)!!!

...ein Projekt nimmt gestalt an...

Beyond hat geschrieben:Wenn wir uns Name etc. überlegt haben (ich hatte es BraCoCoVerCo genannt) können wir ja eine eigene Homepage dafür einrichten.
Wie sieht es eigentlich mitz der Sprache aus (Deutsch/Englisch/Multilingual)?

Ja, eine eigene Homepage ist mit der Zeit sicherlich sinnvoll (sourceforge.net). Bei der Sprache wuerde ich vorerst bei Deutsch bleiben, um erst mal den eigentlichen Inhalt in den Griff zu bekommen. Spaeter und bei der Implementierung wuerde ich dann Englisch bevorzugen.

Ich schau mir jetzt Deine Homepage an und mache mir auch mal ein paar Gedanken dazu. Ich bin jetzt aber am Wochenende beim Bergsteigen...:D

Gruss
____________
tabellar
Benutzeravatar
Beyond
User
Beiträge: 227
Registriert: Freitag 6. September 2002, 19:06
Kontaktdaten:

Beitragvon Beyond » Donnerstag 12. September 2002, 19:08

Dann viel Spaß beim Bergsteigen.

Ich habe mal im Forum zwei weitere Themen gestartet, um alles einwenig übersichtlicher zu machen. Falls euch noch irgendwelche weiteren Bereiche einfallen, könnt ihr sie ja einfach hier starten.

Danke,
Beyond
piddon
Gründer
Beiträge: 410
Registriert: Dienstag 30. Juli 2002, 18:03
Wohnort: Oestrich-Winkel
Kontaktdaten:

Beitragvon piddon » Donnerstag 12. September 2002, 20:16

Wunderbar, so habe ich mir das Vorgestellt ;)

Das System interessiert mich auch. Nicht unbedingt von Entwicklungsseite (Leider keine Zeit), aber von der "User" Seite. Das sieht sehr vielversprechend aus.
irc: #python.de @ irc.freenode.net | python-wiki | python-forum FAQ
Gast

Beitragvon Gast » Donnerstag 12. September 2002, 23:11

...bevor ich in die Berge renne moechte ich doch noch etwas loswerden.

Unser Versioning-System muss sich letztendlich doch mit CVS messen :cry:. Ich meine damit, CVS ist bewaehrt und ist bei vielen grossen (Open-Source) Projekten das Source-Root schlechthin! CVS ist Sprachenunabhaengig und kann unterschiedlichste Arten von Dateien (Ascii,Binaer,...) verwalten.

Auch die Unterstuetzung von CVS durch entsprechende Programme ist recht ausgereift. Erst in den letzten Tagen habe ich Erfahrungen mit Eclipse und einem Python Plug-In gemacht und bin wirklich von der Leistungsfaehigkeit des Systems ueberrascht...

Nichts desto trotz reizt mich die Python-SQL Loesung und ich glaube, dass in so einem Versioning-System sehr viel mehr als nur "Versionenkontrolle" moeglich ist (Bsp. generative Programmierung...) :) .

Also, vor der Implementierung steht die Analyse 8) !!! Ich moechte alle Leser bitten, ihre Meinungen, Erfahrungen, Kritiken und Wuensche einzubringen in Bezug auf ein Python-SQL-System gegenueber CVS....Oder kurz: Was kann unser System wenn es fertig ist besser als das CVS... :D

Ich bin mal gespannt, was zusammenkommt...

piddon hat geschrieben:"Perl looks like an explosion in an ASCII-factory!"

...einfach ein gigantisch guter Satz, gruss an die RegEx-Perl2Python-String Fraktion :wink: ...
Benutzeravatar
tabellar
User
Beiträge: 186
Registriert: Mittwoch 4. September 2002, 15:28

Beitragvon tabellar » Donnerstag 12. September 2002, 23:14

...sorry, der "Gast" vornedran war ich... :oops:

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder