{"id":15413999,"url":"https://github.com/myitcv/go-symlink","last_synced_at":"2025-11-08T11:30:43.432Z","repository":{"id":78276082,"uuid":"57434291","full_name":"myitcv/go-symlink","owner":"myitcv","description":"Supporting repo for https://github.com/golang/go/issues/15507","archived":false,"fork":false,"pushed_at":"2016-05-01T16:29:16.000Z","size":29,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-12-28T03:14:02.478Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/myitcv.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-04-30T08:49:11.000Z","updated_at":"2016-12-11T15:13:42.000Z","dependencies_parsed_at":"2023-07-29T04:45:13.419Z","dependency_job_id":null,"html_url":"https://github.com/myitcv/go-symlink","commit_stats":{"total_commits":1,"total_committers":1,"mean_commits":1.0,"dds":0.0,"last_synced_commit":"3ae190dddcb0be0d6e162de14c1344e261aebf76"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/myitcv%2Fgo-symlink","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/myitcv%2Fgo-symlink/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/myitcv%2Fgo-symlink/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/myitcv%2Fgo-symlink/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/myitcv","download_url":"https://codeload.github.com/myitcv/go-symlink/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239552366,"owners_count":19657899,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-01T16:59:17.855Z","updated_at":"2025-11-08T11:30:43.372Z","avatar_url":"https://github.com/myitcv.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"## go-symlink example repository\n\nSee the associated [Go proposal](https://docs.google.com/document/d/1n5y3mZPs_4PjI80a0vZEaHLe7r9PeiiE9xsIrQFT8Is)\n\nThis repository exports three public packages:\n\n* `mylib1` - a very boring package\n* `mylib2` - another very boring package\n* `cmd/a` - an uninteresting binary\n\n`cmd/a` is `go get`-able because it [vendors](https://docs.google.com/document/d/1Bz5-UB7g2uPBdOx-rw5t9MxJwkfpx90cqG9AFL0JAYo/edit)\n(Go 1.5 definition) all of its external dependencies.\n\nHowever, per best practice, `mylib{1,2}` do not vendor (Go 1.5 definition) their external dependencies. Instead, for\ndevelopers of this repository (and by extension `mylib{1,2}`, `cmd/a`) we follow a different approach.\n\n## Developers of this repository\n\nIn order to have repeatable builds and consistent development experience for _developers of the repository_ all external\ndependencies are \"vendored\" (**NOT** Go 1.5 definition) into `_vendor`. As described below, these developers are required\nto augment their `GOPATH`.\n\nHere, \"vendored\" means the _entire_ external dependency is copied (test files and all) into `_vendor`. This ensures that\nat any point in time we can verify we have a \"compatible\" set of external dependencies.\n\nTo avoid having multiple copies of external dependencies, `cmd/a` shares the same copy of the external dependencies\nvia a symlink (in the [proposal](https://docs.google.com/document/d/1n5y3mZPs_4PjI80a0vZEaHLe7r9PeiiE9xsIrQFT8Is) this\nUnix symlink is replaced with a Go \"symlink\")\n\n## Getting started as a developer of this repository\n\n_**Note:** this repository currently makes use of symlinks and so is not guaranteed to work on all platforms (read\nWindows). The [following proposal](https://docs.google.com/document/d/1n5y3mZPs_4PjI80a0vZEaHLe7r9PeiiE9xsIrQFT8Is)\ndiscusses a means by which symlink-like behaviour be introduced to `cmd/go` and friends_\n\nAugmentation of `GOPATH` is required to develop this repository.\n\nCode can be `go get` in the usual way:\n\n```\ngo get github.com/myitcv/go-symlink/{mylib1,mylib2,cmd/a}\n```\n\nBut when working on packages contained within `github.com/myitcv/go-symlink`, your `GOPATH` must be augmented to include `_vendor`:\n\n```\n$ pwd\n/path/to/gopath/src/github.com/myitcv/go-symlink\n$ echo $GOPATH\n/path/to/gopath/src/github.com/myitcv/go-symlink/_vendor:/path/to/gopath\n$ go test ./...\n?       github.com/myitcv/go-symlink/cmd/a      [no test files]\n?       github.com/myitcv/go-symlink/cmd/a/internal/cmdinternallib1     [no test files]\n?       github.com/myitcv/go-symlink/mylib1     [no test files]\n?       github.com/myitcv/go-symlink/mylib2     [no test files]\n```\n\nWe can also ensure we have \"compatible\" external dependencies:\n\n```\n$ cd _vendor/src\n$ go test ./...\nok      bitbucket.org/pkg/inflect       0.005s\nok      github.com/pborman/uuid 0.003s\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmyitcv%2Fgo-symlink","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmyitcv%2Fgo-symlink","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmyitcv%2Fgo-symlink/lists"}