共享索引
最后修改时间:2023 年 11 月 20 日减少索引时间的可能方法之一是使用共享索引。与本地构建的常规索引不同,共享索引生成一次,然后在需要时在另一台计算机上重复使用。
提示
有关索引和其他减少索引时间的方法的更多信息,请参阅索引。
PyCharm 可以为项目代码构建共享索引。每当 PyCharm 需要重新索引您的应用程序时,它将使用可用的共享索引,并为项目的其余部分构建本地索引。通常,这比从头开始为整个应用程序构建本地索引要快。
共享项目索引
共享项目索引是为项目源及其依赖项构建的。通过在一台计算机上生成索引并将其分发到其他计算机,您可以避免在每台计算机上重复索引过程。这样,每台计算机都可以从预先计算的索引中受益,而不必单独执行昂贵的索引操作。这是共享索引相对于普通索引的主要优点。
对于大型项目来说,使用共享索引是合理的,因为索引可能会花费大量时间,给相关团队带来不便。对于较小的项目,我们建议使用其他方法来减少索引时间。
确保插件已安装
为了能够使用共享项目索引,必须在设置中启用共享项目索引捆绑插件:
按打开 IDE 设置,然后选择插件。CtrlAlt0S
切换到“已安装”选项卡,键入
Shared Project Indexes
,并确保选中它旁边的复选框。否则,请选中该复选框以启用该插件。
应用更改并关闭对话框。如果出现提示,请重新启动 IDE。
笔记
The Shared Project Indexes plugin is available in PyCharm Community Edition for 30 days. If you want to continue using the plugin, you can activate a license for PyCharm Professional, GoLand, PhpStorm, IntelliJ IDEA Ultimate, RubyMine, or WebStorm in your PyCharm Community Edition.
Install the plugin
To be able to use shared project indexes, install the Shared Project Indexes plugin:
Press CtrlAlt0S to open the IDE settings and then select Plugins.
Switch to the Marketplace tab and type
Shared Project Indexes
in the search field.Once the plugin is found in the list of available plugins, click Install next to it.
Apply the changes and close the dialog. Restart the IDE if prompted.
在你开始之前
为了确保索引兼容性,请在源计算机和目标计算机上使用相同的 IDE 版本。
您可以在源计算机和目标计算机上使用不同的操作系统。
但是,在以前的 PyCharm 版本中,共享项目索引是特定于操作系统的。使用本页左上角的版本切换器参阅与您的 IDE 版本相对应的文档。
在将共享项目索引合并到基础设施中之前,您可以通过运行命令行工具来评估它们在索引方面可以节省多少时间。
如果您对结果感到满意,则可以继续从命令行使用共享索引。在更复杂的场景中,您可以从IntelliJ 共享索引工具示例存储库自定义示例脚本。
评估共享索引的索引时间
在工作流程中使用共享项目索引之前,您可以了解它们能够为您节省多少时间。在评估过程中,该工具将在您指定的目录中生成一些文件。
下载最新版本的命令行工具并解压缩存档。
通过命令行执行二进制文件:
./bin/ij-shared-indexes-tool-cli boost
有以下选项:
--ij
:(强制)本地安装的 IDE 的路径。--project
:(强制)要为其构建共享索引的项目的路径。--port
:运行本地服务器的端口。默认端口为 25561。--data-directory
:用于存储生成的索引和服务器数据的目录。默认目录是./ij-shared-indexes-tool-data。您可以使用本地或远程运行的服务器或任何与 S3 兼容的存储来托管这些文件以供访问。
例如:
./bin/ij-shared-indexes-tool-cli boost --ij "/Users/jetbrains/Library/Application Support/JetBrains/Toolbox/apps/PyCharm-P/ch-1/232.7754.76/PyCharm 2023.2 EAP.app" --project "/Users/jetbrains/PycharmProjects/mySampleProject"
等待一段时间。之后,您将看到有共享索引和没有共享索引的索引时间。
通过查看时间差异,您可以决定是否要在工作流程中使用共享项目索引。
从命令行生成索引
生成索引并启动本地服务器
使用以下步骤生成索引并启动本地服务器来托管索引文件。
下载最新版本的命令行工具并解压缩存档。
通过命令行执行二进制文件:
./bin/ij-shared-indexes-tool-cli indexes-server
有以下选项:
--ij
:(强制)本地安装的 IDE 的路径。--project
:(强制)要为其构建共享索引的项目的路径。--port
:运行本地服务器的端口。默认端口为 25561。--data-directory
:用于存储生成的索引和服务器数据的目录。默认目录是./ij-shared-indexes-tool-data。您可以使用本地或远程运行的服务器或任何与 S3 兼容的存储来托管这些文件以供访问。
例如:
./bin/ij-shared-indexes-tool-cli indexes-server --ij "/Users/jetbrains/Library/Application Support/JetBrains/Toolbox/apps/PyCharm-P/ch-1/232.7754.76/PyCharm 2023.2 EAP.app" --project "/Users/jetbrains/PycharmProjects/mySampleProject"
生成项目索引后,您将看到一条消息,其中包含在项目中配置共享索引所需的信息。
工具运行完成后,您在生成索引文件时指定的目录中会出现两个文件夹:server和temp。索引文件存储在服务器目录中。
无需运行服务器即可生成索引
使用这些步骤无需启动本地服务器即可生成索引文件。在这种情况下,您需要在生成索引后将文件上传到文件服务器或 S3 兼容存储。
下载最新版本的命令行工具并解压缩存档。
通过命令行执行二进制文件:
./bin/ij-shared-indexes-tool-cli indexes
有以下选项:
--ij
:(强制)本地安装的 IDE 的路径。--project
:(强制)要为其构建共享索引的项目的路径。--base-url
:(强制)用于在服务器上存储索引的 URL。--data-directory
:用于存储生成的索引和服务器数据的目录。默认目录是./ij-shared-indexes-tool-data。您可以使用本地或远程运行的服务器或任何与 S3 兼容的存储来托管这些文件以供访问。
生成项目索引后,您将看到一条消息,其中包含在项目中配置共享索引所需的信息。
工具运行完成后,您在生成索引文件时指定的目录中会出现两个文件夹:server和temp。索引文件存储在服务器目录中。
您可以运行的其他命令:
- 版本
显示共享索引版本信息。选项:
--ij
:(强制)本地安装的 IDE 的路径。
- 服务器
在本地索引上启动服务器。选项:
--port
:运行本地服务器的端口。默认端口为 25561。--server-directory
:服务器数据的目录。默认目录是./ij-shared-indexes-tool-data 。/server
您可以继续从命令行使用共享索引。在更复杂的场景中,您可以从IntelliJ 共享索引工具示例存储库自定义示例脚本。
上传文件到存储
工具运行完成后,您在生成索引文件时指定的目录中会出现两个文件夹:server和temp。索引文件存储在服务器目录中。
将数据和项目文件夹从服务器目录上传到文件服务器或 S3 兼容存储。
配置对共享索引的访问
一旦项目索引上传到文件存储,就可以在另一台计算机上下载并应用它们。
在项目目录中,创建一个新文件intellij.yaml并将终端中的信息复制到新文件中,例如:
在默认配置下,IDE 将自动下载共享索引。您可以手动确认每次下载。
重新启动您的项目。
项目索引将下载到IDE系统目录下的index/shared_indexes中。
提示
将<project home>/intellij.yaml文件放在 VCS 下,以便团队中的其他开发人员可以访问项目共享索引。
下载索引时,状态栏中会显示进度。
当一切准备就绪后,您将在“通知”工具窗口中看到相应的通知。
更改索引下载方式
在默认配置下,IDE 将自动下载共享索引。您可以手动确认每次下载。
从intellij.yaml文件中删除该
consents
部分并重新启动您的项目。在设置对话框 ( ) 中,选择工具 | 共享索引,然后在项目共享索引区域中,选择下载前询问。CtrlAlt0S
应用更改并关闭对话框。
感谢您的反馈意见!