Heim Backend-Entwicklung PHP-Tutorial 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;
}
}
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So verwenden Sie SVN zur Versionskontrolle in der PHP-Entwicklung So verwenden Sie SVN zur Versionskontrolle in der PHP-Entwicklung Jun 27, 2023 pm 01:39 PM

Die Versionskontrolle ist ein sehr häufiger Vorgang in der PHP-Entwicklung, und das am häufigsten verwendete Tool ist SVN (Subversion). Es kann problemlos historische Codeversionen und Codeaktualisierungen während der gemeinsamen Entwicklung verwalten. Im Folgenden wird die Verwendung von SVN zur Versionskontrolle in der PHP-Entwicklung vorgestellt. 1. Installieren Sie den SVN-Client und -Server. Zuerst müssen Sie den SVN-Client und -Server installieren. Der SVN-Client kann die entsprechende Version von der offiziellen SVN-Website herunterladen und installieren, während der Server selbst erstellt werden muss. Die spezifische Methode kann sein

Java SVN: Der Wächter des Code-Repositorys, der die Codestabilität gewährleistet Java SVN: Der Wächter des Code-Repositorys, der die Codestabilität gewährleistet Mar 09, 2024 am 09:20 AM

Einführung in SVN SVN (Subversion) ist ein zentralisiertes Versionskontrollsystem zur Verwaltung und Pflege von Codebasen. Es ermöglicht mehreren Entwicklern die gleichzeitige Zusammenarbeit bei der Codeentwicklung und bietet eine vollständige Aufzeichnung der historischen Änderungen am Code. Durch die Verwendung von SVN können Entwickler: Codestabilität gewährleisten und Codeverluste und -schäden vermeiden. Verfolgen Sie den Code-Änderungsverlauf und führen Sie problemlos ein Rollback auf frühere Versionen durch. Kollaborative Entwicklung: Mehrere Entwickler ändern den Code gleichzeitig und ohne Konflikte. Grundlegende SVN-Vorgänge Um SVN verwenden zu können, müssen Sie einen SVN-Client installieren, z. B. TortoiseSVN oder SublimeMerge. Anschließend können Sie die folgenden Schritte ausführen, um grundlegende Vorgänge auszuführen: 1. Erstellen Sie die Codebasis svnmkdirHttp://exampl

Ausführliche Erklärung zur Installation und Einrichtung des EclipseSVN-Plug-Ins Ausführliche Erklärung zur Installation und Einrichtung des EclipseSVN-Plug-Ins Jan 28, 2024 am 08:42 AM

Ausführliche Erklärung zur Installation und Einrichtung des EclipseSVN-Plug-Ins. Eclipse ist eine weit verbreitete integrierte Entwicklungsumgebung (IDE), die viele verschiedene Plug-Ins zur Erweiterung ihrer Funktionalität unterstützt. Eines davon ist das EclipseSVN-Plugin, das Entwicklern die Interaktion mit dem Versionskontrollsystem Subversion ermöglicht. In diesem Artikel wird detailliert beschrieben, wie Sie das EclipseSVN-Plug-in installieren und einrichten, und es werden spezifische Codebeispiele bereitgestellt. Schritt 1: Installieren Sie das EclipseSVN-Plug-in und öffnen Sie Eclipse

Ersetzen Sie svn diff durch vimdiff: ein Tool zum Vergleichen von Code Ersetzen Sie svn diff durch vimdiff: ein Tool zum Vergleichen von Code Jan 09, 2024 pm 07:54 PM

Unter Linux ist es sehr schwierig, den Befehl svndiff direkt zum Anzeigen von Codeänderungen zu verwenden. Daher habe ich im Internet nach einer besseren Lösung gesucht, nämlich die Verwendung von vimdiff als Tool zum Anzeigen von Code für svndiff, insbesondere für diejenigen, die daran gewöhnt sind vim. Es ist sehr praktisch. Wenn Sie den Befehl svndiff zum Vergleichen der Änderungen einer bestimmten Datei verwenden und beispielsweise den folgenden Befehl ausführen: $svndiff-r4420ngx_http_limit_req_module.c, wird der folgende Befehl tatsächlich an das Standard-Diff-Programm gesendet: -u-Lngx_http_limit_req_module.c (revision4420)-Lngx_

SVN-Installation unter CentOS und Befehlszeileninstallation SVN-Installation unter CentOS und Befehlszeileninstallation Feb 13, 2024 am 11:24 AM

Die Installation von SVN unter CentOS ist ein leistungsstarkes Versionskontrollsystem, mit dem Änderungen während der Softwareentwicklung verwaltet und verfolgt werden können. In diesem Artikel wird detailliert beschrieben, wie SVN unter CentOS installiert wird, und es werden einige häufig verwendete Befehlszeileninstallationen beschrieben Methode. Es gibt viele Möglichkeiten, SVN unter CentOS zu installieren. Im Folgenden werden zwei gängige Installationsmethoden vorgestellt. 1. Öffnen Sie das Terminal und melden Sie sich als Root-Benutzer an. 2. Führen Sie den folgenden Befehl aus, um die Systempaketliste zu aktualisieren: „yumupdate3“. Führen Sie den folgenden Befehl aus, um SVN zu installieren: yuminstallsubversion4. Nach Abschluss der Installation können Sie überprüfen, ob SVN erfolgreich installiert wurde, indem Sie den folgenden Befehl ausführen: svn - -v

Was ist der Unterschied zwischen svn und vss? Was ist der Unterschied zwischen svn und vss? Jun 21, 2022 am 11:23 AM

Unterschiede: 1. vss wurde von Microsoft entwickelt und ist kostenpflichtig, während svn Open Source und kostenlos ist. 2. vss muss über einen Client verfügen, während svn den Client, den Befehlszeilenmodus oder den schreibgeschützten Zugriff auf die Webseite verwenden kann. 3. vss unterstützt nur Windows-Systeme, während svn Windows- und Linux-Systeme unterstützt. 4. vss ist ein „Sperren-Bearbeiten-Entsperren“-Modus und svn ist standardmäßig auf einen „Ändern-Konflikt-Zusammenführen“-Modus eingestellt vss entspricht einer einzelnen Datei, und die Versionsnummer von svn entspricht der gesamten Versionsbibliothek.

Grundlegende Fähigkeiten für Linux-Entwickler: Beherrschen Sie einfach die SVN-Versionskontrolle Grundlegende Fähigkeiten für Linux-Entwickler: Beherrschen Sie einfach die SVN-Versionskontrolle Jan 26, 2024 pm 09:54 PM

Als Linux-Entwickler müssen Sie häufig SVN verwenden, um Projektversionen zu steuern. Für exzellente Entwickler ist das Wissen, wie man SVN-Versionen überprüft, zweifellos eine der wesentlichen Fähigkeiten. Heute möchte ich die Gelegenheit nutzen, meine Erfahrungen mit Ihnen zu teilen, in der Hoffnung, Ihnen dabei zu helfen, diese praktische Fähigkeit besser zu beherrschen. 1. Um das SVN-Befehlszeilentool zu installieren, installieren Sie bitte zuerst das SVN-Befehlszeilentool in der Linux-Umgebung! Bitte wählen Sie das Terminal und geben Sie dann sicher den folgenden Befehl ein, um die Installation abzuschließen: „Lieber Benutzer, bitte führen Sie sudoapt-getinstallsubversion aus, um Subversion zu installieren.“ 2. Verbindung zum SVN-Server herstellen Nachdem die Installation abgeschlossen ist, müssen wir eine Verbindung zum SVN-Server herstellen. Geben Sie den folgenden Befehl ein:

Erste Schritte mit PHP: SVN-Versionsverwaltung Erste Schritte mit PHP: SVN-Versionsverwaltung May 20, 2023 am 08:29 AM

Als häufig verwendete serverseitige Skriptsprache wird PHP aufgrund seiner Open-Source- und plattformübergreifenden Vorteile häufig im Bereich der Webentwicklung eingesetzt. Bei der Entwicklung der Zusammenarbeit mehrerer Personen ist die Versionskontrolle ein unverzichtbares Werkzeug. Sie kann die Änderung und Aktualisierung des Quellcodes effektiv verwalten und Konflikte vermeiden, die durch eine Nichtsynchronisierung des Codes zwischen Teammitgliedern verursacht werden. Als beliebtes Tool zur Versionskontrolle wird SVN auch häufig in der PHP-Entwicklung eingesetzt. Dieser Artikel führt Sie in die Grundkenntnisse der SVN-Versionskontrolle in der PHP-Entwicklung ein, einschließlich der Installation von SVN.

See all articles