{"action":"created","comment":{"url":"https://api.github.com/repos/src-d/go-billy/pulls/comments/120818481","pull_request_review_id":42812135,"id":120818481,"diff_hunk":"@@ -69,21 +75,40 @@ func (fs *Memory) OpenFile(filename string, flag int, perm os.FileMode) (billy.F\n \treturn f.Duplicate(filename, perm, flag), nil\n }\n \n+func (fs *Memory) resolvePath(path string) string {\n+\tfullpath := clean(fs.Join(fs.base, path))\n+\tl, ok := fs.links[fullpath]\n+\tif !ok {\n+\t\treturn fullpath\n+\t}\n+\n+\t// IsAbs requires an unit so we check to if the path stars with a os.PathSeparator","path":"memfs/memory.go","position":null,"original_position":51,"commit_id":"fff70a5eee67f5e8f3f1961d7c3a4af40c4a28fe","original_commit_id":"3523cc5b1d11f0d5d966e21790daaf547f80fa30","user":{"login":"alcortesm","id":9169414,"avatar_url":"https://avatars0.githubusercontent.com/u/9169414?v=3","gravatar_id":"","url":"https://api.github.com/users/alcortesm","html_url":"https://github.com/alcortesm","followers_url":"https://api.github.com/users/alcortesm/followers","following_url":"https://api.github.com/users/alcortesm/following{/other_user}","gists_url":"https://api.github.com/users/alcortesm/gists{/gist_id}","starred_url":"https://api.github.com/users/alcortesm/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/alcortesm/subscriptions","organizations_url":"https://api.github.com/users/alcortesm/orgs","repos_url":"https://api.github.com/users/alcortesm/repos","events_url":"https://api.github.com/users/alcortesm/events{/privacy}","received_events_url":"https://api.github.com/users/alcortesm/received_events","type":"User","site_admin":false},"body":":+1: ","created_at":"2017-06-08T07:38:44Z","updated_at":"2017-06-08T07:38:44Z","html_url":"https://github.com/src-d/go-billy/pull/32#discussion_r120818481","pull_request_url":"https://api.github.com/repos/src-d/go-billy/pulls/32","_links":{"self":{"href":"https://api.github.com/repos/src-d/go-billy/pulls/comments/120818481"},"html":{"href":"https://github.com/src-d/go-billy/pull/32#discussion_r120818481"},"pull_request":{"href":"https://api.github.com/repos/src-d/go-billy/pulls/32"}}},"pull_request":{"url":"https://api.github.com/repos/src-d/go-billy/pulls/32","id":123888263,"html_url":"https://github.com/src-d/go-billy/pull/32","diff_url":"https://github.com/src-d/go-billy/pull/32.diff","patch_url":"https://github.com/src-d/go-billy/pull/32.patch","issue_url":"https://api.github.com/repos/src-d/go-billy/issues/32","number":32,"state":"open","locked":false,"title":"*: Readlink and Symlink implementation","user":{"login":"mcuadros","id":1573114,"avatar_url":"https://avatars3.githubusercontent.com/u/1573114?v=3","gravatar_id":"","url":"https://api.github.com/users/mcuadros","html_url":"https://github.com/mcuadros","followers_url":"https://api.github.com/users/mcuadros/followers","following_url":"https://api.github.com/users/mcuadros/following{/other_user}","gists_url":"https://api.github.com/users/mcuadros/gists{/gist_id}","starred_url":"https://api.github.com/users/mcuadros/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mcuadros/subscriptions","organizations_url":"https://api.github.com/users/mcuadros/orgs","repos_url":"https://api.github.com/users/mcuadros/repos","events_url":"https://api.github.com/users/mcuadros/events{/privacy}","received_events_url":"https://api.github.com/users/mcuadros/received_events","type":"User","site_admin":false},"body":"The Symlinker interface has been merged with the original `Filesystem` interface.\r\n\r\nAt Windows, all the tests where `Stat` and links are involved were failing due to https://github.com/golang/go/issues/19870, to fix that, a specific `os.Stat` function was implemented resolving the link before stat the file.\r\n\r\nFixes https://github.com/src-d/go-billy/issues/28","created_at":"2017-06-04T19:01:18Z","updated_at":"2017-06-08T07:38:44Z","closed_at":null,"merged_at":null,"merge_commit_sha":"881b5f91db90819ee86c7ef8e3d39cf66a3c98f0","assignee":null,"assignees":[],"requested_reviewers":[],"milestone":null,"commits_url":"https://api.github.com/repos/src-d/go-billy/pulls/32/commits","review_comments_url":"https://api.github.com/repos/src-d/go-billy/pulls/32/comments","review_comment_url":"https://api.github.com/repos/src-d/go-billy/pulls/comments{/number}","comments_url":"https://api.github.com/repos/src-d/go-billy/issues/32/comments","statuses_url":"https://api.github.com/repos/src-d/go-billy/statuses/fff70a5eee67f5e8f3f1961d7c3a4af40c4a28fe","head":{"label":"mcuadros:memfs-symlink","ref":"memfs-symlink","sha":"fff70a5eee67f5e8f3f1961d7c3a4af40c4a28fe","user":{"login":"mcuadros","id":1573114,"avatar_url":"https://avatars3.githubusercontent.com/u/1573114?v=3","gravatar_id":"","url":"https://api.github.com/users/mcuadros","html_url":"https://github.com/mcuadros","followers_url":"https://api.github.com/users/mcuadros/followers","following_url":"https://api.github.com/users/mcuadros/following{/other_user}","gists_url":"https://api.github.com/users/mcuadros/gists{/gist_id}","starred_url":"https://api.github.com/users/mcuadros/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mcuadros/subscriptions","organizations_url":"https://api.github.com/users/mcuadros/orgs","repos_url":"https://api.github.com/users/mcuadros/repos","events_url":"https://api.github.com/users/mcuadros/events{/privacy}","received_events_url":"https://api.github.com/users/mcuadros/received_events","type":"User","site_admin":false},"repo":{"id":88376714,"name":"go-billy","full_name":"mcuadros/go-billy","owner":{"login":"mcuadros","id":1573114,"avatar_url":"https://avatars3.githubusercontent.com/u/1573114?v=3","gravatar_id":"","url":"https://api.github.com/users/mcuadros","html_url":"https://github.com/mcuadros","followers_url":"https://api.github.com/users/mcuadros/followers","following_url":"https://api.github.com/users/mcuadros/following{/other_user}","gists_url":"https://api.github.com/users/mcuadros/gists{/gist_id}","starred_url":"https://api.github.com/users/mcuadros/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mcuadros/subscriptions","organizations_url":"https://api.github.com/users/mcuadros/orgs","repos_url":"https://api.github.com/users/mcuadros/repos","events_url":"https://api.github.com/users/mcuadros/events{/privacy}","received_events_url":"https://api.github.com/users/mcuadros/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/mcuadros/go-billy","description":"The missing interface filesystem abstraction for Go","fork":true,"url":"https://api.github.com/repos/mcuadros/go-billy","forks_url":"https://api.github.com/repos/mcuadros/go-billy/forks","keys_url":"https://api.github.com/repos/mcuadros/go-billy/keys{/key_id}","collaborators_url":"https://api.github.com/repos/mcuadros/go-billy/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/mcuadros/go-billy/teams","hooks_url":"https://api.github.com/repos/mcuadros/go-billy/hooks","issue_events_url":"https://api.github.com/repos/mcuadros/go-billy/issues/events{/number}","events_url":"https://api.github.com/repos/mcuadros/go-billy/events","assignees_url":"https://api.github.com/repos/mcuadros/go-billy/assignees{/user}","branches_url":"https://api.github.com/repos/mcuadros/go-billy/branches{/branch}","tags_url":"https://api.github.com/repos/mcuadros/go-billy/tags","blobs_url":"https://api.github.com/repos/mcuadros/go-billy/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/mcuadros/go-billy/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/mcuadros/go-billy/git/refs{/sha}","trees_url":"https://api.github.com/repos/mcuadros/go-billy/git/trees{/sha}","statuses_url":"https://api.github.com/repos/mcuadros/go-billy/statuses/{sha}","languages_url":"https://api.github.com/repos/mcuadros/go-billy/languages","stargazers_url":"https://api.github.com/repos/mcuadros/go-billy/stargazers","contributors_url":"https://api.github.com/repos/mcuadros/go-billy/contributors","subscribers_url":"https://api.github.com/repos/mcuadros/go-billy/subscribers","subscription_url":"https://api.github.com/repos/mcuadros/go-billy/subscription","commits_url":"https://api.github.com/repos/mcuadros/go-billy/commits{/sha}","git_commits_url":"https://api.github.com/repos/mcuadros/go-billy/git/commits{/sha}","comments_url":"https://api.github.com/repos/mcuadros/go-billy/comments{/number}","issue_comment_url":"https://api.github.com/repos/mcuadros/go-billy/issues/comments{/number}","contents_url":"https://api.github.com/repos/mcuadros/go-billy/contents/{+path}","compare_url":"https://api.github.com/repos/mcuadros/go-billy/compare/{base}...{head}","merges_url":"https://api.github.com/repos/mcuadros/go-billy/merges","archive_url":"https://api.github.com/repos/mcuadros/go-billy/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/mcuadros/go-billy/downloads","issues_url":"https://api.github.com/repos/mcuadros/go-billy/issues{/number}","pulls_url":"https://api.github.com/repos/mcuadros/go-billy/pulls{/number}","milestones_url":"https://api.github.com/repos/mcuadros/go-billy/milestones{/number}","notifications_url":"https://api.github.com/repos/mcuadros/go-billy/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/mcuadros/go-billy/labels{/name}","releases_url":"https://api.github.com/repos/mcuadros/go-billy/releases{/id}","deployments_url":"https://api.github.com/repos/mcuadros/go-billy/deployments","created_at":"2017-04-15T22:06:16Z","updated_at":"2017-04-15T22:06:17Z","pushed_at":"2017-06-08T04:01:49Z","git_url":"git://github.com/mcuadros/go-billy.git","ssh_url":"git@github.com:mcuadros/go-billy.git","clone_url":"https://github.com/mcuadros/go-billy.git","svn_url":"https://github.com/mcuadros/go-billy","homepage":"","size":89,"stargazers_count":0,"watchers_count":0,"language":"Go","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"src-d:master","ref":"master","sha":"81e8eae9a0b102e3474f388b7e4ac4e24130893e","user":{"login":"src-d","id":15128793,"avatar_url":"https://avatars1.githubusercontent.com/u/15128793?v=3","gravatar_id":"","url":"https://api.github.com/users/src-d","html_url":"https://github.com/src-d","followers_url":"https://api.github.com/users/src-d/followers","following_url":"https://api.github.com/users/src-d/following{/other_user}","gists_url":"https://api.github.com/users/src-d/gists{/gist_id}","starred_url":"https://api.github.com/users/src-d/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/src-d/subscriptions","organizations_url":"https://api.github.com/users/src-d/orgs","repos_url":"https://api.github.com/users/src-d/repos","events_url":"https://api.github.com/users/src-d/events{/privacy}","received_events_url":"https://api.github.com/users/src-d/received_events","type":"Organization","site_admin":false},"repo":{"id":75849594,"name":"go-billy","full_name":"src-d/go-billy","owner":{"login":"src-d","id":15128793,"avatar_url":"https://avatars1.githubusercontent.com/u/15128793?v=3","gravatar_id":"","url":"https://api.github.com/users/src-d","html_url":"https://github.com/src-d","followers_url":"https://api.github.com/users/src-d/followers","following_url":"https://api.github.com/users/src-d/following{/other_user}","gists_url":"https://api.github.com/users/src-d/gists{/gist_id}","starred_url":"https://api.github.com/users/src-d/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/src-d/subscriptions","organizations_url":"https://api.github.com/users/src-d/orgs","repos_url":"https://api.github.com/users/src-d/repos","events_url":"https://api.github.com/users/src-d/events{/privacy}","received_events_url":"https://api.github.com/users/src-d/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/src-d/go-billy","description":"The missing interface filesystem abstraction for Go","fork":false,"url":"https://api.github.com/repos/src-d/go-billy","forks_url":"https://api.github.com/repos/src-d/go-billy/forks","keys_url":"https://api.github.com/repos/src-d/go-billy/keys{/key_id}","collaborators_url":"https://api.github.com/repos/src-d/go-billy/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/src-d/go-billy/teams","hooks_url":"https://api.github.com/repos/src-d/go-billy/hooks","issue_events_url":"https://api.github.com/repos/src-d/go-billy/issues/events{/number}","events_url":"https://api.github.com/repos/src-d/go-billy/events","assignees_url":"https://api.github.com/repos/src-d/go-billy/assignees{/user}","branches_url":"https://api.github.com/repos/src-d/go-billy/branches{/branch}","tags_url":"https://api.github.com/repos/src-d/go-billy/tags","blobs_url":"https://api.github.com/repos/src-d/go-billy/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/src-d/go-billy/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/src-d/go-billy/git/refs{/sha}","trees_url":"https://api.github.com/repos/src-d/go-billy/git/trees{/sha}","statuses_url":"https://api.github.com/repos/src-d/go-billy/statuses/{sha}","languages_url":"https://api.github.com/repos/src-d/go-billy/languages","stargazers_url":"https://api.github.com/repos/src-d/go-billy/stargazers","contributors_url":"https://api.github.com/repos/src-d/go-billy/contributors","subscribers_url":"https://api.github.com/repos/src-d/go-billy/subscribers","subscription_url":"https://api.github.com/repos/src-d/go-billy/subscription","commits_url":"https://api.github.com/repos/src-d/go-billy/commits{/sha}","git_commits_url":"https://api.github.com/repos/src-d/go-billy/git/commits{/sha}","comments_url":"https://api.github.com/repos/src-d/go-billy/comments{/number}","issue_comment_url":"https://api.github.com/repos/src-d/go-billy/issues/comments{/number}","contents_url":"https://api.github.com/repos/src-d/go-billy/contents/{+path}","compare_url":"https://api.github.com/repos/src-d/go-billy/compare/{base}...{head}","merges_url":"https://api.github.com/repos/src-d/go-billy/merges","archive_url":"https://api.github.com/repos/src-d/go-billy/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/src-d/go-billy/downloads","issues_url":"https://api.github.com/repos/src-d/go-billy/issues{/number}","pulls_url":"https://api.github.com/repos/src-d/go-billy/pulls{/number}","milestones_url":"https://api.github.com/repos/src-d/go-billy/milestones{/number}","notifications_url":"https://api.github.com/repos/src-d/go-billy/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/src-d/go-billy/labels{/name}","releases_url":"https://api.github.com/repos/src-d/go-billy/releases{/id}","deployments_url":"https://api.github.com/repos/src-d/go-billy/deployments","created_at":"2016-12-07T15:32:53Z","updated_at":"2017-06-07T21:36:29Z","pushed_at":"2017-06-08T04:01:51Z","git_url":"git://github.com/src-d/go-billy.git","ssh_url":"git@github.com:src-d/go-billy.git","clone_url":"https://github.com/src-d/go-billy.git","svn_url":"https://github.com/src-d/go-billy","homepage":"","size":84,"stargazers_count":17,"watchers_count":17,"language":"Go","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":9,"mirror_url":null,"open_issues_count":2,"forks":9,"open_issues":2,"watchers":17,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/src-d/go-billy/pulls/32"},"html":{"href":"https://github.com/src-d/go-billy/pull/32"},"issue":{"href":"https://api.github.com/repos/src-d/go-billy/issues/32"},"comments":{"href":"https://api.github.com/repos/src-d/go-billy/issues/32/comments"},"review_comments":{"href":"https://api.github.com/repos/src-d/go-billy/pulls/32/comments"},"review_comment":{"href":"https://api.github.com/repos/src-d/go-billy/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/src-d/go-billy/pulls/32/commits"},"statuses":{"href":"https://api.github.com/repos/src-d/go-billy/statuses/fff70a5eee67f5e8f3f1961d7c3a4af40c4a28fe"}}}}
{"actor":{"display_login":"alcortesm"}}