如何忽略 OpenGrok 索引中的目录?
How to ignore directories in OpenGrok index?
我正在尝试设置 OpenGrok 以搜索几 GB 的代码,主要是 Java 和 Python 项目。我使用 opengrok-0.12.1/bin/OpenGrok index $SRC_ROOT
来构建索引。我可以看到它索引了 Java 的 "target" 和 Python 的“.tox”目录,我不需要这些目录。
上网查了一下,发现很多论坛都有同样的问题,答案都是用-i。我尝试将此选项与 OpenGrok 包装器脚本以及 opengrok.jar 一起使用,但我得到的只是帮助消息(因为命令行选项显然是错误的)。
你能给我一个示例命令来构建忽略某些目录的索引吗?
解决方案是使用 -i 标志。最好的方法是创建一个 .conf 文件。例如,我将以下文件定义为 opengrok.conf
:
OPENGROK_APP_SERVER=Tomcat
OPENGROK_TOMCAT_BASE=/usr/local/Cellar/tomcat/8.0.21/libexec
OPENGROK_SCAN_DEPTH=4
OPENGROK_VERBOSE=yes
OPENGROK_PROGRESS=yes
IGNORE_PATTERNS="-i f:foo.txt -i *.bar -i d:target -i d:.tox"
和 运行 索引使用:
OPENGROK_CONFIGURATION=opengrok.conf ./OpenGrok index $SRC_ROOT
它忽略索引文件 foo.txt
、匹配模式 *.bar
的所有文件以及名为 target
或 .tox
.[=18= 的目录中的所有文件]
请注意,https://github.com/oracle/opengrok/pull/1841 已将 IGNORE_PATTERNS 重命名为 OPENGrOK_IGNORE_PATTERNS(2017 年 10 月)。
https://github.com/oracle/opengrok/wiki/How-to-setup-OpenGrok
java -jar opengrok-1.3.16/lib/opengrok.jar --help
-i, --ignore pattern
Ignore matching files (prefixed with 'f:' or no prefix) or directories
(prefixed with 'd:'). Pattern supports wildcards (example: -i '*.so'
-i d:'test*'). Option may be repeated.
使用新的 opengrok-tools,看起来像
opengrok-indexer \
--java_opts=-Djava.util.logging.config.file=$(OPENGROK_BASE)/etc/logging.properties \
--jar $(OPENGROK_DIST)/lib/opengrok.jar -- \
--ctags /usr/local/bin/ctags \
--source $(PWD) \
--dataRoot $(OPENGROK_BASE)/data \
--progress \
--history \
--assignTags \
--writeConfig $(OPENGROK_BASE)/etc/configuration.xml \
--analyzer .sc:ScalaAnalyzer \
--ignore 'd:zold' \
--ignore 'd:opengrok' \
--ignore 'd:tmp' \
--ignore 'd:.venv' \
--ignore 'd:.ipynb_checkpoints' \
--ignore 'd:.metals' \
# END
我正在尝试设置 OpenGrok 以搜索几 GB 的代码,主要是 Java 和 Python 项目。我使用 opengrok-0.12.1/bin/OpenGrok index $SRC_ROOT
来构建索引。我可以看到它索引了 Java 的 "target" 和 Python 的“.tox”目录,我不需要这些目录。
上网查了一下,发现很多论坛都有同样的问题,答案都是用-i。我尝试将此选项与 OpenGrok 包装器脚本以及 opengrok.jar 一起使用,但我得到的只是帮助消息(因为命令行选项显然是错误的)。
你能给我一个示例命令来构建忽略某些目录的索引吗?
解决方案是使用 -i 标志。最好的方法是创建一个 .conf 文件。例如,我将以下文件定义为 opengrok.conf
:
OPENGROK_APP_SERVER=Tomcat
OPENGROK_TOMCAT_BASE=/usr/local/Cellar/tomcat/8.0.21/libexec
OPENGROK_SCAN_DEPTH=4
OPENGROK_VERBOSE=yes
OPENGROK_PROGRESS=yes
IGNORE_PATTERNS="-i f:foo.txt -i *.bar -i d:target -i d:.tox"
和 运行 索引使用:
OPENGROK_CONFIGURATION=opengrok.conf ./OpenGrok index $SRC_ROOT
它忽略索引文件 foo.txt
、匹配模式 *.bar
的所有文件以及名为 target
或 .tox
.[=18= 的目录中的所有文件]
请注意,https://github.com/oracle/opengrok/pull/1841 已将 IGNORE_PATTERNS 重命名为 OPENGrOK_IGNORE_PATTERNS(2017 年 10 月)。
https://github.com/oracle/opengrok/wiki/How-to-setup-OpenGrok
java -jar opengrok-1.3.16/lib/opengrok.jar --help
-i, --ignore pattern
Ignore matching files (prefixed with 'f:' or no prefix) or directories
(prefixed with 'd:'). Pattern supports wildcards (example: -i '*.so'
-i d:'test*'). Option may be repeated.
使用新的 opengrok-tools,看起来像
opengrok-indexer \
--java_opts=-Djava.util.logging.config.file=$(OPENGROK_BASE)/etc/logging.properties \
--jar $(OPENGROK_DIST)/lib/opengrok.jar -- \
--ctags /usr/local/bin/ctags \
--source $(PWD) \
--dataRoot $(OPENGROK_BASE)/data \
--progress \
--history \
--assignTags \
--writeConfig $(OPENGROK_BASE)/etc/configuration.xml \
--analyzer .sc:ScalaAnalyzer \
--ignore 'd:zold' \
--ignore 'd:opengrok' \
--ignore 'd:tmp' \
--ignore 'd:.venv' \
--ignore 'd:.ipynb_checkpoints' \
--ignore 'd:.metals' \
# END