NetBeans & Tortoise: aktuelle Revisionsnummer in Quelltext einbinden

Frezl

Erfahrenes Mitglied
Hey allerseits,

ich entwickle mit NetBeans und hab mir jetzt zur Versionierung Tortoise aufgesetzt. Ist es mit dieser Kombination irgendwie möglich, dass ich die aktuelle Revisions-Nummer in den Quelltext meines PHP-Projekts einbinden kann?

Ich stelle mir vor, dass das entweder über ein NetBeans-Plugin geht (das ich aber noch nicht gefunden habe), oder, dass Tortoise beim Commit die Versions-Infos in eine Datei speichert, die ich dann auslesen kann.

Brauche das, damit der Anwender sehen kann, mit welcher Version er gerade arbeitet (was ja bei Desktop-Software auch üblich ist). Bis jetzt habe ich immer von Hand versioniert und die Infos direkt reingeschrieben.

Viele Grüße,
Frezl
 

Frezl

Erfahrenes Mitglied
Hey CPoly,

vielen Dank für den Tipp! Das Stichwort "Keywords" hat mir weiter geholfen :)

Viele Grüße,
Frezl

P. S.: Sorry für die späte Antwort. Hab nicht gemerkt, dass jemand geantwortet hat und das Thema war ne Weile nicht so wichtig für mich. Umso schöner, dass ich jetzt, wo ich die Funktion dringend brauche, hier ne hilfreiche Antwort vorfinde :)
 

deepthroat

Erfahrenes Mitglied
Hi.

Beachte aber, das die Revisionsnummer die per Keyword eingefügt wird, nur die letzte Revision dieser einen Datei ist, nicht die Nummer der letzten Revision deiner Arbeitskopie.

Wenn sich deine Datei also mehrere Monate nicht ändert, hast du immer die gleiche Revisionsnummer drin.

Gruß
 

Frezl

Erfahrenes Mitglied
Hm, ja, das hab ich leider auch gemerkt :p Gibt's nen Trick, wie man die Nummer vom ganzen Repo bekommt? Ein Keyword scheint's dafür ja net zu geben...
 

Akeshihiro

Erfahrenes Mitglied
Was sollte das bringen? SVN speichert nicht pro Revision das gesamte Repository, sondern nur die Veränderungen von Revision n zu Revision n+1 und somit gibt es dann nur Informationen zu den Dateien, die dadurch betroffen waren. Die anderen bleiben unberührt.
 

deepthroat

Erfahrenes Mitglied
Hi.

Natürlich bringt das was. Zumindest wenn man die letzte Revisionsnummer der Arbeitskopie ermittelt.

Das Kommando "svn info" liefert diese Information. Vermutlich kann man eigene Buildschritte in Netbeans definieren und z.B. ein Skript aufrufen welches die Revisionsnummer automatisch in eine .java Datei schreibt?

Gruß
 

Akeshihiro

Erfahrenes Mitglied
Dann würde man aber jede einzelne Datei verändern obwohl sie gar nicht verändert wurde. Das führt unweigerlich dazu, dass man unnötig Speicher verschleudert, auch wenn das nur nur einige KB sind. Da ist kein Sinn dabei ... Wenn die letzte Revision einer Datei XY ist, dann ist das nunmal XY und nicht HEAD.

Wenn der einzigen Zweck der Aktion der ist, dass man die neuste Revisionsnummer auf irgendeine Weise sehen will, dann würde ich lieber ein Skript basteln, dass eine Datei generiert mit der Revision als Namen und zwar rekursiv für jeden Ordner.

Und was ich auch nicht so richtig verstehe ist, wenn schon NetBeans verwendet wird, warum nicht einfach mit NetBeans das Projekt auschecken, warum der Umweg über TortoiseSVN?
 

Frezl

Erfahrenes Mitglied
Zur Frage nach Tortoise:
Dazu kann ich sagen, dass ich mittlerweile etwas schlauer bin als vor 4 Monaten, als ich den ersten Post geschrieben habe. Tatsächlich verwende ich ein NetBeans-Plugin um meinen Quellcode an ein lokales SVN-Repository zu übergeben. Tortoise ist leider trotzdem nötig, da das NetBeans-Plugin anscheinend Probleme damit hat, wenn ich große Dateimengen innerhalb des Projekts verschiebe. Es hat mich tatsächlich mehrere Arbeitstage gekostet, bis ich das verwendete JS-Framework, das leider mehrere Tausend Dateien mitbringt, in einen Unterordner kopiert hatte, da ich immer nur häppchenweise verschieben und einreichen konnte. Andernfalls hat SVN immer den Fehler ausgespuckt, dass das Verzeichnis nicht mehr aktuell wäre - "You don't say? Ich habs ja auch grade eben verschoben, du Ar***!". Das NetBeans-Plugin scheint an der Stelle etwas buggy zu sein. Naja, aber das ist eine andere Geschichte und mittlerweile hab ich rausgefunden, dass das Verschieben in Tortoise problemlos funktionert.

Zur Frage, was das bringt:
Ich hätte gerne im About-Dialog die Nummer der letzten Revision stehen, damit ich und auch der Nutzer Bescheid wissen, mit welcher Version sie arbeiten. Zwecks Support bei auftretenden Fehlern ist das sehr nützlich und ist auch bei anderen Softwares üblich - daher bin ich mir auch sicher, dass es eine einfache Möglichkeit geben muss, dieses Problem zu lösen. Womit wir den Bogen zurück zu Tortoise geschlagen hätten, denn damit exportiere ich ein Repository, wenn ich's auf den Server laden will (nennt man das dann ein Build?). Das Ziel wäre also, dass Tortoise mir beim Exportieren die aktuelle Revision an eine von mir gewählte Stelle im Quelltext schreibt.

Ich hab mal nach SVN INFO gegooglet, aber nur Anleitungen gefunden, wie man das auf der Konsole verwendet. In Tortoise gibt's die Möglichkeit, Hook-Skripte einzubinden. Bin über Google auf diesen Forumstread und von dort auf jene Seite gestoßen. Die werd ich mir mal zu Gemüte ziehen, wenn ich Zeit hab.

Wünsch euch allen, die ihr mir hier helft, ne gute Nacht!

Grüße,
Frezl
 

Akeshihiro

Erfahrenes Mitglied
Ich wüsste nicht, dass es üblich ist dem Kunden zu veraten, mit welcher Revision man da arbeitet. Der Kunde bekommt in der Regel eine fertige Version, mit einer Versionsnummer (keiner Revisionsnummer) und für die Version wird dann auch entsprechend ein Tag im Repository angelegt. Wenn du für die fertige Version in alle Dateien per Skript die Versionsnummer einsetzen lassen willst, ist das noch was ganz anderes, als wenn bei jedem Commit alle 1.000 Dateien verändert werden müssen, da es nur ein einziges mal pro Version passiert und nicht bei jedem Commit. Und wenn der Kunde Bock zu meckern hat, dann kann er auch sagen, bei welcher Version das war. Von dieser macht man dann ein Branch, behebt die Fehler, erstellt ein neues Tag für ein Bugfix-Release und deployt es wieder. So kenn ich das und ich hab das bisher auch nirgends anders erlebt.

EDIT:
Wenn das nur für den About-Dialog ist (da kann die Revisionsnummer auch stehen, hast recht), dann wird das ja vermutlich nur an einer Stelle stehen müssen, nehme ich mal an und nicht in jeder Datei, weil so hatte ich das Ganze bislang verstanden. Wenn das nicht der Fall ist, dann tut mir das ehrlich leid.

Ich habe so etwas auch noch nicht gebraucht, würde aber davon ausgehen, dass man eventuell einen der commit hocks (wahrscheinlich pre-commit) erweitern müsste, damit er die Datei XY, in der die Version + Revision dann eingetragen werden sollen, an geeigneter Stelle einträgt/ersetzt.
 
Zuletzt bearbeitet: