CVS Funktionen in PHP nachbilden

Hallo,

ich suche gerade ein Script, mit dem ich mir von einem CVS Server die aktuellen Sourcen ansehen kann und eine Version auschecken kann. Leider habe ich nur fertige Scripts (WebCVS, SandWeb etc.) gefunden, die lokal auf dem CVS Server laufen müssen. Das ist leider nicht möglich, da wir schon Probleme hatten, den CVS Server überhaupt für aussen zugänglich machen zu können. Nun gibt es aber einige Entwickler, die nicht immer oder gar nicht Zugriff aufs Netz haben und sich daher irgendwie einen aktuellen Stand auf Arbeit holen müssen. Dort ist logischerweise der pserver Port gesperrt (ich weiss, pserver ist unsicher, ging aber nicht naders). Nun würde ich gern ein eigenes Script schreiben, was es ermöglicht wenigstens ein aktuelles Snapshot des CVS zu bekommen. Nur wie realisiere ich das am Besten? Kann mir jemand Ansatzpunkte nennen? Oder kennt jemand zufällig ein Script was so etwas realisiert?
Hoffe auf Eure Hilfe

Gruß, Holger

Nun würde ich
gern ein eigenes Script schreiben, was es ermöglicht
wenigstens ein aktuelles Snapshot des CVS zu bekommen. Nur wie
realisiere ich das am Besten? Kann mir jemand Ansatzpunkte
nennen?

  1. na entweder auf dem cvsserver einen crontab einrichten, der ein checkout macht und das ergebnis mit scp+publickey auf den webserver schiebt - damit kann aber nciht sichergestellt werden, dass die aktuellste kopie rausgeht.

  2. irgendwas mit vpn od. auth. proxy.

  3. oder aber, der webserver hat mit seinem cvs-client zugriff auf den cvs-server dann:
    pseudocode:

    <?php //$sessid sollte geprueft sein
    $wd = "/tmp/cvscheckout$sessid"; $tf = "/tmp/cvscopy.$sessid.tgz"; $ofn = "projekt.tgz"; $retval = -1; exec("cvs checkout --targetdir $wd",$t0,$retval); if ($retval!=0) { die ("cvs checkout failed"); } exec("tar -cvzf $tf $wd",$t0,$retval); if ($retval!=0) { die ("tar failed"); } header("Content-disposition: inline; filename=$ofn"); header("Content-type: application/was hat tgz?"); if ($fh= fopen($tf)) { fpassthru($fh); fclose($fg); } ?\>
  1. na entweder auf dem cvsserver einen crontab einrichten, der
    ein checkout macht und das ergebnis mit scp+publickey auf den
    webserver schiebt - damit kann aber nciht sichergestellt
    werden, dass die aktuellste kopie rausgeht.

Fällt leider raus, da es ein Webhoster ist, der in dem Tarif keine Cronjobs zu lässt…

  1. irgendwas mit vpn od. auth. proxy.

Müsste ich schauen, macht den Übertragungsweg zum Client aber wahnsinnig lahm, da normale DSL Anschlüsse ja noch sehr geringe Uploadraten haben (habe z.B. nur 256kbit/s)

  1. oder aber, der webserver hat mit seinem cvs-client zugriff
    auf den cvs-server dann:

Die Idee hatte ich auch schon, aber so ähnliches Problem wie unter (1). Die Kiste, auf dem die Webpräsenz liegen würde, ist ein „normales“ Webhostingpaket. Da gibt es wohl kein cvs drauf, wobei es auf einen Versuch ankäme. Ansonsten müssen wir uns nach einer alternativen Webhostingmöglichkeit umschauen, wo wir zur Not auch selbst Programme einspielen können. Mal sehen was sich organisieren lässt.
Ich hatte gehofft, ähnlich wie IRC oder ähnliches, das Protokoll mit PHP nachbilden zu können, bzw. das es so etwas schon als Bibliothek gibt.

Danke Dir aber trotzdem für die Hilfe! Werde mal probieren, ob vielleicht doch ein cvs Client auf meiner Präsenz existiert!