Mercurial не игнорирует файлы в указанном мной каталоге

У меня есть ртутный репозиторий. Есть файл .hgignore:

λ ~/workspace/kompgrafika/nurbs/ cat .hgignore 
syntax: regexp
^Makefile
^bin/.*$
CMakeFiles/.*$
^CMakeCache\.txt
^cmake_install\.cmake

Есть каталог с именем CMakeFiles, который я хочу игнорировать:

λ ~/workspace/kompgrafika/nurbs/ tree CMakeFiles 
CMakeFiles
├── 3dfractals.dir
│   ├── build.make
│   ├── cmake_clean.cmake
│   ├── CXX.includecache
│   ├── DependInfo.cmake
│   ├── depend.internal
│   ├── depend.make
│   ├── flags.make
│   ├── link.txt
│       ├── progress.make
│   └── src
│       ├── DisplayControl.cpp.o
│       ├── Drawer.cpp.o
│       ├── main.cpp.o
│       ├── PointFileReader.cpp.o
│       ├── PointGenerator.cpp.o
│       └── Program.cpp.o
├── CMakeCCompiler.cmake
├── cmake.check_cache
├── CMakeCXXCompiler.cmake
├── CMakeDetermineCompilerABI_C.bin
├── CMakeDetermineCompilerABI_CXX.bin
├── CMakeDirectoryInformation.cmake
├── CMakeOutput.log
├── CMakeSystem.cmake
├── CMakeTmp
│   └── CMakeFiles
│       └── cmTryCompileExec.dir
├── CompilerIdC
│   ├── a.out
│   └── CMakeCCompilerId.c
├── CompilerIdCXX
│   ├── a.out
│   └── CMakeCXXCompilerId.cpp
├── Makefile2
├── Makefile.cmake
├── progress.marks
└── TargetDirectories.txt

7 каталогов, 31 файл

Но при запуске hg status он почему-то не игнорирует 3dfractals.dir.

λ ~/workspace/kompgrafika/nurbs/ hg st
A .hgignore
A docs/pol_10.wings
? CMakeFiles/3dfractals.dir/src/DisplayControl.cpp.o
? CMakeFiles/3dfractals.dir/src/Drawer.cpp.o
? CMakeFiles/3dfractals.dir/src/PointFileReader.cpp.o
? CMakeFiles/3dfractals.dir/src/PointGenerator.cpp.o
? CMakeFiles/3dfractals.dir/src/Program.cpp.o
? CMakeFiles/3dfractals.dir/src/main.cpp.o

Я использую:

λ ~/workspace/kompgrafika/nurbs/ hg --version
Mercurial Distributed SCM (version 2.0.2+5-1f9f9b4c2923)
(see http://mercurial.selenic.com for more information)

Copyright (C) 2005-2011 Matt Mackall and others
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Я также пробовал сменить CMakeFiles/.*$ на ^CMakeFiles$. Нет результатов.

Есть идеи, что не так?


person Marius Grigaitis    schedule 12.01.2012    source источник


Ответы (2)


Хм, тут работает:

$ cat .hgignore
syntax:regexp
^Makefile
^bin/.*$
CMakeFiles/.*$
^CMakeCache\.txt
^cmake_install\.cmake
$ hg init
$ mkdir -p $(dirname CMakeFiles/3dfractals.dir/src/DisplayControl.cpp.o)
$ touch CMakeFiles/3dfractals.dir/src/DisplayControl.cpp.o
$ touch CMakeFiles/cmake.check_cache
$ hg status
? .hgignore
$ hg status -A
? .hgignore
I CMakeFiles/3dfractals.dir/src/DisplayControl.cpp.o
I CMakeFiles/cmake.check_cache

Это с Mercurial 2.0.2 + 59, поэтому он должен работать так же, как ваша версия.

Одна вещь, которая может hg status сбить с пути, который вы видите, - это inotify расширение. Как упоминалось на его вики-странице, он по-прежнему считается экспериментальным, поскольку все еще содержит ошибки. Проверить inotify с помощью

$ hg showconfig extensions.inotify

и при необходимости отключите его. Если расширение загружается из вашего собственного файла конфигурации (проверьте с помощью hg showconfig --debug), вы можете просто удалить строку, которая его загружает. Если он загружен в общесистемный файл конфигурации, который вы не можете изменить, добавьте

[extensions]
inotify = !

в свой собственный файл конфигурации, чтобы отключить его.

person Martin Geisler    schedule 12.01.2012
comment
Я сделал rm -rf CMakeFiles и make (чтобы снова создать этот каталог). Затем запустил hg status, и каталог исчез из списка. Какая-то ошибка кеша? - person Marius Grigaitis; 12.01.2012
comment
Нет, не должно быть - мы не кэшируем информацию о файле .hgignore. hg showconfig extensions случайно упоминает inotify? Это расширение монитора файловой системы, которое может испортить ситуацию и создать ситуацию, которую вы только что видели. - person Martin Geisler; 12.01.2012
comment
Да. Похоже, удаление этого расширения решает проблему. - person Marius Grigaitis; 12.01.2012
comment
Итак, мы идем! Я расширил ответ дополнительной информацией о расширении inotify. - person Martin Geisler; 12.01.2012

Я использую Windows, но обычно

CMakeFiles / *

подействует на меня ...

person Terence Lewis    schedule 12.01.2012