Включить 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.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import java.nio.file.Path;
import java.nio.file.Paths; import java.nio.file.Paths;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -107,12 +108,22 @@ public class SshServerManager implements PersistentStateComponent<SshServerManag
// ---------- Вспомогательные статические методы ---------- // ---------- Вспомогательные статические методы ----------
/** /**
* Возвращает локальный путь к папке проекта на основе хоста и имени сервера. * Возвращает локальный путь к папке проекта на основе хоста, имени сервера и удалённой рабочей директории.
*/ */
public static String getLocalProjectPath(SshServer server) { public static String getLocalProjectPath(SshServer server) {
return Paths.get(System.getProperty("user.home"), "ssh-remote-projects", Path path = Paths.get(System.getProperty("user.home"), "ssh-remote-projects",
sanitize(server.host), sanitize(server.name)) sanitize(server.host), sanitize(server.name));
.toString().replace('\\', '/');
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('\\', '/');
} }
/** /**