Manuel B.: "patch" für PHP

Ich grüsse den Cosmos,

da ich mit SVN sehr schöne Patchfiles erzeugen kann, stellt sich mir die Frage, ob es für PHP eine Lib oder Klasse gibt, die Patch-Dateien auslesen und anwenden kann.
Das ganze würd ich dann in das System integrieren, damit ein leichtes

Möge das "Self" mit euch sein

--
Neulich dachte ich mir, einmal S/M ausprobieren wäre eine tolle Erfahrung. Also hab ich Windows gebootet ...
ie:{ br:> fl:| va:| ls:& fo:{ rl:( n4:{ de:] ss:) ch:? js:| mo:) sh:( zu:)
  1. Ich grüsse den Cosmos,

    "damit ein leichtes Update möglich ist" sollte das heissen. Hab wohl versehentlich was weggelöscht.

    Möge das "Self" mit euch sein

    --
    Neulich dachte ich mir, einmal S/M ausprobieren wäre eine tolle Erfahrung. Also hab ich Windows gebootet ...
    ie:{ br:> fl:| va:| ls:& fo:{ rl:( n4:{ de:] ss:) ch:? js:| mo:) sh:( zu:)
    1. Hi!

      Dürfte ziemlich schwer werden, da was mit einer Suchmaschine zu finden...
      Bei Schlagwörtern wie "PHP Patch Class" findest du sicherlich Tausende von Treffern, aber nicht das Gewünschte...

      Eine PHP-Implementation von patch ist mir auch nicht bekannt.
      Du kannst aber vielleicht ein auf dem Server installiertes patch mit PHP nutzen.
      patch gehört ja zu den GNU-Tools und ist sicherlich auch auf vielen Servern vorhanden.
      Es gibt sogar Windows-Portierungen davon.
      Da man die meisten Windows-Programme nur in compilierter Form bekommt, wird das sicherlich auf so gut wie keinem Windows-Server laufen.
      Aber wenn dein Hoster mit einem Linux-Server arbeitet, dann kannst du ihn ja vielleicht mal anschreiben, ob es nicht möglich ist, mit PHP darauf zuzugreifen.
      Eventuell stellt er dir das Tool extra für dich bereit.
      Einige Hoster haben mir schon das ein oder andere Tool in meine Verzeichnisse gepackt, nachdem ich ihnen eine nette Mail geschrieben hab.

      Schöner Gruß,
      rob

      1. Ich grüsse den Cosmos,

        Dürfte ziemlich schwer werden, da was mit einer Suchmaschine zu finden...
        Bei Schlagwörtern wie "PHP Patch Class" findest du sicherlich Tausende von Treffern, aber nicht das Gewünschte...

        Genau das ist mein Problem ;)

        Eine PHP-Implementation von patch ist mir auch nicht bekannt.
        Du kannst aber vielleicht ein auf dem Server installiertes patch mit PHP nutzen.
        patch gehört ja zu den GNU-Tools und ist sicherlich auch auf vielen Servern vorhanden.

        Das Problem ist, das die Software auf möglichst jeden Webspace laufen soll. Und nur wegen einem Update am Server rumschrauben zu müssen, ist induskutabel.

        Es gibt sogar Windows-Portierungen davon.

        Weiss ich, ich werd damit wohl auch arbeiten und fertige PHP-Dateien erzeugen, die dann die alten Versionen einfach überschrfeiben. Anders wärs mir halt lieber gewesen.

        Da man die meisten Windows-Programme nur in compilierter Form bekommt, wird das sicherlich auf so gut wie keinem Windows-Server laufen.

        Windowsserver hab ich eh nicht. Und die Zielgruppe hat zu 99.8% Linuxserver

        Aber wenn dein Hoster mit einem Linux-Server arbeitet, dann kannst du ihn ja vielleicht mal anschreiben, ob es nicht möglich ist, mit PHP darauf zuzugreifen.

        Mein Hoster bin ich selbst. Aber es geht ja, wie gesagt, nicht um meinen Server, sondern darum, dass das Programm auf jedem Webspace laufen soll.

        Eventuell stellt er dir das Tool extra für dich bereit.

        Würde er ... Würde er ~gg~

        Einige Hoster haben mir schon das ein oder andere Tool in meine Verzeichnisse gepackt, nachdem ich ihnen eine nette Mail geschrieben hab.

        Dummerweise betreibt meine Zielgruppe oft Rootserver ohne auch nur ein wenig Ahnung zu haben. Da ist es eindeutig zuviel verlangt, sowas zu installieren.

        Möge das "Self" mit euch sein

        --
        Neulich dachte ich mir, einmal S/M ausprobieren wäre eine tolle Erfahrung. Also hab ich Windows gebootet ...
        ie:{ br:> fl:| va:| ls:& fo:{ rl:( n4:{ de:] ss:) ch:? js:| mo:) sh:( zu:)
      2. Hallo Forum,

        Bei Schlagwörtern wie "PHP Patch Class" findest du sicherlich Tausende von Treffern, aber nicht das Gewünschte...

        Falsches Suchwort, probier mal diff, damit habe ich mal Implementierungen gefunden:

        http://www.php-resource.de/handbuch/function.xdiff-string-diff.htm
        http://www.php-resource.de/handbuch/function.xdiff-file-diff.htm
        http://forum.de.selfhtml.org/archiv/2005/9/t115401/

        Gruß
        Alexander Brock

        1. Ich grüsse den Cosmos,

          http://www.php-resource.de/handbuch/function.xdiff-string-diff.htm

          http://www.php-resource.de/handbuch/function.xdiff-file-diff.htm
          http://forum.de.selfhtml.org/archiv/2005/9/t115401/

          Diese Funktionen vergleichen zwar Dateien, haben aber mit patch und diff nichts zu tun.
          SVN erzeugt Dateien, die so aussehen;

            
          Index: admin/templates/show_edit.tpl  
          ===================================================================  
          --- admin/templates/show_edit.tpl (revision 11)  
          +++ admin/templates/show_edit.tpl (working copy)  
          @@ -1,44 +1,58 @@  
          +<h4 class="radio_plan_button"><a href="{$backlink}" class="radio_plan">zurück</a></h4>  
            
          -<h4 class="radio_plan_button"><a href="{$backlink}" class="radio_plan">{$back}</a></h4>  
          +{if $show_data}  
          + <h4 class="radio_plan_button"><a href="?action=show_edit">neue Show anlegen</a></h4>  
          +{/if}  
            
           <form action="{$target}" method="get" name="radio_plan">  
          - <h4 class="radio_plan" style="height: 17px;"><span style="float: left;">Titel</span><span style="float: right;"><input type="text" name="titel" value="{$show_edit_title}" class="radio_plan" /></h4>  
          - <h4 class="radio_plan" style="height: 54px;"><span style="vertical-align: top; float: left;">Beschreibung</span><span style="float: right;"><textarea name="text" class="radio_plan">{$show_edit_text}</textarea></span></h4>  
          + <h4 class="radio_plan" style="height: 17px;">  
          +  <span style="float: left;">Titel</span><span style="float: right;">  
          +  <input type="text" name="title" value="{$show_data.title}" class="radio_plan" />  
          + </h4>  
          + <h4 class="radio_plan" style="height: 54px;">  
          +  <span style="vertical-align: top; float: left;">Beschreibung</span>  
          +  <span style="float: right;"><textarea name="text" class="radio_plan">{$show_data.text}</textarea></span>  
          + </h4>  
            
            <h4 class="radio_plan" style="height: 17px;">  
             <span style="float: left;">Hintergrundfarbe</span>  
             <span style="float: right;">  
              <select name="color" class="radio_plan">  
          -       {$color_list}  
          +       <option value="0">keine</option>  
          +  
          +       {foreach from=$colors item=color name=color}  
          +     <option value="{$smarty.foreach.color.iteration}" style="background-color: {$color}">{$smarty.foreach.color.iteration} - {$color}</option>  
          +    {/foreach}  
          +  
              </select>  
             </span>  
            </h4>  
          - <h4 class="radio_plan"><button type="submit" name="submit" value="submit" class="radio_plan">{$submit_button}</button></h4>  
          - <input type="hidden" name="id" value="{$show_edit_id}" />  
          + <h4 class="radio_plan"><button type="submit" name="submit" value="submit" class="radio_plan">Absenden</button></h4>  
          + <input type="hidden" name="id" value="{$show_data.id}" />  
            <input type="hidden" name="action" value="show_edit" />  
          
          

          Und patch parst diese Datei und verändert die Files nur in den angegeben Zeilen. Und genau sowas suche ich auf PHP-Basis.

          Möge das "Self" mit euch sein

          --
          Neulich dachte ich mir, einmal S/M ausprobieren wäre eine tolle Erfahrung. Also hab ich Windows gebootet ...
          ie:{ br:> fl:| va:| ls:& fo:{ rl:( n4:{ de:] ss:) ch:? js:| mo:) sh:( zu:)