I am yet to go through your mail in detail. But I will answer the primary
question first. I have a monolithic repository which contains all my go
backend related code in a single project. I have about 8 packages that are
internally defined inside my repo, and I do not need any version management
for any of them. All of these are very specific to my project and some are
just structs.

I have about 5 third party packages which I depend on and some of them are
quite popular, like the pq driver for postgres, dgrijalva/jwt-go, etc., So
over all about a dozen packages are dependencies in total.

ஞாயி., 21 அக்., 2018, பிற்பகல் 11:32 அன்று, <thepudds1...@gmail.com>
எழுதியது:

> Hi Sankar,
>
> How many repos are you directly modifying?
>
> Most projects are likely following the simplest approach of using a single
> module per repository, which typically would mean creating one go.mod file
> located in the root directory of each repository. (The official modules
> proposal predicts that is what most projects will do:
> https://go.googlesource.com/proposal/+/master/design/24301-versioned-go.md
> ).
>
> Separately, I believe you are correct that relative import paths are not
> supported with modules. See this FAQ on the modules wiki:
> https://github.com/golang/go/wiki/Modules#do-modules-work-with-relative-imports-like-import-subdir
> and the related issue
> https://github.com/golang/go/issues/26645#issuecomment-408572701, which
> includes this comment:
>
>    > In modules, there finally is a name for the subdirectory. If the
> parent directory says "module m" then the subdirectory is imported as
> "m/subdir", no longer "./subdir".
>
> If you end up with one module per repo, a related question would be how
> many modules are you editing at roughly the same time? If that is part of
> your concern or question, then there are a few different options there.
> I'll include a few pointers here for things to review and consider, but
> then after looking over those, you might want to circle back here with
> additional questions or comments on your use case.
>
> For editing multiple modules at the same time, one approach is to use the
> 'replace' directive to point to local copies. You can read a bit more about
> that in this FAQ on the modules wiki:
>   "FAQ: When should I use the replace directive?"
>
> https://github.com/golang/go/wiki/Modules#when-should-i-use-the-replace-directive
>
> A related but more automated approach is github.com/rogpeppe/gohack,
> which is a new community tool to automate and simplify 'replace' and
> multi-module workflows, including allowing you to easily modify one of your
> dependencies. For example, 'gohack example.com/some/dependency'
> automatically clones the appropriate repository and adds the necessary
> replace directives to your 'go.mod' so that you can edit that dependency
> and build using those edits, all locally and without requiring you to
> commit anything yet. You can read more about 'gohack' at the repo, or you
> can also see a worked example of using 'gohack' at the 'Go Modules by
> Example' site here:
> https://github.com/go-modules-by-example/index/blob/master/011_using_gohack/README.md
>
> There are several more options as well for multi-module workspaces,
> including the core go tooling seems to have been built to make it possible
> to build more specific tools on top. There's an overview of several of the
> options in the following thread, including possibly using commit hooks, or
> using pre-release semver tags, etc., as well as some pointers to related
> discussion issues in the tracker:
>   https://groups.google.com/d/msg/golang-nuts/0KQ4ZuSpzy8/5m4Ek7q2BgAJ
>
> Sorry that is probably not 100% answering your question, but perhaps you
> can say a bit more about your specifics, which then likely will trigger
> some more specific comments from this list.
>
> --thepudds
>
> On Sunday, October 21, 2018 at 12:31:34 PM UTC-4, Sankar wrote:
>>
>> Hi,
>>
>> We were using go 1.7 until recently and now want to switch to 1.11 and
>> start using go modules.
>>
>> Currently our source organization is as follows:
>>
>> ~/go/src/gitlab.com/example/
>>                                    |
>>                                    |
>>                                    example/
>>                                         |
>>                                         |
>>                                         |api/
>>                                         |   |
>>                                         |   main.go (imports library1,
>> library2 and some 3rd party libs)
>>                                         |library1/
>>                                         |   |
>>                                         |   lib1.go
>>                                         |library2/
>>                                         |  |
>>                                         |  lib2.go
>>
>> In our main.go, We were importing packages like:
>>
>> ```
>> "gitlab.com/example/example/library1"
>> "gitlab.com/example/example/library2"
>> "gitHUB.com/3rdpary/library"
>> ```
>>
>> We actually wanted to import library1 and library2 via relative path
>> ("../library[12]") but since the go compiler did not support relative
>> imports then, we used the absolute imports. We did not use any dependency
>> management tool (like dep, glide etc.).
>>
>> The libraries that we write (library1 and library2) need not be versioned
>> and will always be used in a reliable state in our api/main.go
>>
>> We however need versioning support for our 3rd party libraries.
>>
>> For such a hybrid requirement, what is the most recommended way to import
>> and structure our libraries and the source directories, to work with go
>> modules ? I tried reading through
>> https://github.com/golang/go/wiki/Modules but I could not find out any
>> recommended way for this. Any help on how I can do this ? Do I need to
>> create `cmd` or `src` folders in our git repo ? OR do we need to do
>> something else ? Any links for blogposts, tutorials, documentation, videos
>> etc. will be helpful. 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/Bf8fDyfbTUw/unsubscribe.
> To unsubscribe from this group and all its topics, send an email to
> golang-nuts+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
>


-- 
Sankar P
http://psankar.blogspot.com

-- 
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.
For more options, visit https://groups.google.com/d/optout.

Reply via email to