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;
}
}

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Le contrôle de version est une opération très courante dans le développement PHP, et l'outil le plus couramment utilisé est SVN (Subversion). Il peut facilement gérer les versions historiques du code et les mises à jour du code lors du développement collaboratif. Ce qui suit explique comment utiliser SVN pour le contrôle de version dans le développement PHP. 1. Installez le client et le serveur SVN. Tout d'abord, vous devez installer le client et le serveur SVN. Le client SVN peut télécharger la version correspondante sur le site officiel de SVN et l'installer, tandis que le serveur doit être construit par vous-même. La méthode spécifique peut être.

Introduction à SVN SVN (Subversion) est un système de contrôle de version centralisé utilisé pour gérer et maintenir les bases de code. Il permet à plusieurs développeurs de collaborer simultanément au développement du code et fournit un enregistrement complet des modifications historiques apportées au code. En utilisant SVN, les développeurs peuvent : Assurer la stabilité du code et éviter la perte et l'endommagement du code. Suivez l’historique des modifications du code et revenez facilement aux versions précédentes. Développement collaboratif, plusieurs développeurs modifient le code en même temps sans conflit. Opérations de base de SVN Pour utiliser SVN, vous devez installer un client SVN, tel que TortoiseSVN ou SublimeMerge. Ensuite, vous pouvez suivre ces étapes pour effectuer les opérations de base : 1. Créez la base de code svnmkdirHttp://exampl

Explication détaillée de la façon d'installer et de configurer le plug-in EclipseSVN. Eclipse est un environnement de développement intégré (IDE) largement utilisé qui prend en charge de nombreux plug-ins différents pour étendre ses fonctionnalités. L'un d'eux est le plugin EclipseSVN, qui permet aux développeurs d'interagir avec le système de contrôle de version Subversion. Cet article détaille comment installer et configurer le plug-in EclipseSVN et fournit des exemples de code spécifiques. Étape 1 : Installez le plug-in EclipseSVN et ouvrez Eclipse

Sous Linux, il est très difficile d'utiliser directement la commande svndiff pour visualiser les modifications de code, j'ai donc cherché une meilleure solution sur Internet, qui consiste à utiliser vimdiff comme outil de visualisation de code pour svndiff, en particulier pour les personnes habituées à utiliser vim. C'est très pratique. Lorsque vous utilisez la commande svndiff pour comparer les modifications d'un certain fichier, par exemple, si vous exécutez la commande suivante : $svndiff-r4420ngx_http_limit_req_module.c, la commande suivante sera en fait envoyée au programme diff par défaut : -u-Lngx_http_limit_req_module.c (révision4420)-Lngx_

L'installation de SVN sur CentOS est une opération très courante. Il s'agit d'un système de contrôle de version puissant qui peut être utilisé pour gérer et suivre les modifications pendant le développement de logiciels. Cet article présentera en détail comment installer SVN sur CentOS et fournira quelques outils couramment utilisés. méthode d'installation de la ligne. Il existe de nombreuses façons d'installer SVN sur CentOS. Deux méthodes d'installation courantes seront présentées ci-dessous. 1. Ouvrez le terminal et connectez-vous en tant qu'utilisateur root. 2. Exécutez la commande suivante pour mettre à jour la liste des packages système : ```yumupdate3. Exécutez la commande suivante pour installer SVN : yuminstallsubversion4. Une fois l'installation terminée, vous pouvez vérifier si SVN a été installé avec succès en exécutant la commande suivante : svn -. -v

Différences : 1. vss a été développé par Microsoft et est payant, tandis que svn est open source et gratuit ; 2. vss doit avoir un client, tandis que svn peut utiliser le client, en mode ligne de commande ou en lecture seule sur la page Web Access ; 3. vss ne prend en charge que les systèmes Windows, tandis que svn prend en charge les systèmes Windows et Linux ; 4. vss est un mode "verrouiller-éditer-déverrouiller", et svn est par défaut un mode "modifier-conflit-fusionner" 5. Le numéro de version de ; vss correspond à un seul fichier et le numéro de version de svn correspond à l'ensemble de la bibliothèque de versions.

En tant que développeur Linux, vous devez souvent utiliser SVN pour contrôler les versions du projet. Pour les excellents développeurs, savoir vérifier les versions SVN est sans aucun doute l’une des compétences essentielles. Aujourd’hui, j’aimerais profiter de cette occasion pour partager mon expérience avec vous, en espérant vous aider à mieux maîtriser cette compétence pratique. 1. Pour installer l'outil de ligne de commande SVN, veuillez d'abord installer l'outil de ligne de commande SVN dans l'environnement Linux ! Veuillez composer le terminal, puis entrez en toute sécurité la commande suivante pour terminer l'installation : ```Cher utilisateur, veuillez exécuter sudoapt-getinstallsubversion pour installer Subversion. 2. Connectez-vous au serveur SVN Une fois l'installation terminée, nous devons nous connecter au serveur SVN. Entrez la commande suivante :

En tant que langage de script côté serveur couramment utilisé, PHP est largement utilisé dans le domaine du développement Web en raison de ses avantages open source et multiplateforme. Dans le développement d'une collaboration multi-personnes, le contrôle de version est un outil indispensable. Il peut gérer efficacement la modification et la mise à jour du code source et éviter les conflits causés par une désynchronisation du code entre les membres de l'équipe. En tant qu'outil de contrôle de version populaire, SVN est également largement utilisé dans le développement PHP. Cet article vous présentera les connaissances de base du contrôle de version SVN dans le développement PHP, y compris l'installation de SVN.
