On Thu, Oct 24, 2019 at 1:07 PM Shaun Crampton <sh...@tigera.io> wrote:

> I circed some of the suggestions round my team.  Sounds like others had
> already tried some of the suggestions with mixed results:
>
>
>    - Go v1.13 still has trouble authenticating to github without an
>    "insteadof" in the config.  We use 2FA on github, which seems to make HTTPS
>    fail in a way that doesn't fall back to git+ssh mode?
>
> We have https://golang.org/issue/26232 open for 2FA workflows in general.

In the meantime, you may need to configure a Personal Access Token
<https://help.github.com/en/github/authenticating-to-github/creating-a-personal-access-token-for-the-command-line>
to
get HTTPS to work.


>    - Another team member said they tried using
>    v0.0.0-00010101000000-000000000000 as version but it got replaced.
>
> That probably means that you have a higher version requirement from some
other dependency. (The `go` command automatically updates the `go.mod` file
to maintain consistency.)


On Thursday, October 24, 2019 at 10:35:32 AM UTC+1, Shaun Crampton wrote:
>>
>>
>>> The good news is that we're aware of (and planning to address) most of
>>> these pain points; the bad news is that we haven't been able to get to most
>>> of them yet.
>>>
>>>
>> Great to see, thanks!
>>
>>
>>
>>>
>>>> I think the biggest problem we have is when working with private
>>>> repos.   What I want to express to the tool is
>>>>
>>>> My module requires commit abcd1234 (or version v1.2.3) of dependency
>>>> x/y/z
>>>>
>>>> Look for any instances of dependency x/y/z in git repo 
>>>> g...@github.com:ourfork
>>>> instead of the default.
>>>>
>>>>
>>> I believe this is https://golang.org/issue/28176.
>>>
>>> It's an intriguing idea, but problematic if the dependencies are
>>> specified as pseudo-versions, because the commit hashes in a fork in
>>> general will not match the hashes in the upstream module. We're still
>>> exploring alternatives for this use-case.
>>>
>>
>>
>> So, the problem that pseudo-versions are trying to solve is ordering in
>> the face of unordered commit hashes?  For my use case, the way I want this
>> to work is that, once a dependency is pinned to my private fork, it's as if
>> the public repo didn't exist.  In 99% of cases, all the pins that I'm
>> working with are my organisation's repos anyway so once we pin to a private
>> fork that's what we want to use everywhere, transitively, even in
>> downstream repos.  In extreme cases, even the version numbering scheme in
>> the private fork may be different so there's not necessarily any relation
>> between the open source v2.3.0 and the private v2.3.0 tags.
>>
>> Our minority use case is forking some public repo to make a fix.  In that
>> case, a perfect tool would have a way to say "we need a version >= open
>> source version that must have (fix) commit abcd in its commit history"
>> Then, once our fix is upstreamed, the open source version will become a
>> candidate.  I suspect that's too much to ask though!
>>
>>
>>
>>>
>>>
>>> However, what I can express to the tool is
>>>>
>>>> My module requires version ??? of dependency x/y/z
>>>>
>>>> Replace  x/y/z @ version ??? with <other module> @ abcd1234
>>>>
>>>>
>>>>
>>>>
>>> Currently it should be `v0.0.0-00010101000000-000000000000`.
>>> We're also rethinking this behavior for `replace` in general; see
>>> https://golang.org/issue/33370.
>>>
>>>
>>
>> Good to know that there's a good value to put there.  Would be nice if it
>> could be made shorter, though, I'll have to look that up.
>>
>>
>>>>    - There's nowhere to specify the details of the repo (e.g.
>>>>    connection/auth type), all that has to magically work according to my 
>>>> git
>>>>    settings and the defaults aren't great for private repos (which we 
>>>> access
>>>>    over ssh).
>>>>
>>>> See https://golang.org/cmd/go/#hdr-Remote_import_paths.
>>>
>>> In general we expect that either you have an HTTPS server to locate the
>>> repo for a given import path (credentials can be stored in a `.netrc` file;
>>> see also https://golang.org/issue/26232), or you include an explicit
>>> VCS extension somewhere in the import path (and have corresponding
>>> credentials configured per-user in your VCS).
>>>
>>
>>
>> Maybe I'm just out-of-date, go now tries git+ssh as well as https://,
>> was that new in v1.13?  Since we only use github, that should be good
>> enough for me.
>>
>>
>>
>>>
>>> We also just ran into the new GOPRIVATE env var and had to update all
>>>> our builds to use that.  Couldn't that just fall back to the private
>>>> behaviour if it gets a cache miss, it seems over-engineered to require an
>>>> explicit exception!
>>>>
>>>
>>> The checksum database and proxy fallback are designed to provide
>>> integrity by default.
>>>
>>> Without making the opt-out explicit, an origin could serve one set of
>>> sources (and checksum) to you, and another version to someone else, and
>>> simply refuse to serve anything at all in response to queries from the
>>> checksum database (so that the entry would always be missing), and no one
>>> would be the wiser.
>>>
>>
>>
>> Fair enough, I suppose.  From a selfish point of view, making the go
>> tooling auto-trust github.com private repos would be nice :-)  I can't
>> easily do that with a single entry in GOPRIVATE since whether a repo is
>> private or not can only be guessed by whether you need to use credentials
>> or ssh to access it.
>>
>>
>>
>>>
>>>
>>> Another issue we've had is making a build mode where we can build
>>>> against local copies of the dependencies for quick development.  We can add
>>>> replace directives to point to local directories, which is part of the
>>>> puzzle, but it's hard to do that "just for one build".  Not sure what we're
>>>> looking for here; maybe an optional go.mod override file that can be passed
>>>> in for just one build?
>>>>
>>>
>>> You mean like https://golang.org/issue/34506? 🙂
>>>
>>>
>>>
>>
>> Sounds like just what we need, thanks!
>>
> --
> You received this message because you are subscribed to a topic in the
> Google Groups "golang-nuts" group.
> To unsubscribe from this topic, visit
> https://groups.google.com/d/topic/golang-nuts/Kg-X2qZQohg/unsubscribe.
> To unsubscribe from this group and all its topics, send an email to
> golang-nuts+unsubscr...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/golang-nuts/930aff92-8600-4df1-8236-06b07916a57b%40googlegroups.com
> <https://groups.google.com/d/msgid/golang-nuts/930aff92-8600-4df1-8236-06b07916a57b%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/CAKWVi_Rbyir%2B%3Dpy_tNe_kzPTDBOQMfopO63PM%2B-g04ZPKERooQ%40mail.gmail.com.

Reply via email to