php操作SVN版本服务器类代码_php技巧
SvnPeer.php
/**
*
* This class for execute the external program of svn
*
* @auth Seven Yang
*
*/
class SvnPeer
{
/**
* List directory entries in the repository
*
* @param string a specific project repository path
* @return bool true, if validated successfully, otherwise false
*/
static public function ls($repository)
{
$command = "svn ls " . $repository;
$output = SvnPeer::runCmd($command);
$output = implode("
", $output);
if (strpos($output, 'non-existent in that revision')) {
return false;
}
return "
" . $command . "
" . $output;
}
/**
* Duplicate something in working copy or repository, remembering history
*
* @param $src
* @param $dst
* @param $comment string specify log message
* @return bool true, if copy successfully, otherwise return the error message
*
* @todo comment need addslashes for svn commit
*/
static public function copy($src, $dst, $comment)
{
$command = "svn cp $src $dst -m '$comment'";
$output = SvnPeer::runCmd($command);
$output = implode("
", $output);
if (strpos($output, 'Committed revision')) {
return true;
}
return "
" . $command . "
" . $output;
}
/**
* Remove files and directories from version control
*
* @param $url
* @return bool true, if delete successfully, otherwise return the error message
*
* @todo comment need addslashes for svn commit
*/
static public function delete($url, $comment)
{
$command = "svn del $url -m '$comment'";
$output = SvnPeer::runCmd($command);
$output = implode('
', $output);
if (strpos($output, 'Committed revision')) {
return true;
}
return "
" . $command . "
" . $output;
}
/**
* Move and/or rename something in working copy or repository
*
* @param $src string trunk path
* @param $dst string new branch path
* @param $comment string specify log message
* @return bool true, if move successfully, otherwise return the error message
*
* @todo comment need addslashes for svn commit
*/
static public function move($src, $dst, $comment)
{
$command = "svn mv $src $dst -m '$comment'";
$output = SvnPeer::runCmd($command);
$output = implode('
', $output);
if (strpos($output, 'Committed revision')) {
return true;
}
return "
" . $command . "
" . $output;
}
/**
* Create a new directory under version control
*
* @param $url string
* @param $comment string the svn message
* @return bool true, if create successfully, otherwise return the error message
*
* @todo comment need addslashes for svn commit
*/
static public function mkdir($url, $comment)
{
$command = "svn mkdir $url -m '$comment'";
$output = SvnPeer::runCmd($command);
$output = implode('
', $output);
if (strpos($output, 'Committed revision')) {
return true;
}
return "
" . $command . "
" . $output;
}
static public function diff($pathA, $pathB)
{
$output = SvnPeer::runCmd("svn diff $pathA $pathB");
return implode('
', $output);
}
static public function checkout($url, $dir)
{
$command = "cd $dir && svn co $url";
$output = SvnPeer::runCmd($command);
$output = implode('
', $output);
if (strstr($output, 'Checked out revision')) {
return true;
}
return "
" . $command . "
" . $output;
}
static public function update($path)
{
$command = "cd $path && svn up";
$output = SvnPeer::runCmd($command);
$output = implode('
', $output);
preg_match_all("/[0-9]+/", $output, $ret);
if (!$ret[0][0]){
return "
" . $command . "
" . $output;
}
return $ret[0][0];
}
static public function merge($revision, $url, $dir)
{
$command = "cd $dir && svn merge -r1:$revision $url";
$output = implode('
', SvnPeer::runCmd($command));
if (strstr($output, 'Text conflicts')) {
return 'Command: ' . $command .'
'. $output;
}
return true;
}
static public function commit($dir, $comment)
{
$command = "cd $dir && svn commit -m'$comment'";
$output = implode('
', SvnPeer::runCmd($command));
if (strpos($output, 'Committed revision') || empty($output)) {
return true;
}
return $output;
}
static public function getStatus($dir)
{
$command = "cd $dir && svn st";
return SvnPeer::runCmd($command);
}
static public function hasConflict($dir)
{
$output = SvnPeer::getStatus($dir);
foreach ($output as $line){
if ('C' == substr(trim($line), 0, 1) || ('!' == substr(trim($line), 0, 1))){
return true;
}
}
return false;
}
/**
* Show the log messages for a set of path with XML
*
* @param path string
* @return log message string
*/
static public function getLog($path)
{
$command = "svn log $path --xml";
$output = SvnPeer::runCmd($command);
return implode('', $output);
}
static public function getPathRevision($path)
{
$command = "svn info $path --xml";
$output = SvnPeer::runCmd($command);
$string = implode('', $output);
$xml = new SimpleXMLElement($string);
foreach ($xml->entry[0]->attributes() as $key=>$value){
if ('revision' == $key) {
return $value;
}
}
}
static public function getHeadRevision($path)
{
$command = "cd $path && svn up";
$output = SvnPeer::runCmd($command);
$output = implode('
', $output);
preg_match_all("/[0-9]+/", $output, $ret);
if (!$ret[0][0]){
return "
" . $command . "
" . $output;
}
return $ret[0][0];
}
/**
* Run a cmd and return result
*
* @param string command line
* @param boolen true need add the svn authentication
* @return array the contents of the output that svn execute
*/
static protected function runCmd($command)
{
$authCommand = ' --username ' . SVN_USERNAME . ' --password ' . SVN_PASSWORD . ' --no-auth-cache --non-interactive --config-dir '.SVN_CONFIG_DIR.'.subversion';
exec($command . $authCommand . " 2>&1", $output);
return $output;
}
}

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Kawalan versi ialah operasi yang sangat biasa dalam pembangunan PHP, dan alat yang paling biasa digunakan ialah SVN (Subversion). Ia boleh mengurus versi sejarah kod dan kemas kini kod semasa pembangunan kolaboratif. Berikut akan memperkenalkan cara menggunakan SVN untuk kawalan versi dalam pembangunan PHP. 1. Pasang klien dan pelayan SVN Pertama, anda perlu memasang klien dan pelayan SVN. Pelanggan SVN boleh memuat turun versi yang sepadan dari laman web rasmi SVN dan memasangnya, manakala pelayan perlu dibina sendiri Kaedah khusus boleh

Pengenalan kepada SVN SVN (Subversion) ialah sistem kawalan versi terpusat yang digunakan untuk mengurus dan mengekalkan asas kod. Ia membolehkan berbilang pembangun bekerjasama dalam pembangunan kod secara serentak dan menyediakan rekod lengkap pengubahsuaian sejarah kepada kod tersebut. Dengan menggunakan SVN, pembangun boleh: Memastikan kestabilan kod dan mengelakkan kehilangan dan kerosakan kod. Jejaki sejarah pengubahsuaian kod dan mudah kembali ke versi sebelumnya. Pembangunan kolaboratif, berbilang pembangun mengubah suai kod pada masa yang sama tanpa konflik. Operasi SVN Asas Untuk menggunakan SVN, anda perlu memasang klien SVN, seperti TortoiseSVN atau SublimeMerge. Kemudian anda boleh mengikuti langkah ini untuk melaksanakan operasi asas: 1. Cipta asas kod svnmkdirHttp://exampl

Penjelasan terperinci tentang cara memasang dan menyediakan pemalam EclipseSVN Eclipse ialah persekitaran pembangunan bersepadu (IDE) yang digunakan secara meluas yang menyokong banyak pemalam yang berbeza untuk melanjutkan fungsinya. Salah satunya ialah pemalam EclipseSVN, yang membolehkan pembangun berinteraksi dengan sistem kawalan versi Subversion. Artikel ini akan memperincikan cara memasang dan menyediakan pemalam EclipseSVN dan memberikan contoh kod khusus. Langkah 1: Pasang pemalam EclipseSVN dan buka Eclipse

Di bawah Linux, sangat sukar untuk menggunakan arahan svndiff secara langsung untuk melihat pengubahsuaian kod, jadi saya mencari penyelesaian yang lebih baik di Internet, iaitu menggunakan vimdiff sebagai alat melihat kod untuk svndiff, terutamanya bagi mereka yang biasa menggunakan vim. Ia sangat mudah. Apabila menggunakan arahan svndiff untuk membandingkan pengubahsuaian fail tertentu, contohnya, jika anda melaksanakan perintah berikut: $svndiff-r4420ngx_http_limit_req_module.c, arahan berikut sebenarnya akan dihantar ke program diff lalai: -u-Lngx_http_limit_req_module.c (semakan4420)-Lngx_

Memasang SVN pada CentOS ialah operasi yang sangat biasa Ia adalah sistem kawalan versi yang berkuasa yang boleh digunakan untuk mengurus dan menjejaki perubahan semasa pembangunan perisian Artikel ini akan memperkenalkan secara terperinci cara memasang SVN pada CentOS dan menyediakan beberapa pemasangan baris Perintah yang biasa digunakan kaedah. Terdapat banyak cara untuk memasang SVN pada CentOS Dua kaedah pemasangan biasa akan diperkenalkan di bawah. 1. Buka terminal dan log masuk sebagai pengguna root. 2. Jalankan arahan berikut untuk mengemas kini senarai pakej sistem: ```yumupdate3 Jalankan arahan berikut untuk memasang SVN: yuminstallsubversion4 Selepas pemasangan selesai, anda boleh mengesahkan sama ada SVN telah berjaya dipasang dengan menjalankan arahan berikut: svn -. -v

Perbezaan: 1. vss dibangunkan oleh Microsoft dan dibayar, manakala svn adalah sumber terbuka dan percuma 2. vss mesti mempunyai klien, manakala svn boleh menggunakan klien, mod baris arahan atau baca sahaja pada Akses halaman web; 3. vss hanya menyokong sistem windows, manakala svn menyokong sistem windows dan linux 4. vss ialah mod "kunci-edit-buka kunci", dan svn lalai kepada mod "ubah suai-konflik-gabung" 5. Nombor versi vss sepadan ialah satu fail, dan nombor versi svn sepadan dengan keseluruhan pustaka versi.

Sebagai pembangun Linux, anda sering perlu menggunakan SVN untuk mengawal versi projek. Untuk pembangun yang sangat baik, mengetahui cara menyemak versi SVN sudah pasti merupakan salah satu kemahiran penting. Hari ini, saya ingin mengambil peluang ini untuk berkongsi pengalaman saya dengan anda, dengan harapan dapat membantu anda menguasai kemahiran praktikal ini dengan lebih baik. 1. Untuk memasang alat baris arahan SVN, sila pasang alat baris arahan SVN dalam persekitaran Linux dahulu! Sila dail terminal dan kemudian masukkan arahan berikut dengan selamat untuk melengkapkan pemasangan: ```Pengguna yang dihormati, sila laksanakan sudoapt-getinstallsubversion untuk memasang Subversion. 2. Sambung ke pelayan SVN Selepas pemasangan selesai, kita perlu menyambung ke pelayan SVN. Masukkan arahan berikut:

Sebagai bahasa skrip sebelah pelayan yang biasa digunakan, PHP digunakan secara meluas dalam bidang pembangunan web kerana kelebihan sumber terbuka dan merentas platformnya. Dalam pembangunan kerjasama berbilang orang, kawalan versi adalah alat yang sangat diperlukan. Ia boleh mengurus pengubahsuaian dan kemas kini kod sumber dengan berkesan dan mengelakkan konflik yang disebabkan oleh penyegerakan kod di kalangan ahli pasukan. Sebagai alat kawalan versi yang popular, SVN juga digunakan secara meluas dalam pembangunan PHP. Artikel ini akan memperkenalkan anda kepada pengetahuan asas kawalan versi SVN dalam pembangunan PHP, termasuk pemasangan SVN.
