Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Werkzeuge (https://www.delphipraxis.net/63-sonstige-werkzeuge/)
-   -   Wie Quellcode vergleichen? (https://www.delphipraxis.net/152683-wie-quellcode-vergleichen.html)

Schwedenbitter 1. Jul 2010 21:08

Wie Quellcode vergleichen?
 
Hallo,

Mein Problem:
Ich habe ein ziemlich umfangreiches Projekt. Dieses läuft auf ca. 20 Rechnern problemlos. Auf einem seit ca. 1 Woche leider nicht mehr. Das Pogramm "saugt sich mit RAM voll", macht erst bei knapp 200 MB Schluss und nimmt ca. 95% der Prozessorleistung in Anspruch. Starte ich es mit runas als Admin auf demselben Rechner unter demselben Benutzeraccount, passiert das nicht. Auch nicht, wenn ich mich gleich als Admin anmelde. Fehlermeldungen kommen keine und beenden lässt es sich auch nur noch mit dem Taskmanager.
Glücklicherweise mache ich 1 x pro Woche ein vollst. Backup, so dass ich auf diesem Rechner die ältere Version verwenden kann. Ist aber nicht schön.

Ich möchte jetzt gern den Quellcode der Versionen miteinander vergleichen, um die mögliche Ursache ausfindig zu machen. Das sind aber mehrere tausend Zeilen und die von Hand durchzusehen wäre fehleranfällig und würde ewig dauern. Ich habe keine großen Änderungen gemacht, sondern eher Kosmetik und bessere Lesbarkeit des Codes ...

Meine Frage(n):
Gibt es dafür eine Tool? - möglichst Freeware.
Kann ich (z.B. mit FastMM oder so auf Fehlersuche gehen)? - Ich möchte auch ungern auf diesem Rechner Delphi installieren, nur um IDE und Debugger dort zu haben.

Gruß, Alex

s.h.a.r.k 1. Jul 2010 21:16

AW: Wie Quellcode vergleichen?
 
WinMerge sollte hier helfen. Bei TortoiseSVN/TortoiseGit ist auch so ein Tool dabei, in so fern du mal auf eine Versionskontrolle setzen solltest ;)

wicht 1. Jul 2010 21:19

AW: Wie Quellcode vergleichen?
 
Zum Vergleichen bietet sich WinMerge an. Vielleicht solltest du in Zukunft auch auf eine Versionsverwaltung wie z.B. SubVersion setzen, nur als Vorschlag am Rande. TortoiseSVN ist ein schönes Programm dafür, was Dateien auch mit Hilfe von WinMerge vergleicht, wenn dies installiert ist. Den SubVersion Server aufsetzen ist auch nicht besonders kompliziert.
FastMM habe ich hier nur im Debug-Modus mit aktivierter IDE am laufen, aber ich wette es gibt einen Switch, um das auch ohne IDE zu aktivieren. Ich benutze es selbst noch nicht so lange, aber bin begeistert davon - die Speicherlöcher die es mir gezeigt hat lassen sich mit Hilfe des Logfiles wirklich sehr einfach aufspüren und ausmerzen :P

HTH...

Grr, s.h.a.r.k war schneller. Ich schicks trotzdem ab um ihn zu bestätigen :stupid:

whsd 1. Jul 2010 21:23

AW: Wie Quellcode vergleichen?
 
Ich nutze seit mehreren Jahren Beyond Compare (Standard-Version),
einfach nach Beyond Compare googeln oder www.scootersoftware.com/ nutzen.
Kostet allerdings 30 USD, ist aber sein Geld wert.
Gruß

Schwedenbitter 1. Jul 2010 21:26

AW: Wie Quellcode vergleichen?
 
Danke Ihr beiden!
Zitat:

Zitat von s.h.a.r.k (Beitrag 1032922)

Sieht ziemlich gut aus und scheint genau das zu sein, was ich brauche.
Bzgl. der Versionskontrolle erschließt sich mir der Sinn noch nicht ganz. Etwas anderes mag es sein, wenn mehrere an demselben Code arbeiten. Ich bin aber Einzelkämpfer. Ich will niemanden überstrapazieren: Gibt es irgendwo eine Beschreibung, die erklärt, was genau der Sinn einer Versionskontrolle ist? Bei mir gibt es nur eine. Die mit der ich aktuell arbeite :-D und ich mache ja auch (Siehe oben!) wöchentliche Backups.

Ich nutze seit Jahren FastMM. Das Problem hier ist aber, dass mein Programm so gründlich abstürzt, dass FastMM nichts mehr anzeigt.

Danke nochmals, Alex

s.h.a.r.k 1. Jul 2010 21:28

AW: Wie Quellcode vergleichen?
 
Schade nur, dass Delphi sowas von Haus aus nicht unterstützen kann. Eine eher unschöne Diff-Anzeige gibt es zwar bzgl. der History eines Files, aber da sollte nun wahrlich mal nachgearbeitet werden. Ebenso die Anbindung an Versionsverwaltungsprogramme.

wicht 1. Jul 2010 21:33

AW: Wie Quellcode vergleichen?
 
Im Prinzip hast du schon recht. Wenn man alleine am Projekt arbeitet, ist das nicht so sinnvoll, als wenn es mehrere Frickler gibt.
Ich arbeite auch alleine an meinen Klotten, aber finde es trotzdem nützlich. Nicht jede Woche Backups machen, sondern nach jeder "Session" einfach die Änderungen einchecken. Dazu kann man dann noch Kommentare angeben, was sich geändert hat. Ich weiß ja nicht, wie du deine Sachen sicherst, aber ich habe früher einfach alles in einen anderen Ordner auf meinem Server kopiert. Dann hat man aber auch nur eine Backup-Version. Wenn du immer in einen neuen Ordner sicherst geht das wohl auch, nur verbraucht das vermutlich mehr Speicher und du kannst am Ende keine so feinen Vergleiche wie mit einer Versionskontrolle durchführen. Man kann damit zum Beispiel bestimmte Dateiversionen miteinander verlgleichen, mit 2 Klicks oder so. Wenn die alten Versionen in 100 Verzeichnissen verteilt werden, ist das glaube ich keine so lustige Aktion.

s.h.a.r.k, deine Roten Boxen versauen mir den Abend. Ich bin jetzt ruhig.. :-D

Schwedenbitter 1. Jul 2010 21:52

AW: Wie Quellcode vergleichen?
 
Danke für die Hinweise.
Zitat:

Zitat von wicht (Beitrag 1032928)
Ich weiß ja nicht, wie du deine Sachen sicherst, aber ich habe früher einfach alles in einen anderen Ordner auf meinem Server kopiert. Dann hat man aber auch nur eine Backup-Version. Wenn du immer in einen neuen Ordner sicherst geht das wohl auch, nur verbraucht das vermutlich mehr Speicher und du kannst am Ende keine so feinen Vergleiche wie mit einer Versionskontrolle durchführen...

[Nebensache]Ich bin im Grunde meines Herzens Linux-Anhänger. Wir haben aber auf Arbeit Mitarbeiter, die sich nicht an Linux gewöhnen wollen und auch entsprechende Software, die auch mit wine nicht laufen will. Das aber nur am Rande. Ich lasse die Backups mit rsnapshot auf dem Fileserver machen. Das spart Platz, weil die Dateien verglichen werden. Nur wenn sich etwas ändert, wird die geänderte Datei gesichert. Der Rest besteht aus sogenannten Symlinks. Das ist also überhaupt keine Problem. Und wenn ich den Stand von vor 4 Wochen will, dann gehe ich einfach in das entsprechende Verzeichnis ...[/Nebensache]
WinMerge ist also perfekt für mich :cheers:

Gruß, Alex

omata 1. Jul 2010 22:08

AW: Wie Quellcode vergleichen?
 
Ich finde kdiff3 sehr genial.

s.h.a.r.k 1. Jul 2010 22:10

AW: Wie Quellcode vergleichen?
 
Zitat:

Zitat von wicht (Beitrag 1032928)
s.h.a.r.k, deine Roten Boxen versauen mir den Abend. Ich bin jetzt ruhig.. :-D

[OT]
Ach was, komm vorbei, ich lad dich auf ein Bierchen ein :cheers:

[/OT]

wicht 1. Jul 2010 22:22

AW: Wie Quellcode vergleichen?
 
[OT]
Ein paar Stunden Fahrt wären das... Wenn ich mal in der Ecke unterwegs bin, werde ich mich an dein Angebot erinnern, verlass dich drauf :-D
[/OT]

s.h.a.r.k 1. Jul 2010 22:29

AW: Wie Quellcode vergleichen?
 
Bei uns gibts auch immer schön was zu trinken. Hier gilt wirklich, dass es ein Grundernährungsmittel ist ;) Und wenn was anderes erwünscht ist, kann auch für das leibliche Wohl gesorgt werden :mrgreen:

Stevie 2. Jul 2010 06:18

AW: Wie Quellcode vergleichen?
 
Ich find, es geht nix über DiffMerge

mjustin 2. Jul 2010 06:44

AW: Wie Quellcode vergleichen?
 
Das (kostenlose) TortoiseSVN enthält TortoiseMerge, mit dem auch ein Diff oder ein Patch durchgeführt werden kann:

http://tortoisesvn.tigris.org/

Screenshots und Beschreibung:

http://tortoisesvn.tigris.org/TortoiseMerge.html

ebenfalls kostenlos ist CSDiff von ComponentSoftware:

http://componentsoftware.com/Products/freetool.htm

Phoenix 2. Jul 2010 06:51

AW: Wie Quellcode vergleichen?
 
Zitat:

Zitat von Schwedenbitter (Beitrag 1032936)
Ich lasse die Backups mit rsnapshot auf dem Fileserver machen. Das spart Platz, weil die Dateien verglichen werden. Nur wenn sich etwas ändert, wird die geänderte Datei gesichert. Der Rest besteht aus sogenannten Symlinks. Das ist also überhaupt keine Problem. Und wenn ich den Stand von vor 4 Wochen will, dann gehe ich einfach in das entsprechende Verzeichnis ...

Im Grunde ist das eine versionierung. ;) Was anderes macht SVN auch nicht ;)
Kommt übrigens auch eher aus der Linux-Ecke, hat sich inzwischen aber auch so durchgesetzt.
Updates, Checkens etc. Laufen alle über kommandozeile oder GUI. Daneben bringt svn halt noch Pooling mit. So Sachen wie "Zeige alle Files die sich zwischen Datum X und Datum Y geändert haben, mit Details. Du kannst dann auch den einzelnen arbeitsschritt zurücknehmen.

Ich will um Himmels willen niemanden bekehren, aber ich finde es elegant und es macht Spaß damit zu arbeiten ;)

hoika 2. Jul 2010 07:04

AW: Wie Quellcode vergleichen?
 
Hallo,

Zitat:

Bzgl. der Versionskontrolle erschließt sich mir der Sinn noch nicht ganz
Die Frage hast du doch selbst schon beantwortet.

1. Was habe ich am 01.07.2010 an der Datei person_db.pas gemacht ?
2. Welcher Unterscheid besteht zwischen der Datei person_db.pas vom 30.06.2010 12:33 und
30.06.2010 15:00 ?

Punkt 2 ist etwas zwar überspitzt, aber ich mache oft auch während des Tages ein commit.
Eine Versionskontrolle sagt dir aber solche Sachen.

Das hat mit Einzelkämpfer nichts zu tun.


Ein wöchentliches Backup (oder war das doch täglich ?) ist viel zu wenig !!!

Hier mal der Link auf das aktuelle Subversion-Handbuch.
http://svnbook.red-bean.com/en/1.4/svn-book.pdf

Bei deinem RAM-Problem sollte übrigens FastMM4 helfen.


Heiko

Sherlock 2. Jul 2010 08:29

AW: Wie Quellcode vergleichen?
 
...und weil es auch Produkte gibt, die mit Delphi für Delphi entwicklet wurden (hat hier nicht jemand nach Integration gerufen?) würde ich JEDIVCS in die Runde werfen. Wir setzen das seit nunmehr fünf Jahren produktiv ein und sind zufrieden. Als Diff-Tool nutzen wir nicht das eingebaute, sondern ebenfalls WinMerge.

Sherlock

H4ndy 2. Jul 2010 09:50

AW: Wie Quellcode vergleichen?
 
Zitat:

Zitat von Sherlock (Beitrag 1032996)
...und weil es auch Produkte gibt, die mit Delphi für Delphi entwicklet wurden (hat hier nicht jemand nach Integration gerufen?) [...]

Wir setzen auf Arbeit TortoiseSVN ein, dafür gibt es auch ein schönes Plugin für Delphi :)
Privat würde ich aber nicht mehr auf SVN setzen, das ist zu "unsicher", da das Backup etwas komplizierter ist.
Lieber was verteiltes wie Mercurial (HG) oder GIT, wo man bei jeder Kopie dies Repos (z.B. Rechner und Internet) die komplette Versionierung vorliegen hat.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:57 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz