РЕДАКТИРОВАТЬ 1: НАЧАЛО
Следуя рекомендациям StackOverflow для MCVE, я создал ЭТО github-repo для других, чтобы воспроизвести эту проблему.
РЕДАКТИРОВАТЬ 1: END
Я пытаюсь создать символическую ссылку на файл локально, pu sh его и увидеть в репозитории GitHub. В идеале, если кто-то пытается щелкнуть по символической ссылке в GitHub, он должен отобразить относительный путь к исходному файлу, на который указывает символическая ссылка.
Однако в моем случае символическая ссылка создается, но когда я пу sh это на GitHub, и нажмите и откройте его, я вижу, что он отображает абсолютный путь к исходному файлу на момент создания символической ссылки.
![enter image description here](https://i.stack.imgur.com/Mieyc.png)
Я бы хотел, чтобы отображался относительный путь, как показано здесь 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](https://i.stack.imgur.com/rTv6d.png)
Мы видим, что файл символической ссылки 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){
}
Я так глуп, чтобы выяснить проблему с моим кодом.
Пожалуйста, дайте мне знать, если я пропустил какую-либо информацию.