2009-04-10 5 views
3

Nous utilisons CakePHP pour une nouvelle application, et nous utilisons Mercurial comme outil de contrôle de source. (Mercurial utilise un .hgignore fichier dans le répertoire racine, à la différence (par exemple) CVS qui utilise .cvsignore dans un répertoire.).hgignore pour une application CakePHP?

J'aimerais exclure le contenu du répertoire app/tmp/ du contrôle de code source (car ils changent tout le temps, et peut être régénéré), mais je ne peux pas ajouter app/tmp/*-.hgignore, depuis lors, les répertoires standard sous tmp (cache, logs, sessions, tests, et aussi cache/models, cache/persistent, ...) seraient absents de la nouvelle clones créés par hg clone, entraînant des erreurs.

Actuellement, j'ai dans mon hgignore:

app/tmp/logs/*.log 
app/tmp/cache/persistent/cake_* 
app/tmp/cache/models/cake_* 

Il serait bon d'avoir un « standard » qui pourrait être utilisé dans tous les projets. Quelqu'un peut-il suggérer une solution complète?

Répondre

0

Si je comprends bien la question, vous voulez ignorer le fichier dans tmp, mais pas les fichiers dans certains répertoires de tmp. Si c'est vrai alors je pense que vous pouvez le faire en utilisant ceci:

syntax: regexp 
^tmp/(?!(cache|logs|sessions|test)) 

Cela dit ignorer tout ce qui commence par tmp, à moins que la partie suivante est cache, journal, sessions, test. Pour ces fichiers:

. 
`-- tmp 
    |-- cache 
    | `-- afile 
    `-- tmpfile 

ici est le hg stat résultat:

$ hg stat 
? .hgignore 
? tmp/cache/afile 

Je note, cependant, que le gâteau vous dit probablement de ne pas mettre ces fichiers dans le contrôle source héritier basée en Ontario étant dans un répertoire tmp. Êtes-vous sûr qu'ils ne sont pas quelque chose que votre système de construction est censé créer? Les sessions en particulier semblent assez transitoires.

4

Vous pouvez ajouter

syntax: glob 
app/tmp/** 

à votre fichier .hgignore et Mercurial à partir de ce point ignorer tous les fichiers sous app/tmp/ à l'exception des fichiers suivis par Mercurial. Voir hg help patterns pour plus d'informations sur les modèles de noms de fichiers.

Donc, si vous faites

% touch app/tmp/cache/.empty 
% touch app/tmp/logs/.empty 
% hg add app/tmp/cache/.empty 
% hg add app/tmp/logs/.empty 

et faire un clone, puis les répertoires app/tmp/cache et app/tmp/logsseront créées et de nouveaux fichiers dans ces répertoires seront ignorés. Je pense que c'est ce que tu veux?

Ceci est également utile pour suivre quelque chose comme $HOME puisque vous voudriez ignorer la plupart des fichiers par défaut et ne suivre que les fichiers explicitement ajoutés.

+0

C'est exactement ce que je fais quand j'utilise CakePHP, mais j'utilise Git et pas Mercurial. De cette façon, la structure du dossier est conservée mais le contenu réel des répertoires n'est pas sauvegardé. – RFelix

0

Dans mes propres extractions (à partir de SVN), lorsque le site était déployé, le répertoire ./tmp/ nécessitait des autorisations spécifiques.Je l'ai supprimé complètement du contrôle de version et mon script de déploiement a créé les répertoires comme requis.

Questions connexes