[lucicfg] Make graph.add_edge idempotent.

Edge redeclaration errors were never useful (never seen it in the real
situations), but they complicate working with "idempotent" nodes (nodes that
are allowed to be added more than once without triggering a redeclaration
error).

In practical terms it means e.g. the following config is no longer erroneous:

  luci.gitiles_poller(
      ...
      triggers = [
          'some builder',
          'some builder',  # duplicates are silently ignored
          ...
      ],
  )

R=tandrii@chromium.org, nodir@chromium.org
BUG=833946

Change-Id: Ie102a487e4482555b59dfc5260bfda65c79125d6
Reviewed-on: https://chromium-review.googlesource.com/c/infra/luci/luci-go/+/1526716
Commit-Queue: Vadim Shtayura <vadimsh@chromium.org>
Reviewed-by: Andrii Shyshkalov <tandrii@chromium.org>
5 files changed
tree: 9b2a4027f25912011f73835a3b566a35b3ae5379
  1. appengine/
  2. auth/
  3. buildbucket/
  4. cipd/
  5. client/
  6. common/
  7. config/
  8. cq/
  9. dm/
  10. examples/
  11. gce/
  12. grpc/
  13. hardcoded/
  14. logdog/
  15. luci_notify/
  16. lucicfg/
  17. lucictx/
  18. machine-db/
  19. milo/
  20. mmutex/
  21. mp/
  22. scheduler/
  23. scripts/
  24. server/
  25. starlark/
  26. swarming/
  27. tokenserver/
  28. tools/
  29. tumble/
  30. vpython/
  31. web/
  32. .gitattributes
  33. .travis.yml
  34. AUTHORS
  35. codereview.settings
  36. CONTRIBUTING.md
  37. CONTRIBUTORS
  38. LICENSE
  39. OWNERS
  40. pre-commit-go.yml
  41. PRESUBMIT.py
  42. README.md
README.md

luci-go: LUCI services and tools in Go

GoDoc

Installing

LUCI Go code is meant to be worked on from an Chromium infra.git checkout, which enforces packages versions and Go toolchain version. First get fetch via depot_tools.git then run:

fetch infra
cd infra/go
eval `./env.py`
cd src/go.chromium.org/luci

Contributing

Contributing uses the same flow as Chromium contributions.