Linux , scripts shell , Subversion
- 02/06/2010
Shell Script - Générateur de packages de mise à
Bonjour les gars.
Aujourd'hui, je vais montrer comment le script qui lit une mise à jour du SVN et crée un package zippé avec seulement les fichiers qui ont changé d'une révision à l'autre. Pour cela, nous utilisons un script shell. Oui! si vous exécutez Windows se déroulera ce Mamata !!!!!
D'abord je voudrais dire que je ne suis pas expert en script shell, et encore moins sous Linux. Je suis juste un gars qui aime et cherche à les utiliser dans les jours à jour pour rendre les installations, la productivité et de plaisir.
Pour la raison décrite dans le paragraphe précédent, ce script pourrait être grandement améliorée. Mais réponds-moi parfaitement et m'a fait de réduire le temps de mettre à jour mon environnement à seulement 20 minutes à 3 ![]()
Alors allons-y!
Il serait agréable de vous connaître un peu les sujets ci-dessous pour être en mesure de suivre le raisonnement:
- Linux (pour notre scritp fonctionne uniquement sur celui-ci);
- Faire des choses en ligne comanto (car il est plus élégant);
- SVN sur la ligne de commande (afin de comprendre le script meilleure);
Maintenant oui, allons-y!
L'idée est simple: Lire le journal de la commande "svn update" et il commence à avoir la liste des fichiers modifiés / créés / supprimés.
Vous connaissez le format de ce journal? lorsque vous exécutez la commande "svn update" qui apparaît sur votre fin? quelque chose comme l'image ci-dessous à droite?
Eh bien, nous allons utiliser le caractère de redirection de sortie pour faire de ce journal est écrit dans un fichier. Comment faire cela? Simple! comme ceci:
"Svn update> arquivo_de_log.log"
Voyez comment notre script devient:
Maintenant nous devons faire notre script lire les lignes du fichier généré pour décider quoi faire. À cette fin, nous allons utiliser le "arquivo_de_log.log chat." Commande Environ cat affiche encore d'un fichier sur l'écran.
Cliquez ici pour voir plus d'informations sur cette commande.
Mais, non seulement avec le chat. Besoin de faire une boucle pour lire chaque ligne du fichier.
Mais pour faciliter, qu'en créant un fichier d'écrire notre script?
Voyez comment cela est devenu notre script:
Lançons notre script et voir le résultat:
Nous!
Fondamentalement, le «noyau» est prêt ... bien sûr que nous pouvons apporter plusieurs améliorations dans ce script. J'ai fait quelques et je vais poster le code ci-dessous complète.
Si vous avez des idées à mettre en œuvre dans le poste et commentaires ici pour partager leurs connaissances.
Si vous écrire ce script en DOS peut également envoyer des ![]()
Version améliorée:
- # / Bin / bash
- claires
- echo "Starting package génération pour mettre à jour"
- date = `date +% d.% m.% Y% H%` MHS
- # Récupérer la version actuelle
- from = `svnversion`
- # Suppression du 'M' version de l'affaire a
- d'= $ {de / M /}
- from = `expr $ de + 1`
- echo "la révision actuelle: $ de«
- echo "Lancement svn update"
- svn update> update.log
- # Récupérer l'examen après la mise
- d'= `svnversion`
- # Suppression de la révision actuelle de la M
- d'= $ {au / M /}
- echo "Mise à jour vers la révision de $ à«
- # Si nous n'avons pas besoin de mettre à jour l'interrompt le script
- if [-eq $ $ à partir de], puis
- echo "Pas besoin de mise à niveau."
- la sortie
- fi
- # Créer un nom pour le paquet
- file_zip = "update-de-à-$ $ $ à data.zip"
- echo "paquet qui sera généré: $ file_zip"
- # Le fichier journal qui sera analysée (resuldado un svn update)
- file_log = "update.log"
- echo "Lecture du fichier journal généré par svn update"
- $ Data = `cat` file_log
- # Valable possibilités: A, D et U
- last_line = ""
- for i in $ data
- des
- if [-e $ i], puis
- if [$ last_line = "D"], puis
- echo "Garbage: $ i"
- d'autre
- if [! -D $ i], puis
- echo "Ajout tyrolienne à: $ i"
- zip-r les mises à jour / file_zip $ i> / dev / null
- fi
- fi
- fi
- $ I = last_line
- fait
- echo "Suppression update.log"
- update.log rm
Cliquez ici pour télécharger. Sh
Comme vous l'avez vu, le mess avec Shell Script est pas sept bixo têtes. Quand nous avons commencé à jouer avec elle les possibilités se dessinent dans notre tête et nous faire des outils pour nous aider.
Si vous avez un script shell et vous voulez partager avec les gens me contacter et rendre disponible ici sur le blog.
Étreintes









4 Responses to "Script Shell - packages de mise générateur"
Très cool, shell / script bash toujours faire des choses très intéressantes et qui rend la vie beaucoup plus facile pour un programmeur.
Dans ce cas, les fichiers modifiés pour obtenir est très bon, parce que parfois besoin d'aller uniquement les fichiers modifiés via FTP, et oh tellement plus facile. Une ressource qui peut être utilisé aussi les fichiers de log svn pour obtenir un examen, avant la dernière validation, peuvent obtenir les fichiers modifiés à tout examen, je pense qu'il devrait ressembler à:
svn log-v-r [révision] http://hostsvn.com.br/repo
il n'y avait que quelques-uns comprennent "si" dans le script qui fonctionne.
Voir la balle, mon pote!
Par Michael Mafort (7 commentaires) sur 06/04/2010
Absolument. Son beaucoup.
Dans le script que je dirige dans mon travail, j'ai créer un fichier avec les journaux de la gamme dans le zip et d'ouvrir l'option prompt à Oui / Non pour envoyer le fichier vers le serveur automatiquement via FTP.
Dans la Shell ont un autre serveur qui décompresse le fichier et quittez par la mise en chmod 755 sur chaque fichier (je sais que ce pourrait être différent, mais le serveur n'est pas avec nous.)
Merci pour la contribution mon ami! Si vous avez plus d'idées mis là! Rsrsrsrsrsrs
Par Marcelo Sabadini (109 commentaires) sur 06/04/2010
OOh ... je sais cela, hehehe
Par Rodrigo (2 commentaires) sur 09/03/2010
Il est le très hehehhe
Mon Flw cher!
Par Marcelo Sabadini (109 commentaires) sur 09/04/2010