tree c4cf535fc5a270f627ee5688a480ea9571e68e6d
parent e59910c5c1a3845491602eeec22986d2e7dd24b4
author Holger Freyther <holger@moiji-mobile.com> 1744648813 +0800
committer GitHub <noreply@github.com> 1744648813 +0000
gpgsig -----BEGIN PGP SIGNATURE-----
 
 wsFcBAABCAAQBQJn/TptCRC1aQ7uu5UhlAAALY8QAISZuHmMiPl6b/S1BNs0T0tv
 N7HkGtJh31i9YS5hRFniZwbx4imtJmn5Eew8XitO3ydNYacLTZ1aoMjTpkumnocO
 6uMeOM7kMn3zjg3LiY2e4eRTl9wJI2+tM+AlhWdo3YK+sXLH8jqIk03V0e/ffGxM
 IV9MtWkzEQ+x+jVqKMxpU3RTVLkH8Qu0XeP7ipkwnGtK2FLUxQqibz7KidhknODL
 U22BYtPDdupaZnPO/XoUjFfIZTqGNibNtQxteWoj30P5PAGQpL8J3a8UyEAKlgIa
 mQE49NnWD27jaVPJLgzNwEe/is9SR3desKn1ATC2pmljUSqNt5501A71dqpOahHg
 +Vns8I8aJk0kZ62y/J2O1hAogy23EPHW1blUu+Fk4evxSIJhdsG3zy4KvgkIF1tW
 WdKvC7q5VS9TXY7eXY3cjAZxKCqKcN2GklLnFS4OT529/hP/MGqxiJiwd2AdPPTS
 SXr7mLvOSYtJ7FeF15hU+584qHle3GJQ9/8BCQSThwWc0zwWLFVOWZc4OVaCfQQF
 adVhaBL1uCfOJE5S3eqHvX+spg+PwNSFI8iU98PXvYnZFiuES9GIa+7yTMzSuHYd
 FTTT43lbWuH3xpX4CzodYqbjZyWqVCncJYKrgekiTlcsqLiEvg2dinfSnF4//AzC
 87wDxx/PleoNK7Fs3Awy
 =VB0D
 -----END PGP SIGNATURE-----
 

Improve consistency by prefering bazel_dep over Go (#2065)

Letting the bazel_dep and Go dependency participate equally in the
version resolution is creating various inconsistencies. This can lead to
to a root module having to either use `inject_repo` or `use_repo` and
`override_repo`.

Resolve this by consistently preferring the `bazel_dep` over the Go
dependency. Keep the existing code that warns (or can fail) if the
dependencies are at different versions.

Example MODULE.bazel:
```
module(
    name = "bazel_dep_should_win",
)

bazel_dep(name = "rules_go", version = "0.53.0")
bazel_dep(name = "gazelle", version = "0.42.0")
bazel_dep(name = "circl", version = "1.3.8")

go_deps = use_extension("@gazelle//:extensions.bzl", "go_deps")
go_deps.from_file(go_mod = "//:go.mod")
```

And the go.mod referring to a newer version.

Fixes #2060

<!-- Thanks for sending a PR! Before submitting:

1. If this is your first PR, please read CONTRIBUTING.md and sign the
CLA
   first. We cannot review code without a signed CLA.
2. Please file an issue *first*. All features and most bug fixes should
have
an associated issue with a design discussed and decided upon. Small bug
   fixes and documentation improvements don't need issues.
3. New features and bug fixes must have tests. Documentation may need to
be updated. If you're unsure what to update, send the PR, and we'll
discuss
   in review.
-->

**What type of PR is this?**

> Uncomment one line below and remove others.
>
> Bug fix
> Feature
> Documentation
> Other

**What package or component does this PR mostly affect?**

> For example:
>
> language/go
> cmd/gazelle
> go_repository
> all

**What does this PR do? Why is it needed?**

**Which issues(s) does this PR fix?**

Fixes #

**Other notes for review**