-
Notifications
You must be signed in to change notification settings - Fork 18k
cmd/go: allow local replacements without a corresponding explicit requirement? #33370
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
Comments
Thinking about this some more, I think using the zero-version was a mistake. Instead, we shouldn't be writing the That seems to support the second case considered in #26344 (comment): this sort of wildcard |
Change https://golang.org/cl/220080 mentions this issue: |
Updates golang/go#36460 Updates golang/go#27900 Updates golang/go#26955 Updates golang/go#30831 Updates golang/go#32058 Updates golang/go#32380 Updates golang/go#32419 Updates golang/go#33370 Updates golang/go#33669 Updates golang/go#36369 Change-Id: I1d4644e3e8b4e688c2fc5a569312495e5072b7d7 Reviewed-on: https://go-review.googlesource.com/c/proposal/+/220080 Reviewed-by: Russ Cox <rsc@golang.org>
Thinking about this further: it is often useful (for testing) to be able to slot in dormant So I think this sort of “select-and-replace” form should actually have a different syntax; perhaps one derived from (or identical to) the “replacement alias” form (#26904). |
In CL 153157, I added code so that a module path that has a
replace
directive resolves to a pseudo-version of the formvX.0.0-00010101000000-000000000000
rather than checking for upstream dependencies.That unblocks builds, but means that the module graph may indicate a commit that doesn't actually exist. There are use-cases for such a configuration, such as testing against unpublished commits of upstream modules (see #26241 (comment) and #32776), but since the commit does not actually exist, the requirement graph of the resulting module cannot be used without a corresponding
replace
directive in every downstream consumer.Since this pseudo-version has an unambiguous and very unique commit hash (all zeroes!), I propose that we special-case it (if unreplaced) and treat it as equivalent to an empty commit.
CC @jayconrod @thepudds @rogpeppe
The text was updated successfully, but these errors were encountered: