rogpeppe / gohack

Make temporary edits to your Go module dependencies
BSD 3-Clause "New" or "Revised" License
895 stars 23 forks source link

add 'gohack promote' or 'gohack undo -get' #60

Open josharian opened 4 years ago

josharian commented 4 years ago

I find myself popping back and forth a lot between working on my current project and working on its dependencies.

The most painful part of this is currently when I've decided I am happy with a change in a dependency and want to use it immediately in my project. This requires:

  1. commit+push dependency (not always to master, sometimes to PR for review while I continue to use it, so as not to be bloocked)
  2. git rev-parse head of dependency to find version to use
  3. go get pkgpath@version in project to update to latest version
  4. comment out replace directive in project (or remove it; I comment out to make it easier to switch back into hack mode)

1 will always need to be done manually, but 2-4 could be automated. gohack currently only does 4.

How do you feel about adding 2 and 3 to gohack? Ideas: gohack promote or gohack undo -get or gohack undo -promote.

(I'm starting to lean towards building another tool that most closely matches my current workflow, in which I am actively working a lot on a dependency or two, but I'd like to first investigate whether I can achieve a happy union with gohack.)

myitcv commented 4 years ago

I'd certainly use this, so it would get my vote!

josharian commented 4 years ago

I was about to start on this, but...

The docs for undo state:

The undo command can be used to revert to the non-gohacked
module versions. It only removes the relevant replace
statements from the go.mod file

This seems at least mildly opposed to the behavior I want.

So I think might I wait for a bit more input before starting. In particular, should this be an undo flag, a new command, or...?