2009-02-17 10 views
1

J'ai un outil de développement qui modifie le système de fichiers local en utilisant php. Ces projets sont souvent vérifiés à partir de SVN. Le problème que je voudrais éviter est le déplacement/suppression/renommage de directoires contrôlés par la version - et la rupture qui se produit à un SVN extrait quand on fait ces modifications localement.Gérer les structures de fichiers SVN locales avec PHP

Existe-t-il un moyen simple d'appliquer les commandes SVN (déplacer ajouter, supprimer, renommer etc) lorsque j'effectue également les opérations de système de fichiers correspondantes?

Ou est-il plus simple de supprimer .svn dirs si vous trouvez dans move/rename target?

Pour clarifier ce:

Un extrait svn qui a une structure de:

somedir/
--foo/
--cheese/

utilisateur 1 modifie ce système de fichiers structure (en utilisant l'outil dev), renommant le répertoire 'foo' (qui est sous contrôle de version) en 'modified', quand ils vont commettre leurs changements, svn va faire une erreur car le changement de nom ne se fait pas via les commandes SVN.

Cela pourrait être en cours d'exécution sur une variété de serveurs de développement (généralement des machines de bureau en cours d'exécution sur apache victoire ou mac)

ne veulent pas que d'ignorer ou de se déconnecter de la svn.

Répondre

1

Dans votre fichier PHP, vous pouvez utiliser les commandes via svnexec()

<?php 
$Output = ''; 
$ExitCode = 0; 
exec('svn mv "'.$Current.'" "'.$New.'"', $Output, $ExitCode); 

$Output est la sortie de la commande et $ExitCode sera 0 si la commande a réussi. Notez cependant que pour des raisons de sécurité, la commande exec() peut être désactivée sur certains systèmes. Si vous avez le contrôle de votre fichier php.ini, vous pouvez choisir de l'activer/désactiver.

+0

Je vais jeter un coup d'œil sur les commandes en cours sur nos machines locales, merci pour cela –

+0

Il y a aussi une extension svn dans pecl, que vous pouvez utiliser. – troelskn

1

Par programmation, il vaut peut-être mieux simplement supprimer les dossiers .svn. C'est probablement juste une ou deux lignes de code.

Une autre chose à essayer, pourquoi ne pas exporter le module? De cette façon, vous ne recevez pas de dossiers .svn.

Notez également que vous pouvez écrire toutes les commandes svn et les exécuter.

0

Si j'ai bien compris, vous avez un répertoire contrôlé par version (esclave) dans un autre (maître). Pourquoi ne pas simplement ajouter le répertoire slave à master svn ignore list?

svn propset svn:ignore slave . 
svn ci . -m 'Added ignore dir' 

A partir de maintenant en cours d'exécution svn up/ajouter/supprimer dans le répertoire maître ne sera pas gâcher svn esclave, alors que ce dernier reste pleinement fonctionnel.

Questions connexes