Ankündigung

Einklappen
Keine Ankündigung bisher.

PHP Entwicklungs Prozess / SVN Post Commit Hook

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • PHP Entwicklungs Prozess / SVN Post Commit Hook

    Hallo @all,

    ich habe mal wieder 'ne Frage!
    Nach dem ich versuche mich (auch mit einigen Thread hier im Forum) zu "professionalisieren"
    geht es jetzt in die die nächste Runde.
    Ich arbeite „für mich“ schon seid einiger Zeit mit SVN, jetzt arbeiten wir aber zu mehreren Leuten an den Projekt sodass ich das Rep „für alle öffnen“ muss. Jetzt habe ich mir gedacht, wenn wir/ich eh umstrukturieren muss, kann ich es auch „besser als vorher“ machen. Ich habe ein paar Ideen und möchte jetzt eure Meinung dazu:

    Jeder arbeitet mit einem WokringCopy vom Repository und programmiert/testet für sich. Regelmäßig (wie oft!?) überträgt er seinen Stand in das Repository. Alle gucken natürlich, dass sie immer auf einem aktuellen Stand sind.

    Damit auch „nicht-Programmieren“, bzw. „die Anderen“ auf die aktuellste Version zugreifen können haben wir einen Windows Server bei uns im Büro stehen, auf dem dann die aktuellste Version laufen soll. Sobald also jemand irgendwas neues ins /trunk-Verzeichnis „hochläd“ soll auf diesem „Büro-Server“ ein Verzeichnis – z.B. http://BüroServer/Projekt_trunk“ - aktualisiert werden. Das ist dann immer die aktuellste, aber auch eventuell nicht stabile Version. Die Stabile Version wird – sobald es eine neue gibt – in das SVN-Verzeichnis /tags/$VersionNummer$ hochgeladen. Sobald es eine neue Stabile Version gibt soll diese unter http://BüroServer/Projekt_tags erreichbar sein...

    Hoffentlich nicht zu wirr, aber ich bin da auch noch „in der Planung“. Damit die Verzeichnisse (Projekt_tags und Projekt_trung) auf dem Büro-Server immer aktuell sind habe ich mir überlegt, das irgendwie über SVN „Post Commit Hook“ zu machen. Aber ich weiß nicht, wie ich feststellen soll, ob eine neue Version in /tags oder in /trunk hochgeladen wurde …
    Und hier bräuchte ich dann eure Hilfe...
    Hat jemand eine Idee, wie ich das bewerkstelligen kann, oder ist das „alles Quatsch“ !?

    Ich hoffe auf Hilfe! ;P

    Mit freundlichen Grüßen
    d0ne

  • #2
    1) Kein PHP-Topic
    2) Ist für dich "hochgeladen" ein commit ?

    Weil
    Aber ich weiß nicht, wie ich feststellen soll, ob eine neue Version in /tags oder in /trunk hochgeladen wurde …
    klingt da etwsa suspekt. tags sind ja nichts anderes als "markierungen" und trunk der haupt-stamm.

    Und da du im Titel und Text auch schon mit SVN Post Commit Hook genau das stichwort hast wie Subversion sowas ermöglicht bin ich jetzt ... ganz verwirrt, weil die genau das ermöglichen was du machen willst.

    Oder hast du ein Problem mit der "konkreten" Implementierung der Hook-Batch-Datei ?

    Weil die Hooks sind nichts anderes als ein script im richtigen Verzeichnis das von SVN automatisch ausgeführt wird wenn das gewünschte Event auftritt (post commit, pre commit, ... )

    -> Creating and Configuring Your Repository
    -> post-commit
    [URL="http://www.robo47.net"]robo47.net[/URL] - Blog, Codeschnipsel und mehr
    | :arrow: [URL="http://www.robo47.net/blog/192-Caching-Libraries-and-Opcode-Caches-in-php-An-Overview"]Caching-Klassen und Opcode Caches in php[/URL] | :arrow: [URL="http://www.robo47.net/components"]Robo47 Components - PHP Library extending Zend Framework[/URL]

    Kommentar


    • #3
      Bitte Forenstruktur beachten!

      [MOD: verschoben]
      [COLOR="#F5F5FF"]--[/COLOR]
      [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
      „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
      [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
      [COLOR="#F5F5FF"]
      --[/COLOR]

      Kommentar


      • #4
        Ok, sorry für das flasche Forum, ich werde in Zukunft besser aufpassen.

        Ist für dich "hochgeladen" ein commit ?
        Mh, ja, ich denke schon. Ich bin noch ein wenig unsicher, wie SVN, so genau funktioniert, bzw. wie man es richtig einsetzt.

        Ich habe im Moment die Vorstellung, dass im trunk-Verzeichnis die aktuelle Entwicklung gemacht wird, und sobal eine "stabile Version" entstanden ist, diese im tags-Verzeichnis landet. Das Branches-Verzeichnis lasse ich bis jetzt komplet ungegenutz.

        Oder hast du ein Problem mit der "konkreten" Implementierung der Hook-Batch-Datei ?
        Ja, so die Grundidee, wie ich es machen muss (mit SVN Post Commit Hook ^^) habe ich schon. Aber mir feht es einer guten/sauberen Implementierung.
        Aber wenn ich jetzt das ganze so weiter Denke bin ich mir gar nicht mehr so sicher, wo ich eigentlich hin will...

        Robo47, da du ja (so ist bis jetzt mein Eindruck), schon recht "professionell" bist, kannst du (oder auch andere) ja vll. kurz posten, wie du (ihr) genrell entwicklet. Weil es gibt ja für vieles "Einzelanleitung" ("so benutzen Sie phpuc", "so richten Sie phing ein", "so bentuzen Sie SVN"), aber was mir fehlt ist, eine Vorstellung, wie ein kompletter Entwicklungsprozess, also Entwicklung, Testen, Bugbehebung, mehre Versionen gleichzeitig weiter entwickeln ..., einzurichten ist. Und leider habe ich hier keinen zur Hand, der mir dabei helfe könnte.

        Der nächste Schritt bei mir wäre noch PHPUnderControl einzubauen und später vll. auch noch eine db-Versionierung. Wenn das dann ales liefe wäre ich schon richtig zufrieden mit mir (und ich hoffe, mein Chef fände es auch toll -.-)

        mfg
        d0ne

        Kommentar


        • #5
          Zitat von d0ne Beitrag anzeigen
          Mh, ja, ich denke schon. Ich bin noch ein wenig unsicher, wie SVN, so genau funktioniert, bzw. wie man es richtig einsetzt.

          Ich habe im Moment die Vorstellung, dass im trunk-Verzeichnis die aktuelle Entwicklung gemacht wird, und sobald eine "stabile Version" entstanden ist, diese im tags-Verzeichnis landet. Das Branches-Verzeichnis lasse ich bis jetzt komplet ungegenutz.
          Irgendwie denke ich solltest du dich erstmal mit SVN ausreichend beschäftigen und wie das funktioniert und was dahinter steckt, vor allem was trunk, tags und branches sind und wie sie aus der Subversion-Perspektive funktionieren.


          Eine Komplett-Lektüre für SVN gibt es z.b. hier:
          -> Version Control with Subversion
          Ansonsten tut es da vielleicht auch ein Buch, vielleicht hat ja jemand nen Tip.

          Ich muss auch sagen dass ich mit Subversion nicht mehr so fit bin, weil ich eigentlich nur noch git nutze, da hat man nicht mehr diese ausufernde Verzeichnis-Struktur mit trunk, tags und branches, wobei wenn man bei svn üblicherweise auch nur das ausscheckt woran man gerade arbeitet und Tagging/Branching meist über den SVN-Client der IDE läuft, das einen auch nicht so stark beeinflußt.
          Aber bei Subversion fand ich die gesamt-Ordnerstruktur immer sehr verwirrend

          Bei verteilten Systemen wie git ist das finde ich etwas einfacher:

          * der master-branch ist ungefährt das was der trunk in svn ist, aber den kann man nennen wie man will.
          * tags sind nichts weiter als eine Eindeutige Benneung eines Commits (bzw dessen hash und damit auch der kompletten history dieses commits)
          * Branches sind auch keine kopien oder ähnliches , sondern setzen auch nur die Info von welchem zweig/commit man gebrancht hat und speichern dann die neuen commits basierend auf dem ausgangscommit, damit man sie später wieder mergen kann und soweiter.

          Ja, so die Grundidee, wie ich es machen muss (mit SVN Post Commit Hook ^^) habe ich schon. Aber mir feht es einer guten/sauberen Implementierung.
          Aber wenn ich jetzt das ganze so weiter Denke bin ich mir gar nicht mehr so sicher, wo ich eigentlich hin will...
          Dann solltest du erstmal klar festlegen was du brauchst und willst, dann deine erste Versuche mit den Hooks machen, wenn du eh vorhast nen CI-Server zu nutzen, lässt sich das unter Umständen auch dort unterbringen.

          aber was mir fehlt ist, eine Vorstellung, wie ein kompletter Entwicklungsprozess, also Entwicklung, Testen, Bugbehebung, mehre Versionen gleichzeitig weiter entwickeln ..., einzurichten ist.
          Den "Entwicklungsprozess" gibt es leider garnicht, weil er von zu vielen Faktoren abhängig ist.
          Code:
           * Betriebsystem (Client sowie Server)
              * Linux, Win, Mac, ... 
           * Sprachen
              * PHP, Javascript, HTML, CSS, ...
           * (D)VCS
              * CVS, SVN, Git, Mercurial, Bazaar, .... 
           * Test-Framework
              * phpunit, simpletest, phpt, ... 
           * Projekt-Management-Tool
              * Trac, Redmine, Arbit, Bugzilla, Jira, Mantis, ... 
           * Build/Deployment-Sprachen
              * Ant, Maven, Phing, Pake, Pantr, Rake, make, ... 
           * CI-Server
              * Hudson, PHPUnderControl, Bamboo, ...
           * IDE
              * Eclipse, Netbeans, Zend Studio, ... 
           * Personen
              * Programmierer, Tester, Doku-Schreiber, Support, ....
          Und ich denke auch da muss jeder ein bißchen seine eigenen Erfahrungen machen, weil über jeden der genannten Punkte könnte man Seiten füllen sei es eine Pro/Contra-Diskussion der verschiedenen Systeme und auch die Kombination untereinander oder wie man sie installiert/konfiguriert/einbindet/... und auch die OS-basierten Unterschiede.

          Unter den meisten Linux-Distris hat man mit weniger als 10 Zeilen in der shell ein lauffähiges Setup mit php, apache, mysql, phpmyadmin, pear (+ phpunit) und alles via shell nutzbar, was gerade für automatisierung, phpunit, codesniffer, phpdepend, phpmd, ... ).
          Während ich das unter Windows früher immer als Qual empfand bis man ein selbst aufgesetztes wamp-setup oder xampp + umkonfigurierung hatte, PATH passend gesetzt hat, dass auch alles ordentlich via cli funktionert, sich seine extensions zusammengesucht hatte ... und wehe man wollte updaten und irgendwo lag noch ne falsche/veraltet dll rum oder sonstwas Und dann noch die ganzen kleinen tools wie graphviz, ant, ...

          Mit einer der vielen Gründe warum ich mir ein Leben mit Windows absolut nicht mehr vorstellen kann.

          Der nächste Schritt bei mir wäre noch PHPUnderControl einzubauen und später vll. auch noch eine db-Versionierung. Wenn das dann ales liefe wäre ich schon richtig zufrieden mit mir (und ich hoffe, mein Chef fände es auch toll -.-)

          mfg
          d0ne
          Also ich würde anstatt zu PHPUnderControl wohl aktuell eher zu Hudson tendieren, weil für PHPUnderControll brauchst du erstmal auch noch nen JAVA-CI-Server (CruiseControl) und die Konfiguration/Verwaltung (Installation diverser Plugins) ist bei Hudson super einfach alles via Browser möglich und die Auswahl ist riesig, egal um welches VCS es geht, build-tool, ... da gibt es wirklich fast alles.

          Bissel was zu Hudson und meinem Setup:
          -> http://www.php.de/off-topic-diskussi...twicklung.html
          Und Sebastian Bergmann hat auch nen fertigen ANT-Job + paar Infos zur einbindung diverser Tools in Hudson auf github:

          sebastianbergmann's php-hudson-template at master - GitHub
          [URL="http://www.robo47.net"]robo47.net[/URL] - Blog, Codeschnipsel und mehr
          | :arrow: [URL="http://www.robo47.net/blog/192-Caching-Libraries-and-Opcode-Caches-in-php-An-Overview"]Caching-Klassen und Opcode Caches in php[/URL] | :arrow: [URL="http://www.robo47.net/components"]Robo47 Components - PHP Library extending Zend Framework[/URL]

          Kommentar


          • #6
            So...
            Ich glaube für "mein aktuelles Projekt" habe ich einfach zu hoch gegriffen.
            Denn auch wenn ich alles verstehen würde und einrichten könnte müssten doch meine Kolegen auch damit arbeiten und ich bin mir nicht sicher, ob das klappen würde.

            Deshalb habe ich es mir einfach gemacht. Es gibt ein SVN-Repositorium in diesem gibt es ein Verzeichnis /trunk. In diesem Verzeichnis werden alle Daten gespeichert. Alle arbeiten mit einem WorkingCopy dieses Verzeichnis. Fertig.
            Vll. kann man das später/bei Bedarf erweitern, aber vor erst reicht es.

            Dadurch das ich nur ein Verzeichnis, und dem entsprechend "nur eine aktuelle Version" habe wird durch den Post Commit Hook phing ausgeführt. Phing holt sich dann die aktuellste Version aus dem Repositorium, konfiguriert ein wenig in der Gegend herum und schon ist die aktuellste Version lokal zum testen für alle verfügbar.

            Das werde ich jetzt noch so weiter erweitern, dass ich mit Phing auch für den Upload für das "Live-System" nutze.

            Auch wenn ich in nächster Zeit mit "so einer einfach Lösung" arbeiten werde werde ich versuche, weiter in die Thematik "Entwicklungs-Prozess" einzusteigen. Kennt jemand vll. noch ein paar gute Bücher / Webseiten / Tutorials, die er/sie empfehlen kann?

            mfg & danke,
            d0ne

            Kommentar

            Lädt...
            X