2008-10-08 7 views
-1

Nous avons un modèle de projet que nous copions souvent. donc nous pouvons costumer la copie et toujours avoir un modèle commun.
Comment écrire un script "copy, check-out, change and check-in" automatique pour svn

Pour optimiser la -process « copie & modifications initiales », je pensais que je peux écrire un petit script, qui effectue les opérations suivantes:

  • copie du projet-modèle (svn) dans un autre répertoire dans le svn
  • check-out le projet et faire quelques changements (noms de changement dans certains fichiers)
  • enregistrement dans le projet personnalisé

T La question est: quelle est la meilleure façon de faire cela? une expérience dans ce domaine? quel type de script (batch normal ou java)? un exemple de code?

merci pour vos réponses

Répondre

0

Voici quelque chose que j'ai mis avec quelques informations que j'ai trouvé here.

#!/bin/bash 


searchterm="<ProjectName>" 
replaceterm="New Project" 
srcsvnrepo="file:///svnrepoaddress" 
destsvnrepo="file:///data/newrepo" 
dumpfile="/home/<user>/repo.dump" 
tmpfolder="/home/<user>/tmp_repo" 

svnadmin dump $srcsvnrepo > $dumpfile 
svnadmin create --fs-type fsfs $destsvnrepo 
svnadmin load $destsvnrepo < $dumpfile 
svn co $destsvnrepo $tmpfolder 

for file in $(grep -l -R $searchterm $tmpfolder) 
    do 
    sed -e "s/$searchterm/$replaceterm/ig" $file > /tmp/tempfile.tmp 
    mv /tmp/tempfile.tmp $file 
    echo "Modified: " $file 
    done 

svn ci $tmpfolder --message "Initial Check-In" 

En gros, cela videra une sauvegarde de la prise en pension source svn spécifiée dans un fichier, créez un nouveau repo, chargez la sauvegarde en elle, consultez les fichiers, obtenir une liste des fichiers qui contiennent la chaîne de recherche pour, effectuez une regex sur chacun de ces fichiers en stockant la nouvelle version dans un emplacement temporaire, puis en ramenant le fichier temporaire à l'emplacement d'origine, et enfin en vérifiant les modifications dans le nouveau repo.

Je n'ai pas testé complètement cela, donc quelques ajustements mineurs peuvent être nécessaires, mais les étapes de base doivent être correctes. S'il vous plaît laissez-moi savoir si j'ai fait une erreur grossière et cela ne fonctionne pas totalement.

+1

c'est trop pour ce que l'affiche originale veut faire. dans son cas un simple svn copy + svn co + svn ci devrait suffire – Jean

+0

l'affiche indique qu'il veut "check-out le projet et faire quelques changements (changer les noms dans certains fichiers)". comment est ce que j'ai dit overkill? –

+2

votre proposition crée un nouveau référentiel complet où une branche semble bien gérer le cas d'utilisation ... c'est un peu exagéré qu'une simple copie svn devrait suffire. – Jean

-1

Juste un script shell ferait.

Questions connexes