Файл символической ссылки в репозитории GitHub отображает абсолютный путь вместо относительного пути - PullRequest
0 голосов
/ 15 января 2020

РЕДАКТИРОВАТЬ 1: НАЧАЛО

Следуя рекомендациям StackOverflow для MCVE, я создал ЭТО github-repo для других, чтобы воспроизвести эту проблему.

РЕДАКТИРОВАТЬ 1: END

Я пытаюсь создать символическую ссылку на файл локально, pu sh его и увидеть в репозитории GitHub. В идеале, если кто-то пытается щелкнуть по символической ссылке в GitHub, он должен отобразить относительный путь к исходному файлу, на который указывает символическая ссылка.

Однако в моем случае символическая ссылка создается, но когда я пу sh это на GitHub, и нажмите и откройте его, я вижу, что он отображает абсолютный путь к исходному файлу на момент создания символической ссылки.

enter image description here

Я бы хотел, чтобы отображался относительный путь, как показано здесь https://github.com/mokacoding/symlinks/blob/master/bar/foo.md

Мой код для приведенного выше сценария:

myScript. groovy - версия 1

import groovy.io.FileType
import java.nio.file.Path
import java.nio.file.Files;
import java.nio.file.FileAlreadyExistsException
import java.io.FileNotFoundException
import java.nio.file.Paths;

def specificFilesPath = Paths.get("toSymlink.groovy").toAbsolutePath()

def srcPath = specificFilesPath.toAbsolutePath()
println "srcPath is ------------   " + srcPath

def symLinkToCreate = Paths.get("../../../symlinkTestFiles/toSymlink.groovy").toAbsolutePath()
println "symLinkToCreate -------------   " + symLinkToCreate

try{
Path symLink = Files.createSymbolicLink(symLinkToCreate, srcPath);
println "symlink created -----   " + symLink
}catch(FileAlreadyExistsException faee){
}

Чтобы попытаться решить вышеуказанную проблему, я изменил свой код выше на ( myScript. groovy - версия 2 ) для удаления toAbsolutePath () . Но символическая ссылка, созданная с помощью приведенного ниже кода ( myScript. groovy), недопустима в том смысле, что она указывает на себя, когда я подтверждаю цель путем перехода в меню свойств (я разрабатываю на Windows 10 и с использованием VS Code ). Если я попытаюсь открыть его, появится сообщение:

--------------------------- ERROR
--------------------------- Can not open file "D:\git-repos\symlink-demo\symlinkTestFiles\toSymlink.groovy".
--------------------------- OK   
---------------------------

toSymlink. groovy находится в том же каталоге, что и myScript. groovy. Структура проекта:

enter image description here

Мы видим, что файл символической ссылки symlinkTestFiles / toSymlink. groovy не отображается в выше изображение. И это потому, что символическая ссылка была создана, но она недействительна, как я уже упоминал, что она указывает на себя, а не на toSymlink. groovy.

ПРИМЕЧАНИЕ: Приведенный ниже код работает отлично и создает действительную символическую ссылку, если я передаю абсолютный путь к конструктору файла.

myScript. groovy - версия 2

import groovy.io.FileType
import java.nio.file.Path
import java.nio.file.Files;
import java.nio.file.FileAlreadyExistsException
import java.io.FileNotFoundException
import java.nio.file.Paths;

def specificFilesPath = new File("toSymlink.groovy")

def srcPath = specificFilesPath.toPath()
println "srcPath is ------------   " + srcPath.toAbsolutePath()
def symLinkToCreate = new File("../../../symlinkTestFiles/toSymlink.groovy").toPath()


println "symLinkToCreate -------------   " + symLinkToCreate.toAbsolutePath()

try{
Path symLink = Files.createSymbolicLink(symLinkToCreate, srcPath);
println "symlink created -----   " + symLink.toAbsolutePath()
}catch(FileAlreadyExistsException faee){
}

Я так глуп, чтобы выяснить проблему с моим кодом.

Пожалуйста, дайте мне знать, если я пропустил какую-либо информацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...