Bonjour,
Voici mon problème :
J'ai un projet qui à partir des mêmes sources peut compiler un serveur ou un client.
Du coup pour pouvoir compiler les deux j'ai créés deux répertoires avec l'ensembles des fichiers sources copiés en hard-link (cp -rl CLIENT SERVER).
Mon problème est que lorsque je lance un update avec cvs, les fichiers à updater sont écrasés, détruisant par la même occasion le lien hard que j'avais entre mes deux répertoires. Du coup suivant les updates réalisés, mes deux répertoires ne sont plus synchronisés et je dois à chaque fichier modifié, refaire un hard link.
Je peux réaliser un script qui me parse la sortie de cvs update pour aller directement relinkés les fichiers concernés mais j'ai l'habitude d'utiliser emacs pour cvs et ça m'embête de repasser par le shell.
Une idée ?
# Include
Posté par phoenix (site web personnel) . Évalué à 1.
[^] # Re: Include
Posté par Pierre Mallard . Évalué à 1.
C'est choix sont réalisés par le passage d'option à configure. (utilisation des autotools). D'une manière générale, le besoin se fait sentir à partir du moment ou l'on travaille avec des options à configure et que l'on a besoin de travailler en parrallèle sur l'ensemble des binaires.
Voici un petit script que j'ai réalisé :
===========================================================
#!/bin/bash
MY_REP=$CWD
FIND_NAME=-name "*.in" -o -name "*.am" -o -name "*.sh" -o -name "*.[ch]"
cd $SERVER
find ./ -type f $FIND_NAME -exec rm {} \;
cd $CLIENT
find ./ -type f $FIND_NAME -exec cp --parent -l {} $SERVER/ \;
cd $MY_REP
===========================================================
ATTENTION bien initialiser SERVER et CLIENT sinon ca efface tout le home !
Y'a sans doute mieux... notamment parsing de la sortie de cvs (mais comment s'intégrer à emacs) et gestion des repertoires vides.
[^] # Re: Include
Posté par Pierre Mallard . Évalué à 1.
le $FIND_NAME n'est pas compris tel quel dans la commande find. J'ai essayé toutes les combinaisons : ' \" etc etc...
FIND_NAME=-name "*.in" -o -name "*.am" -o -name "*.sh" -o -name "*.[ch]"
find ./ -type f $FIND_NAME
n'output pas ce qu'il ferait sans passer par FIND_NAME.
(
en faisant :
find ./ -type f -name "*.in" -o -name "*.am" -o -name "*.sh" -o -name "*.[ch]"
Ca marche.
)
[^] # Re: Include
Posté par Pierre Mallard . Évalué à 1.
#!/bin/bash
MY_REP=$CWD
mkdir -p $SERVER
cd $SERVER
find ./ \( -name "*.in" -o -name "*.am" -o -name "*.sh" -o -name "*.[ch]" \) -exec rm {} \;
cd $CLIENT
find ./ \( -name "*.in" -o -name "*.am" -o -name "*.sh" -o -name "*.[ch]" \) -exec cp --parent -l {} $SERVER/ \;
cd $MY_REP
exit 0
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.