8000 where should submodules be checked out? · Issue #12 · rogpeppe/gohack · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

where should submodules be checked out? #12

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of servi 8000 ce and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
rogpeppe opened this issue Aug 18, 2018 · 2 comments
Open

where should submodules be checked out? #12

rogpeppe opened this issue Aug 18, 2018 · 2 comments

Comments

@rogpeppe
Copy link
Owner

If we try to replace two modules in the same repository, the current gohack scheme
of checking out to a single global root won't work well because the two modules
may clash (for example they may well be checked out at different versions).

One possibility might be to detect when there's a clash and use a different
name for the directory that holds the VCS directory. The problem with that
is that names become unpredictable.

@bcmills
Copy link
bcmills commented Sep 25, 2018

If they're in the same root and at compatible versions (that is, if the code within that submodule hasn't changed since the requested version), I'd say leave them in the same repository (and just update replace directives appropriately).

If they're in the same root at incompatible versions, maybe emit an error?

@rogpeppe
Copy link
Owner Author
rogpeppe commented Oct 8, 2018

If they're in the same root and at compatible versions (that is, if the code within that submodule hasn't changed since the requested version), I'd say leave them in the same repository (and just update replace directives appropriately).
If they're in the same root at incompatible versions, maybe emit an error?

I'm not entirely sure whether that's a good idea. The error situation you describe will be increasingly likely the larger a program is. It would be frustrating to want to add a printf somewhere in a large program only to be told that it can't be done because of a version clash.

Note that this issue also applies when you've got multiple major versions of a repository. I think it's reasonable to want to hack on both example.com/m and example.com/m/v2 at the same time, but the current approach wouldn't allow that.

I'm currently thinking of checking out all modules to $GOHACK/module/_mod instead of just $GOHACK/module. That way this issue goes away because it's perfectly OK to have example.com/m/_mod and examples.com/m/v2/_mod.

The down side is that you might well want to use the same directory for both. There's always go mod edit --replace for that, I suppose.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants
0