Chrisi: SVN propset @version und andere

Hi zusammen,

ich schlindere heute den ganzen Tag von einer Doku zur anderen bin aber nicht wirklich dahinter gekommen wie ich in meinen versionierten Dateien die Eigenschaft für z.B. "@version" global bearbeiten bzw. setzen kann.

Was ich verstanden habe ist das es reservierte Keywörter gibt, also $Id$ $Rev$ und so weiter, dass klappt auch.

Auch habe ich verstanden wie ich für Dateien Eigenschaften setzen kann:

svn propset meinkey 'Jupi ich habs geschafft' test.php

Die Eigenschaft kommt sogar an wenn ich sie mit propget abfrage.

Was ich nicht verstanden habe ist: Wie bekomme ich jetzt die gesetzte Eigenschaft in meine Dateien?

<?php  
/**  
 *  
 * $Id$  
 *  
 * @meinkey ???  
 */

Kann mir da jemand auf den Weg helfen?

Viele Grüße und danke
Chrisi

  1. Hi!

    Was ich nicht verstanden habe ist: Wie bekomme ich jetzt die gesetzte Eigenschaft in meine Dateien?

    Denen musst du noch sagen, welche Keywords sie berücksichtigen sollen:

    svn propset svn:keywords ...

    Lo!

    1. Hi,

      svn propset svn:keywords ...

      Ich kriegs irgendwie nicht auf die Beine :(

      Folgendes habe ich gemacht:

      1. Datei test.php angelegt
      2. Inhalt eingefügt "@version $version$"
      3. svn add test.php
      4. svn propset version 'Meine Version X' test.php
      5. svn propset svn:keywords "version" test.php
      6. svn commit -m"blub"

      Wobei ich mir bei Schritt 6 nicht sicher bin ob das überhaupt sein muss.
      Wenn ich jetzt in meine test.php schaue bleibt @version aber unberührt.

      Kann mir jemand sagen was ich falsch mache?

      Vg, Chrisi

      1. Hi!

        svn propset svn:keywords ...
        Ich kriegs irgendwie nicht auf die Beine :(

        Vorab: Ich hab das mit den Keywords auch nur grad eben nachgeschlagen, weil ich das noch nicht verwendet habe und kann dir da nicht mit Erfahrung dienen.

        Folgendes habe ich gemacht:

        1. Datei test.php angelegt
        2. Inhalt eingefügt "@version $version$"
        3. svn add test.php
        4. svn propset version 'Meine Version X' test.php
        5. svn propset svn:keywords "version" test.php
        6. svn commit -m"blub"

        Wobei ich mir bei Schritt 6 nicht sicher bin ob das überhaupt sein muss.

        Ohne Commit passiert nichts auf dem Server. Add und Propset arbeiten erst einmal nur lokal, sonst würden all diese Teilschritte auch immer wieder eine neue Version erstellen. Das passiert aber erst beim Commit.

        Wenn ich jetzt in meine test.php schaue bleibt @version aber unberührt.

        Hast du probehalber nach dem Commit mal ein Update gemacht?

        Lo!

      2. Moin!

        1. Datei test.php angelegt

        Ok.

        1. Inhalt eingefügt "@version $version$"

        Es gibt die Keywords Id, Revision, Author, Date und HeadURL. Version gehört nicht dazu.

        1. svn add test.php

        Ok.

        1. svn propset version 'Meine Version X' test.php

        Sinnlos.

        1. svn propset svn:keywords "version" test.php

        Falsch.

        1. svn commit -m"blub"

        Notwendig.

        - Sven Rautenberg

        1. Hi!

          Es gibt die Keywords Id, Revision, Author, Date und HeadURL. Version gehört nicht dazu.

          Ich behaupte mal, die SVN-Dokumentation versucht mir mit Keyword Substitution zu erzählen, dass man sich auch eigene definieren kann.

          Lo!

          1. Moin!

            Es gibt die Keywords Id, Revision, Author, Date und HeadURL. Version gehört nicht dazu.

            Ich behaupte mal, die SVN-Dokumentation versucht mir mit Keyword Substitution zu erzählen, dass man sich auch eigene definieren kann.

            "Subversion defines the list of keywords available for substitution. That list contains the following five keywords, some of which have aliases that you can also use:"

            Von "You can define your own" steht da nix.

            - Sven Rautenberg

            1. Hi!

              Von "You can define your own" steht da nix.

              OK, dann hab ich beim Querlesen falsch interpoliert. Schade eigentlich, denn wenn man sowieso explizit noch dazusagen muss, welche der (vorgegebenen) Schlüsselwörter man ersetzen will, hätte man das auch gleich generell auf selbst definierte ausdehnen können.

              Lo!

              1. Moin!

                Von "You can define your own" steht da nix.

                OK, dann hab ich beim Querlesen falsch interpoliert. Schade eigentlich, denn wenn man sowieso explizit noch dazusagen muss, welche der (vorgegebenen) Schlüsselwörter man ersetzen will, hätte man das auch gleich generell auf selbst definierte ausdehnen können.

                Die Frage ist ja, wozu man sowas wollen könnte.

                Wenn es, wie hier vorgestellt, um das Einpflanzen einer festen Versionsangabe in den Quelltext geht, dann ist offenbar die Ansicht von SVN, dass das keine Aufgabe von SVN ist. Denn was gewinnt man? Die Versionsangabe wird als Meta-Information in Form einer SVN-Property an die Datei geheftet und dann durch den Ersetzungsmechanismus nochmal in den Dateiinhalt injiziert. Warum nicht gleich die Version in die Datei reinschreiben?

                Klar: Weil das komplizierter ist für den unwissenden Normalprogrammierer, der eine dateiübergreifende Suchen-Ersetzen-Operation auf die Versionsinformation nicht so einfach hinkriegt. Aber das wäre dann auch so ziemlich der einzige Einsatzpunkt, und vermutlich für diesen Zweck noch nicht mal der beste. Denn eine Versionsinformation sollte doch eigentlich durch den Akt des Releases für alle beteiligten Dateien gleichzeitig fixiert werden, und nicht durch das Dranpappen einer Eigenschaft individuell pro Datei. Und genau für solche Release-Versionsoperationen gibt es an anderer Stelle Vorkehrungen, beispielsweise in Ant.

                - Sven Rautenberg

        2. Hi,

          Sinnlos.

          Jetzt die Frage, wie ändere ich dann in rund 100 Files die Version?

          Wenn das jeder Autor von Hand macht dauert das wahrscheinlich länger als das Coden :)

          Viele Grüße
          Chrisi

          1. Moin!

            Sinnlos.

            Jetzt die Frage, wie ändere ich dann in rund 100 Files die Version?

            Wenn das jeder Autor von Hand macht dauert das wahrscheinlich länger als das Coden :)

            Dateiübergreifendes Suchen-Ersetzen?

            - Sven Rautenberg