Включить remote path в локальный путь к проекту

Локальная папка теперь учитывает удалённую рабочую директорию, чтобы на одном сервере можно было держать несколько проектов.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
stud_i_sram 2026-06-18 14:22:12 +03:00
parent 8e53844818
commit b70941fb53
2 changed files with 16 additions and 5 deletions

View File

@ -53,7 +53,7 @@
Каждый удалённый проект кэшируется локально по пути:
```
~/ssh-remote-projects/<host>/<server-name>/
~/ssh-remote-projects/<host>/<server-name>/<remote-path>/
```
При повторном открытии того же сервера плагин использует уже скачанную копию и синхронизирует только изменённые файлы.

View File

@ -9,6 +9,7 @@ import com.intellij.util.xmlb.XmlSerializerUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;
@ -107,12 +108,22 @@ public class SshServerManager implements PersistentStateComponent<SshServerManag
// ---------- Вспомогательные статические методы ----------
/**
* Возвращает локальный путь к папке проекта на основе хоста и имени сервера.
* Возвращает локальный путь к папке проекта на основе хоста, имени сервера и удалённой рабочей директории.
*/
public static String getLocalProjectPath(SshServer server) {
return Paths.get(System.getProperty("user.home"), "ssh-remote-projects",
sanitize(server.host), sanitize(server.name))
.toString().replace('\\', '/');
Path path = Paths.get(System.getProperty("user.home"), "ssh-remote-projects",
sanitize(server.host), sanitize(server.name));
if (server.remoteProjectPath != null && !server.remoteProjectPath.isBlank()) {
String normalized = server.remoteProjectPath.replace('\\', '/').replaceAll("/+", "/");
for (String segment : normalized.split("/")) {
if (!segment.isEmpty()) {
path = path.resolve(sanitize(segment));
}
}
}
return path.toString().replace('\\', '/');
}
/**