IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

[Shell] Script pour supprimer des révisions CVS


Sujet :

Shell et commandes GNU

  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2015
    Messages : 7
    Points : 2
    Points
    2
    Par défaut [Shell] Script pour supprimer des révisions CVS
    Bonjour,

    Je suis actuellement sur un projet, et je dois travailler sur un script shell dont le but est de supprimer sur CVS les révisions de projets qui ont plus de 2mois.
    Mais malheureusement, je ne sais pas trop comment m'y prendre, n 'y par où commencer.

    Si quelqu'un pouvait m'aiguiller un peu ?

    Merci

  2. #2
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 458
    Points
    13 458
    Par défaut
    Bonjour,

    Si tu cherches la date de dernière modification d'un fichier, tu peux taper:
    Et pour avoir la liste des informations disponibles pour un fichier:
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  3. #3
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 391
    Points
    19 391
    Par défaut
    Bonjour,

    «supprimer des fichiers dont on ne connaît ni le nom, ni l'emplacement, et pour lesquels seule la date de la dernière modification doit être prise en compte»
    c'est à dire qu'il va falloir trouver ces fichiers
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  4. #4
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2015
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Hello,

    Merci pour vos réponses, mais en fait c'est un peu plus compliqué que ça. Pour rentrer dans le détail, via cvs pour récupérer une révision c'est par exemple cvs -d /path/ log file, mais c'est une commande propre à CVS, donc je me demandais comment via un script shell, je pourrais passer cette commande, récupérer le résultat (car j'aurai besoin de trier et récupérer qu'un certains nombres de révision), et à ce comment là appliquer mon find ... ! Je ne sais pas si je suis très clair ?

  5. #5
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 391
    Points
    19 391
    Par défaut
    quelle serait une sortie typique de cvs -d /path/ log file ?
    quelle(s) indication(s) te permettrai(en)t de retenir une ligne plutôt qu'une autre ?
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  6. #6
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 101
    Points : 5 849
    Points
    5 849
    Par défaut
    Citation Envoyé par tamarou04 Voir le message
    Je suis actuellement sur un projet, et je dois travailler sur un script shell dont le but est de supprimer sur CVS les révisions de projets qui ont plus de 2mois.
    Tu parles bien du gestionnaire de version CVS (1986-2007)?

    Tu veux supprimer d'anciennes versions du repository?

    Attention!

    Taper directement dans le repository peut engendrer de graves problèmes, comme perdre l'historique complet d'un projet, voire le projet lui-même!

    Je t'invite aussi à préciser tes spécifications:
    d'après ce que tu dis, si un projet n'a pas été du tout modifié pendant les 3 derniers mois, cela veut-il dire que tu veux supprimer toutes les commits antérieurs à 2 mois, c'est-à-dire en fait toutes les versions, y compris la version courante, et ainsi détruire totalement le projet?

    Ça me paraît pour le moins louche!

    En général, on spécifie plutôt qu'on souhaite conserver les versions qui répondent à au moins l'un des critères:
    - au minimum les 3 dernières versions (quelle que soit leur date), pour pouvoir remonter un peu dans les versions, malgré le manque d'activité sur le projet,
    - toutes les versions qui ont moins de 2 mois (quel que soit le nombre de versions), pour pouvoir remonter un peu dans le temps, malgré l'abondance d'activité sur le projet.

  7. #7
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2015
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par jack-ft Voir le message
    En général, on spécifie plutôt qu'on souhaite conserver les versions qui répondent à au moins l'un des critères:
    - au minimum les 3 dernières versions (quelle que soit leur date), pour pouvoir remonter un peu dans les versions, malgré le manque d'activité sur le projet,
    - toutes les versions qui ont moins de 2 mois (quel que soit le nombre de versions), pour pouvoir remonter un peu dans le temps, malgré l'abondance d'activité sur le projet.
    Oui c'est exactement ça que je souhaite faire ! Désolé, si je me suis mal exprimé.

  8. #8
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 101
    Points : 5 849
    Points
    5 849
    Par défaut
    Citation Envoyé par tamarou04 Voir le message
    Oui c'est exactement ça que je souhaite faire ! Désolé, si je me suis mal exprimé.
    Ok.

    Si c'est possible, plutôt que de taper "à la main" dans les fichiers du repository, il me paraitrait plus sain d'utiliser les commandes cvs pour supprimer les versions ciblées.

    Je connais (ou connaissais) un peu sccs, svn et git, mais pas cvs. Et il n'est pas installé sur mon mac. Je ne peux donc pas beaucoup t'aider.
    Mais, aide-toi et le ciel t'aidera!

    Le schéma pourrait être:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Pour chaque projet
    faire une commande "cvs xxx projet" (peut-être "cvs log projet")
        pour obtenir la liste des versions du projet, sous un format donné (et que tu peux voir sur ta machine),
        puis filtrer ces versions en fonction des critères spécifiés
        et, pour chaque version non conservée,
            faire une commande "cvs xxx projet version" pour supprimer la version du repository
    Renseigne-toi sur cvs pour savoir:
    - comment obtenir la liste des versions d'un projet (peut-être y a-t-il mieux que "cvs log").
    - comment supprimer une version d'un projet

  9. #9
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2015
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Hello,

    Merci pour ton retour, je pense effectivement que c'est la bonne façon de faire. Mais du coup ça suscite de nouvelles questions.
    Je récupère mes numéros de versions comme ceci, ex : cvs log -h nagios.zip


    RCS file: /home/tamarou/cvs/monitoring/nagios.zip,v
    Working file: nagios.zip
    head: 1.21
    branch:
    locks: strict
    access list:
    symbolic names:
    	nagios-v2_10_0: 1.21
    	nagios-v2_9_0: 1.20
    	nagios-v2_8_0: 1.19
    	nagios-v2_7_0: 1.18
    	nagios-v2_6_0: 1.17
    	nagios-v2_5_0: 1.16	
    keyword substitution: b
    total revisions: 6
    =============================================================================
    1 - En bash, je souhaiterais garder les 4 dernières révisions, je vois pas trop comment le faire en sed, awk ou que sais je !
    2 - je pense qu'il faudrait que je stock du coup les autres dans un tableau (c'est ça ma question, comment le faire), et du coup supprimer les autres versions cvs de ce fichier. Merci pour le temps consacré

  10. #10
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 101
    Points : 5 849
    Points
    5 849
    Par défaut
    Du coup, tu as abandonné l'idée de supprimer des versions en fonction de leur date? (de l'art des spécifications fluctuantes...)

    Lorsque tu insères du texte brut dans un post sur ce site, il vaut mieux l'entourer de balises [ CODE ] (en cliquant sur le bouton '#' de la barre d'outils).

    Peux-tu nous dire à quoi sert l'option "-h" de "cvs log"?

    Sinon, du coup, les specs deviennent:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Pour chaque projet "le_projet", faire
    Dans la sortie de $(cvs log -h ${le_projet}.zip)
    - Trouver la ligne contenant "symbolic names:"
    - Récupérer les lignes consécutives suivant cette ligne et contenant "${le_projet}-v[0-9]*_[0-9]*_[0-9]: ([0-9]*[.][0-9]*)"
    - Supprimer les 4 premières lignes
    - Pour chaque ligne restante,
      - récupérer le numéro de version (après le ': ')
      - lancer la commande cvs remove_version ${le_num_version}
    Tu peux faire ça en bash, sed ou awk, suivant l'outil avec lequel tu es le plus à l'aise.

    Je te propose de commencer à coder, tester (avec "echo cvs remove..." plutôt que "cvs remove..."!) et revenir avec un peu de code si tu bloques.

  11. #11
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2015
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Hello,

    Non dans l'absolue, je ferais à un moment un tri par rapport à la date (y a une step prévue pour).
    Merci pour la balise CODE, je ne la connaissais pas.

    La balise -h n'affiche que les headers (donc sous le format posté plus haut), sans le -h on a plus d'informations.

    ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    revision 1.12
    date: 2015-03-02 16:06:18 +0100;  author: tamarou;  state: Exp;  lines: +4107 -4122;  commitid: 189b52eba2434597;
    Version 1.5.0
    Bon ben je vais me commencer ça, merci

Discussions similaires

  1. Script pour supprimer des profils utilisateurs
    Par kevinf dans le forum Windows
    Réponses: 0
    Dernier message: 20/01/2015, 10h49
  2. Réponses: 7
    Dernier message: 24/01/2012, 18h55
  3. Réponses: 11
    Dernier message: 25/02/2010, 16h33
  4. Shell pour supprimer des lignes d'un fichier
    Par nelsa dans le forum Autres langages
    Réponses: 2
    Dernier message: 20/09/2004, 12h26
  5. Script pour envoyer des info a mysql
    Par rhum1 dans le forum Linux
    Réponses: 6
    Dernier message: 15/04/2003, 16h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo