Like Tree2Danke
  • 1 Beitrag von CPoly
  • 1 Beitrag von Akeshihiro
ERLEDIGT
JA
ANTWORTEN
12
ZUGRIFFE
2002
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
  1. #1
    Avatar von Frezl
    Frezl ist offline Mitglied Platin
    Registriert seit
    Oct 2003
    Beiträge
    537
    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
     
    Wenn du das Gefühl hast "Cool, der Kerl konnte mir echt helfen!", dann teil es mir mit, indem du mich entsprechend bewertest!

  2. #2
    CPoly ist offline Mitglied Weizenbier
    tutorials.de Premium-User
    Registriert seit
    Sep 2009
    Beiträge
    2.713
    Hilft dir der letzte Beitrag hier weiter? http://forums.netbeans.org/post-62356.html
    Das sieht zumindest genau danach aus.
    Frezl bedankt sich. 

  3. #3
    Avatar von Frezl
    Frezl ist offline Mitglied Platin
    Registriert seit
    Oct 2003
    Beiträge
    537
    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
     
    Wenn du das Gefühl hast "Cool, der Kerl konnte mir echt helfen!", dann teil es mir mit, indem du mich entsprechend bewertest!

  4. #4
    deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.731
    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ß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  5. #5
    Avatar von Frezl
    Frezl ist offline Mitglied Platin
    Registriert seit
    Oct 2003
    Beiträge
    537
    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...
     
    Wenn du das Gefühl hast "Cool, der Kerl konnte mir echt helfen!", dann teil es mir mit, indem du mich entsprechend bewertest!

  6. #6
    Avatar von Akeshihiro
    Akeshihiro ist offline Mitglied Platin
    Registriert seit
    Aug 2008
    Ort
    Kirchlengern (NRW)
    Beiträge
    726
    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.
     
    Man sagt, das Schwert eines Samurai sei seine Seele ...

    Mit den Beiträgen ist es wie mit Schwertern: Je besser die Rohstoffe sind und je öfter man diese bearbeitet, desto hochwertiger sind sie.

    Das Schmieden ist eine Kunst; Das Schreiben auch ;)

  7. #7
    deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.731
    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ß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  8. #8
    Avatar von Akeshihiro
    Akeshihiro ist offline Mitglied Platin
    Registriert seit
    Aug 2008
    Ort
    Kirchlengern (NRW)
    Beiträge
    726
    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?
     
    Man sagt, das Schwert eines Samurai sei seine Seele ...

    Mit den Beiträgen ist es wie mit Schwertern: Je besser die Rohstoffe sind und je öfter man diese bearbeitet, desto hochwertiger sind sie.

    Das Schmieden ist eine Kunst; Das Schreiben auch ;)

  9. #9
    Avatar von Frezl
    Frezl ist offline Mitglied Platin
    Registriert seit
    Oct 2003
    Beiträge
    537
    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
     
    Wenn du das Gefühl hast "Cool, der Kerl konnte mir echt helfen!", dann teil es mir mit, indem du mich entsprechend bewertest!

  10. #10
    Avatar von Akeshihiro
    Akeshihiro ist offline Mitglied Platin
    Registriert seit
    Aug 2008
    Ort
    Kirchlengern (NRW)
    Beiträge
    726
    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.
    Geändert von Akeshihiro (02.04.12 um 07:27 Uhr)
     
    Man sagt, das Schwert eines Samurai sei seine Seele ...

    Mit den Beiträgen ist es wie mit Schwertern: Je besser die Rohstoffe sind und je öfter man diese bearbeitet, desto hochwertiger sind sie.

    Das Schmieden ist eine Kunst; Das Schreiben auch ;)

  11. #11
    Avatar von Frezl
    Frezl ist offline Mitglied Platin
    Registriert seit
    Oct 2003
    Beiträge
    537
    @ Akeshihiro:

    Danke für deine Antwort. Ich bin bis jetzt noch nicht sehr damit vertraut, wie die Versionierung in der Praxis funktioniert. Alles was ich bis jetzt gebraucht habe, hab ich mir in den letzten 4 Monaten selbst beigebracht. Bis jetzt ist mein "Kunde" auch nur der Betreuer bei meiner Studienarbeit.

    Bis jetzt habe ich Versionen nie getaggt, wenn ich sie exportiert habe. Bei der Web-Entwicklung ist das ja immer so ne fließende Sache, man muss nix kompilieren oder irgendwelche Vorbereitungen fürs Exportieren treffen - wenn ich neue Funktionen implementiert habe und diese funktionieren, mache ich nen Export und lad den auf den Server, wo sich's mein Betreuer anschaun kann. Daher wär's interessant, die Revisionsnummer im About-Dialog (also nur in dieser einen Datei) stehen zu haben.

    Bei vielen Softwares mit kurzen Entwicklungs- und Updatezyklen steh'n dort immer endlos lange Nummern, sodass ich davon ausgehe, dass das die Release-Nummern sind. Beim Firefox war das früher z. B. der Fall, aber da steht mittlerweile auch nur noch eine Versions-Nummer.

    Ich werd mir die Hooks mal anschaun, ich denke auch, dass da die Lösung des Problems liegt.

    Hast du mir vll nen Tipp für ein gutes Tutorial, mit dem ich die praktische Anwendung der Versionierung (wenn ich z. B. in einem Team arbeite) lernen kann?

    Viele Grüße,
    Frezl
     
    Wenn du das Gefühl hast "Cool, der Kerl konnte mir echt helfen!", dann teil es mir mit, indem du mich entsprechend bewertest!

  12. #12
    Avatar von Akeshihiro
    Akeshihiro ist offline Mitglied Platin
    Registriert seit
    Aug 2008
    Ort
    Kirchlengern (NRW)
    Beiträge
    726
    Wie ein Version beim wohl größten Teil der Softwarewelt vergeben wird, wird in diesem Wikipedia-Artikel sehr gut erklärt. Gleichzeitig wird auch erwähnt, dass es noch andere Wege gibt (z.B. aus Marketinggründen), man muss sich nicht dran halten.

    Wenn eine neue Version rauskommt, dann sollte man dafür auch ein Tag anlegen. Der Grund ist ganz einfach. Das fertige Build ist eigentlich vollkommen uninteressant. Das wird ausgelifert/deployt und damit hat sich das dann erledigt. Bei den meisten Projekten werden diese Builds zwar archiviert, damit man auch auf ältere Versionen zugreifen kann, aber für einen Entwickler ist viel interessanter, auf welchen Sourcecodes die Version X basiert. Man kann jetzt im SVN oder auch in einem anderen Versionskontrollsystem nach einem Kommentar suchen und schauen, welche Revision das war (sofern man so schlau war und einen solchen Kommentar hinterlassen hat). Man kann aber auch bei dem fertigen Build nach der Revisionsnummer schauen (wie du das machen willst) und so an die richtige Stelle gelangen. Aber wenn das Build nicht mehr vorhanden ist, was dann? Dann ist es gut, wenn die Version getagt wurde.

    Bei SVN wird eine Struktur empfohlen, bei der man für das Projekt drei Unterordner hat, in denen sich das Projektleben abspielt: trunk, tags und branches.
    Damit sieht das Projekt dann so aus:
    Code :
    1
    2
    3
    4
    
    - Projektordner
    +- trunk
    +- tags
    +- branches

    Die eigentliche Entwicklung findet in trunk statt. Wenn man eine neue Version rausbringt, dann sollte man dafür auch im Ordner tags eine Kopie von trunk ablegen, natürlich mit einem sinnvollen Namen. Dieses tag wird dann nie mehr angefasst, keine nebenläufigen Entwicklungen und gar nix. Das ist ein Abbild des Entwicklungsstandes zu einem ganz bestimmten Zeitpunkt, nämlich als eine Version fertig war.

    Beispiel:
    Code :
    1
    2
    3
    4
    5
    6
    
    - Projektordner
    +- branches
    +- tags
      +- 0.1.0.123
      +- 0.1.1.134
    +- trunk
    Da sind jetzt zwei Versionen getagt, einmal eine Version an sich (könnte ne Alpha sein) und dannach ein Patchrelease zu der vorherigen Version. Am Ende habe ich noch die Revisionsnummern drangehängt, damit sofort klar ist, welche Revision dafür verantwortlich ist.

    Die Entwicklungsarbeiten finden, wie schon gesagt, in trunk statt oder auch in branches, falls man ein Branch angelegt hat. Branches sind Entwicklungszweige, die parallel entwickelt werden, z.B. neue Features. Aber Tags werden niemals angerührt. Wenn man an einer bereits getagten Version was korrigieren will, dann wird davon ein branch angelegt, die Veränderungen gemacht und wieder getagt (sinnvollerweise dann als Patchrelease). Branching ist aber wieder ne Wissenschaft für sich. Jeder machts anders und irgendwie doch gleich.

    Die Vorgehensweise ist auch bei Webentwicklung sinnvoll, denn ob man eine Version tagt oder nicht, hängt nicht davon ab, ob etwas kompiliert werden muss. Das kompilierte Zeug bzw. das was in die Welt rausbefördert wird, ist für den Endbenutzer interessant, für den Entwickler aber eher weniger, denn ihn interessiert viel mehr auf welcher Codebasis die Version aufbaut, die da rausgegangen ist und für die er dann Bugs beseitigen muss. Und auch im Web ist das alles andere als ein in sich übergreifender Fluss. Wenn eine neue Funktionalität dazugekommen ist, dann ist das technisch nicht die selbe Version, sondern eine neue und sollte auch so behandelt werden.
    Frezl bedankt sich. 
    Man sagt, das Schwert eines Samurai sei seine Seele ...

    Mit den Beiträgen ist es wie mit Schwertern: Je besser die Rohstoffe sind und je öfter man diese bearbeitet, desto hochwertiger sind sie.

    Das Schmieden ist eine Kunst; Das Schreiben auch ;)

  13. #13
    Avatar von Frezl
    Frezl ist offline Mitglied Platin
    Registriert seit
    Oct 2003
    Beiträge
    537
    Hey Akeshihiro,

    vielen herzlichen Dank für deinen ausführlichen Post! Leider wurde in meinen Vorlesungen die Versionierung zwar als wichtiges Entwickler-Werkzeug vorgestellt, aber nie im Detail erklärt, wie man dabei richtig vorgeht. Deine Erklärung hilft mir da schon ein gutes Stück weiter.
    Für dieses Projekt ist es leider zu spät (muss diese Woche meine Ausarbeitung fertig machen und das ganze abgeben), aber in der hoffentlich anstehenden Weiterentwicklung der Software werd ich die Versionierung mal richtig umsetzen.

    Viele Grüße,
    Frezl
     
    Wenn du das Gefühl hast "Cool, der Kerl konnte mir echt helfen!", dann teil es mir mit, indem du mich entsprechend bewertest!

Ähnliche Themen

  1. Netbeans IDE
    Von kokoriko im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 0
    Letzter Beitrag: 26.10.07, 15:13
  2. Bios Revisionsnummer?
    Von Gahan im Forum Hardware
    Antworten: 2
    Letzter Beitrag: 14.06.07, 01:59
  3. Antworten: 2
    Letzter Beitrag: 29.10.06, 22:52
  4. cvs Tortoise
    Von Philipp_Frank im Forum PHP
    Antworten: 3
    Letzter Beitrag: 17.01.06, 20:32
  5. Antworten: 1
    Letzter Beitrag: 10.11.05, 22:27