Subversion Hook alışkanlık koşmak 'svn update' otomatik olarak çalıştırmak ancak bash isteminden çalışacak

0 Cevap php

Ben e-postalar göndermek ve sunucu üzerinde çalışan bir kopyasını güncellenmesi dahil olmak üzere çeşitli şeyler yapan bir subversion kanca oluşturduk. Bu bash propt çalıştırdığınızda mükemmel çalışıyor. Taahhüt üzerinde TortoiseSVN veya Netbeans ya aracılığıyla çalıştırdığınızda, e-posta vb gönderilir ancak güncelleme idam değil, herhangi bir hata ya da görünür. Dosya bir php dosyası ve ben bash komutları çalıştırmak için ters tırnak yöntemi kullanıyorum. Diğer bash komutları bu sorun değildir bu yüzden e-posta oluşturmak için çalıştırılır.

Burada güncelleştirmeyi çalıştırmak ve sonucunu giriş yapmalıdır hattıdır. $ Konum çalışma kopyası yerlerde bir veritabanından çekilir.

$update_output = `/usr/local/bin/svn update /home/$location >> update.log`;

Teşekkürler

James

Edit, More Complete Script:

#!/usr/local/bin/php
<?
$REPOS = $argv[1];
$REV = $argv[2];

$output[] = `/usr/local/bin/svnlook dirs-changed -r $REV $REPOS`;

foreach($output as $line)
{
        preg_match("$([^/]+)$", $line, $array);
        $projects[] = $array[0];
}

$projects = array_unique($projects);

$mysqli = new mysqli('localhost', 'svn_user', 'pringles', 'svn_maindb');

if ($mysqli->connect_error) {
    die('Connect Error (' . $mysqli->connect_errno . ') '
            . $mysqli->connect_error);
}

foreach($projects as $project)
{
        $query = "SELECT * FROM Project WHERE name = '$project' LIMIT 1";
        $result = $mysqli->query($query);
        $row = $result->fetch_assoc();
        $proj_id = $row['id'];
        $location = $row['location'];
        if(!empty($location))
        {
                $update_output = `/usr/local/bin/svn update /home/$location >> update.log`;
        }

        /* The below line only works when the script is run by hand */
        $test = `/usr/bin/lessecho test >> /home/svn/repo/hooks/update.log`;


        /* Grab user from DB and call send_email for user */
}

function send_email($REPOS, $REV, $programmer, $email)
{
        $author = `/usr/local/bin/svnlook author -r $REV $REPOS`;
        $message .= "Project Committed By $author
        Comments:
        ";
        $message .= `/usr/local/bin/svnlook log -r $REV $REPOS`;
        $message .= "
        ===========List of Changes========

        U = Updated
        A = Added
        D = Deleted

        ";
        $message .= `/usr/local/bin/svnlook changed -r $REV $REPOS`;

        /* Compose and Send Email */
}

0 Cevap