Rumah pembangunan bahagian belakang tutorial php php操作SVN版本服务器类代码_php技巧

php操作SVN版本服务器类代码_php技巧

May 17, 2016 am 09:14 AM
svn

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;
}
}
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Repo: Cara menghidupkan semula rakan sepasukan
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Cara mendapatkan biji gergasi
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Cara menggunakan SVN untuk kawalan versi dalam pembangunan PHP Cara menggunakan SVN untuk kawalan versi dalam pembangunan PHP Jun 27, 2023 pm 01:39 PM

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

Java SVN: penjaga repositori kod, memastikan kestabilan kod Java SVN: penjaga repositori kod, memastikan kestabilan kod Mar 09, 2024 am 09:20 AM

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 Penjelasan terperinci tentang cara memasang dan menyediakan pemalam EclipseSVN Jan 28, 2024 am 08:42 AM

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

Gantikan svn diff dengan vimdiff: alat untuk membandingkan kod Gantikan svn diff dengan vimdiff: alat untuk membandingkan kod Jan 09, 2024 pm 07:54 PM

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_

Pemasangan SVN pada CentOS dan pemasangan baris arahan Pemasangan SVN pada CentOS dan pemasangan baris arahan Feb 13, 2024 am 11:24 AM

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

Apakah perbezaan antara svn dan vs Apakah perbezaan antara svn dan vs Jun 21, 2022 am 11:23 AM

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.

Kemahiran penting untuk pembangun Linux: hanya kuasai kawalan versi SVN Kemahiran penting untuk pembangun Linux: hanya kuasai kawalan versi SVN Jan 26, 2024 pm 09:54 PM

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:

Bermula dengan PHP: Pengurusan Versi SVN Bermula dengan PHP: Pengurusan Versi SVN May 20, 2023 am 08:29 AM

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.

See all articles