1. 01 Aug, 2018 2 commits
    • Russ Cox's avatar
      cmd/go: split go mod into multiple subcommands · 6121987a
      Russ Cox authored
      The current "go mod" command does too many things.
      The design is unclear.
      
      It looks like "everything you might want to do with modules"
      which causes people to think all module operations go through
      "go mod", which is the opposite of the seamless integration we're
      going for. In particular too many people think "go mod -require"
      and "go get" are the same.
      
      It does make sense to put the module-specific functionality
      under "go mod", but not as flags. Instead, split "go mod" into
      multiple subcommands:
      
      	go mod edit   # old go mod -require ...
      	go mod fix    # old go mod -fix
      	go mod graph  # old go mod -graph
      	go mod init   # old go mod -init
      	go mod tidy   # old go mod -sync
      	go mod vendor # old go mod -vendor
      	go mod verify # old go mod -verify
      
      Splitting out the individual commands makes both the docs
      and the implementations dramatically easier to read.
      It simplifies the command lines
      (go mod -init -module m is now 'go mod init m')
      and allows command-specific flags.
      
      We've avoided subcommands in the go command to date, and we
      should continue to avoid adding them unless it really makes
      the experience significantly better. In this case, it does.
      
      Creating subcommands required some changes in the core
      command-parsing and help logic to generalize from one
      level to multiple levels.
      
      As part of having "go mod init" be a separate command,
      this CL changes the failure behavior during module initialization
      to be delayed until modules are actually needed.
      Initialization can still happen early, but the base.Fatalf
      is delayed until something needs to use modules.
      This fixes a bunch of commands like 'go env' that were
      unhelpfully failing with GO111MODULE=on when not in a
      module directory.
      
      Fixes #26432.
      Fixes #26581.
      Fixes #26596.
      Fixes #26639.
      
      Change-Id: I868db0babe8c288e8af684b29d4a5ae4825d6407
      Reviewed-on: https://go-review.googlesource.com/126655
      Run-TryBot: Russ Cox <rsc@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarBryan C. Mills <bcmills@google.com>
      6121987a
    • Russ Cox's avatar
      cmd/go: add 'go version' statement in go.mod · 16962faf
      Russ Cox authored
      We aren't planning to use this or advertise it much yet,
      but having support for it now will make it easier to start
      using in the future - older go commands will understand
      what 'go 1.20' means and that they don't have go 1.20.
      
      Fixes #23969.
      
      Change-Id: I729130b2690d3c0b794b49201526b53de5093c45
      Reviewed-on: https://go-review.googlesource.com/125940
      Run-TryBot: Russ Cox <rsc@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarBryan C. Mills <bcmills@google.com>
      16962faf
  2. 31 Jul, 2018 20 commits
  3. 30 Jul, 2018 3 commits
  4. 29 Jul, 2018 3 commits
  5. 28 Jul, 2018 9 commits
  6. 27 Jul, 2018 3 commits