Add Windows Hardlink & Symbolic Link Support #401
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
Resolved an issue where
GHQ_ROOT
did not work correctly on Windows when it was a symbolic link or junction. (fix #402 )Issue
GHQ_ROOT
is a symbolic link, theghq get
command results in the error:The system cannot find the path specified.
GHQ_ROOT
is a symbolic link or junction, theghq list
command does not return a list of repositories.Cause
filepath.EvalSymlinks()
does not recognize symbolic links and junctions.Suggestion
os.Readlink()
instead offilepath.EvalSymlinks()
to follow links.os.Readlink()
can handle symbolic links and junctions on Windows.Japanese
説明
Windowsにおいて、
GHQ_ROOT
がシンボリックリンクもしくはジャンクションである場合に正しく動作しない問題を解決しました。問題
GHQ_ROOT
がシンボリックリンクであった場合、ghq get
コマンド実行時にThe system cannot find the path specified.
というエラーが出るGHQ_ROOT
がシンボリックリンクやジャンクションであった場合、ghq list
コマンドを実行しても、リポジトリ一覧が返ってこない原因
filepath.EvalSymlinks()
がシンボリックリンクやジャンクションを認識しないため。提案
filepath.EvalSymlinks()
ではなく、os.Readlink()
を使ってリンクを辿る実装に変更するos.Readlink()
は、Windowsのシンボリックリンクとジャンクションを扱うことが可能