J'ai un projet sous contrôle de version, disons, dans dire, exécuté p> montre les résultats corrects Les fichiers ignorés, tandis que p> génèrent également des fichiers énumérés dans Qu'est-ce que j'ai déjà vérifié: Qu'est-ce que je manque? P> (Juste au cas où: Debian Lenny, Mercurial 1.6.3) P> // Désolé si les noms d'utilisateur semblent stupides, ils ne sont pas stupides réel (: p> - ajouté 2010-11-26 - P> PS. Y a-t-il un moyen de lancer HG et d'obtenir la sortie de débogage sur le traitement - Ajouté 2010-11026 - - P> Débogage / projet code> et
.hgignore code> situé au
/project/.hgignore code>. Sa syntaxe semble correcte, mais le problème est que ce fichier est complètement ignoré pour certains utilisateurs tout en analysés pour les autres.
/project/.hgignore code>. p>
~ / .hgrc code> est identique pour les deux utilisateurs, de sorte que les sorties sont des sorties pour
hg showconfig code>. li>.
/project/.hgignore code> et écrire à cela. Li>
ul>
.hgignore Code> -S?
HG -DEBUG Statut CODE> et
STATUS HG --DEBUG CODE> N'imprimez rien sensible. P>
HG Statut code> (résultats varient): P>
# su -l dipsy -c 'cd /project; strace hg status --ignore 2>&1 >/dev/null | grep hgignore'
open("/project/.hgignore", O_RDONLY|O_LARGEFILE) = 3
fstatat64(3, ".hgignore", {st_mode=S_IFREG|0664, st_size=214, ...}, AT_SYMLINK_NOFOLLOW) = 0
# su -l laalaa -c 'cd /project; strace hg status --ignore 2>&1 >/dev/null | grep hgignore'
open("/project/.hgignore", O_RDONLY|O_LARGEFILE) = 3
fstatat64(3, ".hgignore", {st_mode=S_IFREG|0664, st_size=214, ...}, AT_SYMLINK_NOFOLLOW) = 0
5 Réponses :
sont les deux utilisateurs exécutant la même version de hg code>? Est-ce qu'ils ont tous deux la permission de lire le fichier .hgignore? P>
Absolument, une seule version de Mercurial est installée. Juste re-coché. J'ai même essayé de faire le deuxième utilisateur le propriétaire de .hgignore code> - toujours pas de succès.
hrm. Juste pour être sûr, quelle commande vous dit qu'ils sont analysées pour certains utilisateurs et ignorés des autres? Confirmez-vous que avec Était-ce que je m'envole à utiliser Statut HG --Intionnalisé code>? Les gens de Somtimes oublient que «HG Add» remplace le statut de fichier ignoré, donc si un utilisateur a déjà ajouté (et peut-être engagé) ces fichiers mais non poussés qui ajoutez à la repo l'autre visualisent alors que la personne peut facilement penser que leur HGignore n'est pas. Être consulté quand c'est vraiment ce que les fichiers ajoutés font ignorer l'absence de pertinence. P>
strace code> suivant. Quelque chose comme
strace hg statut --Intionnalisé | grep hgignore code> et comparez la sortie pour deux utilisateurs. p>
Je vérifiais si .hgignore code> est lu en ajoutant une ligne qui provoquerait une erreur de syntaxe. Quoi qu'il en soit, j'ai ajouté une sortie code> strace code>, voir ci-dessus (BTW,
Strace code> écrit sur
starr code>, donc simplement
| grep < / code> ne fonctionnera pas). Etrange Thing est,
.hgignore code> est lu sur
Statut HG --Imore code> et non sur
Statut HG code>, pour un utilisateur.
Mercurial est écrit à l'aide de Python, découvrant désormais ce qui se passe ne devrait pas être trop difficile. Vous venez de mettre des traces dans mercurial / ignor.py code> (utilisez simplement la fonction de warn (), il est à but d'imprimer des avertissements à la console des commandes mercuriales). Si vous mettez
avertir ("je suis ici") code> juste avant de
pat = {} code> dans la fonction
def ignore (racine, fichiers, warn) Code> Il devrait imprimer l'avertissement "Je suis ici" chaque fois qu'il prend en compte le
.hgignore code>. Après cela, il vous appartient de demander les bonnes traces de comprendre le comportement. Si vous connaissez Python, cela ne devrait pas prendre plus de quelques minutes. P>
On dirait que ce module Ignorer code> n'est parfois pas chargé. Essayant actuellement de déboguer
mercurial / demande .py code> à la place ...
Peut-être que c'est un problème avec Sys.Path dans le contexte de l'utilisateur? Ou votre utilisateur exécute votre interprète Python dans un bac à sable ou une version différente de Python, ou quelque chose comme ça?
grea ^ w Quelque succès. p>
Il y avait un autre référentiel HG se cachant dans l'un des sous-dossiers, cela semble la cause la plus probable des problèmes décrits. Je suppose que l'autre Cependant, vous déplacez ce référentiel et laissant un lymnique sur sa place n'a pas aidé à la fois. P>
Alors, j'ai décidé d'agir radicalement: p>
Vous ne savez pas quelle étape exactement l'astuce, mais tout semble fonctionner comme prévu maintenant, Donc, le problème est résolu mais WTF est toujours sans réponse (: p>
Merci à tous. .hgignore code> a été lu avant celui que j'avais réellement nécessaire, et tout ce qui suit
.hgignore code> -s ont été abandonnés. P>
~ / .hgcookies code> (je suppose créé par module d'authentification du four) li>
/project/.hgignore code> du tout li>
[ui] ignore = .hgignore code> à
~ / .hgrc code> li>
/project/.hgignore code>, ajouté / commis / poussé à nouveau li>
/project/.hgignore code> est analysé pour chaque utilisateur. P>
[ui] ignore = .hgignore code> n'est pas la solution que je l'ai supprimée plus tard et qu'elle n'a rien brisé. P>
et oui, ne reposez pas sur des référentiels imbriqués. s> p>
"Ne comptez pas sur des référentiels imbriqués" est la mauvaise conclusion. Assurez-vous simplement que vous indiquez à Mercurial à propos de tous les référentiels imbriqués dans le fichier Versed .hgsub code>, comme décrit ici .
Je viens d'avoir ce problème aussi hier soir et je me conduisais au mur en essayant de le trouver. J'ai finalement trouvé une page wiki sur corruption de référentiel dirsidée . La première étape impliquant l'exécution Je suppose que dans votre réponse, les étapes impliquant des commentations / poussées peuvent avoir fixé la corruption dans votre référentiel . P> Après avoir fixé à l'origine le problème et posté ma réponse, le problème a continué de figurer, mais de manière différente: Mercurial semblait Pour être partiellement obéissant au fichier .hgignore, mais toutes les mises à jour que j'ai faites à elle n'a pas pris effet. Je joue dans la création d'un script pour créer plusieurs référentiels connexes et j'ai remarqué après un moment que ma machine était à court de mémoire. J'ai couru un Inotify est une extension, expédiée avec Mercurial, qui souscrit à toute modification de votre répertoire de travail afin d'améliorer les performances du statut code> HG code> sur les grands référentiels. Le inotify Extension Page mentionne que "il doit certainement être considéré comme expérimental". Il semble que certains bugs dans les serveurs Inotify empêchent la réalisation de la mercuriale Le fichier .hgignore a été mis à jour et donc Essayez ma théorie et obtenez temporairement HG pour rafraîchir l'actualisation .hgignore I Exécuté: P> hg vérifie code> n'a pas fonctionné. La deuxième étape, clonant le repo, a fonctionné! J'ai ensuite supprimé le répertoire original .hg et copié le répertoire du clone .hg à l'emplacement d'origine. P>
Réponse 2 - Inotify Extension Bug H2>
PS -e code> et il y avait tous ces processus
hg code> suspendu dans la mémoire. Tous ces processus étaient des serveurs inotify. P>
Statut HG Code> a toujours utilisé une version sale de .hgignore. P>
[extensions]
hgext.inotify = !
Génial, ça a fonctionné. Maintenant, mon plan de récupération est plus court - juste HG Clone / Repo / NewRepo; mv /repo/.hg /repo/.hg.bak; cp -r /newrepo/.hg /repo/.hg code>. Pas besoin de tirer / pousser en effet.
Le killall -s2 hg a fait le tour pour moi. Merci! BTW, il semble que je dois le faire à chaque fois que je change le fichier .hgignore.
Si vous souhaitez arrêter les serveurs Inotify de l'exécution automatiquement, vous devez donc les tuer chaque fois que vous mettez à jour .hgignore code>, il suffit de mettre la ligne:
hèxt.inotify =! Code> dans le
[Extensions] code> section de votre fichier
.hgrc code>. Le
! Code> dit à Mercurial de ne pas démarrer l'extension / serveur Inotify.