Jump to content
php.lv forumi

SVN un PHP


aaxc

Recommended Posts

Sveiki,

ir radusies maza problēma. Nesvarīgu iemeslu dēļ, ir nepieciešams izveidot weblapas veida svn update formu.

 

Atradu šo linku ( http://www.php.net/m...en/book.svn.php ), bet uz Windows mašīnas īsti nestrādā ( ja jums ir izdevies, tad droši padalamies pieredzē ).

Notestēju arī šo ( http://websvn.tigris.org/ ), bet tur nav iespējas svn update taisīt, kas manā gadījumā ir svarīgākais.

 

Tātad sāku pats ar primitīviem shell_exec tasīt augšā:

 

<?php

define ( SVN_DIR, 'c:\\svn\\server_dir' );

function svn_exec ( $cmd ) {

 $output.= trim ( shell_exec( $cmd . ' ' . SVN_DIR ) );

 return $output;

}

echo "<pre>";

echo svn_exec ( 'svn st' );
echo svn_exec ( 'svnversion' );

echo "</pre>";

?>

 

Tik tālu vis strādā smuki, bet kā ņemam ko "apjomīgāku", kā piemēram:

 

echo svn_exec ( 'svn log' );

 

Tā lapa vienkārši nofrīzo, jeb mēģina bezgalīgi ilgi lādēties ( pat timeout neiestājas ).

 

Jautājums elementārs, vai ir kāds ir ko tādu taisījis un ja jā, tad lūgums padalīties ar pieredzi un risinājumu.

 

Jau iepriekš pateicos.

 

 

Papildinfo: Uzgāju vēl šādu rakstu:

 

1. Man ir uzliktas Full control pravas uz viesiem folderiem un failiem ( tai skaitā hidden ).

2. Man ir viens svn clients ( Tortoise ) klikšķināšanai un paralēli shell komandām otrs ( Slik ). Bet tā kā Tortoise neatbalsta shell komandas, tad no šī viedokļ tikai viens klients.

Edited by aaxc
Link to comment
Share on other sites

Visdrīzāk problēma ir tajā, ka uz izpildes laiku php tiek nobloķēts līdz tiek izpildīta komanda.

Tā atrisināšanai var mēģināt: http://it.php.net/ma...ction.popen.php

Notestēju, tieši tas pats.

 

Vot nesaprotu, kāpēc es varu izpildīt principā visas komandas caur shell izņemot specifiskus svn pieprasiijumus...

Link to comment
Share on other sites

Papildinfo: Uzgāju vēl šādu rakstu:

 

1. Man ir uzliktas Full control pravas uz viesiem folderiem un failiem ( tai skaitā hidden ).

2. Man ir viens svn clients ( Tortoise ) klikšķināšanai un paralēli shell komandām otrs ( Slik ). Bet tā kā Tortoise neatbalsta shell komandas, tad no šī viedokļ tikai viens klients.

Link to comment
Share on other sites

Varbūt ir vērs pamēģināt kādu city exec komandu? kaut vai exec vai system?

 

Es gan nezinu kā ir uz windows, bet vēl varētu pamēģināt šitā

exec('svn log > tmp_file');

 

Un pēc tam taisīt ajax pieprasījumus un pārbaudīt if(is_file('tmp_file')) {//super logs atnācis}else{//atkartojam ajaxu!}

Link to comment
Share on other sites

Problēma atrisināta, vajadzēja pievienot --non-interactive parametru un vis aiziet pa smuko:

 

<?php

function svn_exec ( $cmd, $log_file = false ) {

$log = "";
if ( $log_file ) $log = ' > ' . $log_file;

if ( $_REQUEST['debug'] ) echo '<p style="color: blue;">' . $cmd . ' ' . SVN_DIR . '</p>';

if ( $svn_result = shell_exec( $cmd . ' ' . SVN_DIR . $log ) ) {
 $result = "Success:\n\n" . $svn_result;
 //echo "<code>" . ( str_replace ( array('<','>', "\n"), array('<','>', '<br />'), $svn_result ) ) . "</code>";
} else {
 $result = 'Fail';
}

return $result;

}

echo "<pre>";

echo svn_exec ( 'svn --non-interactive log --xml --quiet' );

echo "</pre>";

?>

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...