Go: модули

Вопросы написания собственного программного кода (на любых языках)

Модератор: Olej

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Go: модули

Непрочитанное сообщение Olej » 18 фев 2024, 00:00

Olej писал(а):
17 фев 2024, 22:37
И тут жестокий облом:
Olej писал(а):
17 фев 2024, 22:46
Генерирую токен
Теперь обновляю сетевой GitHub указывая строку токена вместо пароля:

Код: Выделить всё

olej@R420:~/2024/Go/git/inout/inout$ git push
Username for 'https://github.com': olej-tsil-51
Password for 'https://olej-tsil-51@github.com':
Перечисление объектов: 8, готово.
Подсчет объектов: 100% (8/8), готово.
При сжатии изменений используется до 40 потоков
Сжатие объектов: 100% (7/7), готово.
Запись объектов: 100% (7/7), 1.34 КиБ | 1.34 МиБ/с, готово.
Всего 7 (изменений 0), повторно использовано 0 (изменений 0), повторно использовано пакетов 0
To https://github.com/olej-tsil-51/inout
   01bb8ec..6b5d09a  main -> main
Вот теперь комит зафиксирован в сети:

Код: Выделить всё

   
olej@R420:~/2024/Go/git/inout/inout$ git log
commit 6b5d09a217aac4ed6dd2a8c363cad377420ae092 (HEAD -> main, origin/main, origin/HEAD)
Author: oleg-tsiliuric <olej.tsil@gmail.com>
Date:   Sat Feb 17 19:43:31 2024 +0200

    Сб 17 фев 2024 19:43:07 EET

commit 01bb8ec1c18cdfe1d5134502e71b0ed435cd75c8
Author: Oleg Tsiliuric <o.tsiliuric@yandex.ru>
Date:   Sat Feb 17 19:19:34 2024 +0200

    Initial commit
И из такого модуля можно было бы импортировать в "import" Go кода пакеты и их методы ... если бы они там были :lol: , но нас пока это не занимает, пока о том как формируется пользовательски модуль.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Go: модули

Непрочитанное сообщение Olej » 18 фев 2024, 03:32

Olej писал(а):
17 фев 2024, 21:12
Теперь смотрю как это работает с модулями в сетевых GIT-репозиториях + последующий импорт из них...
Про сетевые репозитории, логины в них и т.д. - всё это было в теме: использование GIT ... но было последний раз давно, 3 года назад (так что и тему еле нашёл - надо её подымать в форуме :!: ) ... теперь нужно всё (начиная с логинов) вспоминать.
А интересует меня это всё на предмет: как другие сетевые репозитории (отличные от GitHub) использовать с модулями GoLang ... можно ли :?: И вплоть до своих собственных (или корпоративных) репозиториев GIT, развёрнутых в сети :!:

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Go: модули

Непрочитанное сообщение Olej » 18 фев 2024, 16:17

Olej писал(а):
18 фев 2024, 00:00
Теперь обновляю сетевой GitHub указывая строку токена вместо пароля:
Olej писал(а):
17 фев 2024, 21:12
Теперь смотрю как это работает с модулями в сетевых GIT-репозиториях + последующий импорт из них...
Но на GitHub свет клином не сошёлся ... есть ещё, как минимум GitLab и Bitbucket - из числа широко используемых.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Go: модули

Непрочитанное сообщение Olej » 18 фев 2024, 20:48

Olej писал(а):
17 фев 2024, 21:12
Теперь смотрю как это работает с модулями в сетевых GIT-репозиториях
GitHub :
Было:

Код: Выделить всё

olej@R420:~/2024/Go/github/inout$ ls -o
итого 40
-rw-rw-r-- 1 olej   215 фев 13 01:28 inputf.go
-rw-rw-r-- 1 olej   296 фев 13 01:28 inputr.go
-rw-rw-r-- 1 olej   387 фев 13 01:54 inputs2.go
-rw-rw-r-- 1 olej   265 фев 13 01:28 inputs.go
-rw-rw-r-- 1 olej 18092 фев 17 19:25 LICENSE
-rw-r--r-- 1 olej   103 фев 13 01:48 Makefile
Прописывю описание модуля:

Код: Выделить всё

olej@R420:~/2024/Go/github/inout$ git remote show
origin

olej@R420:~/2024/Go/github/inout$ git remote get-url origin
https://github.com/olej-tsil-51/inout

Код: Выделить всё

olej@R420:~/2024/Go/github/inout$ go mod init github.com/olej-tsil-51/inout
go: creating new go.mod: module github.com/olej-tsil-51/inout
go: to add module requirements and sums:
    go mod tidy
Стало:

Код: Выделить всё

olej@R420:~/2024/Go/github/inout$ ls -o
итого 44
-rw-rw-r-- 1 olej    48 фев 18 19:29 go.mod
-rw-rw-r-- 1 olej   215 фев 13 01:28 inputf.go
-rw-rw-r-- 1 olej   296 фев 13 01:28 inputr.go
-rw-rw-r-- 1 olej   387 фев 13 01:54 inputs2.go
-rw-rw-r-- 1 olej   265 фев 13 01:28 inputs.go
-rw-rw-r-- 1 olej 18092 фев 17 19:25 LICENSE
-rw-r--r-- 1 olej   103 фев 13 01:48 Makefile
Этот модуль ничего не экспортирует из сетевых репозиториев, поэтому ему go mod tidy бесполезно...

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Go: модули

Непрочитанное сообщение Olej » 18 фев 2024, 20:53

Olej писал(а):
18 фев 2024, 20:48
Этот модуль ничего не экспортирует из сетевых репозиториев, поэтому ему go mod tidy бесполезно...
Обновить локальный GIT репозиторий:

Код: Выделить всё

olej@R420:~/2024/Go/github/inout$ git status
Текущая ветка: main
Эта ветка соответствует «origin/main».

Неотслеживаемые файлы:
  (используйте «git add <файл>...», чтобы добавить в то, что будет включено в коммит)
    go.mod

индекс пуст, но есть неотслеживаемые файлы
(используйте «git add», чтобы проиндексировать их)

Код: Выделить всё

olej@R420:~/2024/Go/github/inout$ git add go.mod

Код: Выделить всё

olej@R420:~/2024/Go/github/inout$ git commit -m 'module: 18 фев 2024'
[main 37936fe] module: 18 фев 2024
 1 file changed, 3 insertions(+)
 create mode 100644 go.mod

Код: Выделить всё

olej@R420:~/2024/Go/github/inout$ git status
Текущая ветка: main
Ваша ветка опережает «origin/main» на 1 коммит.
  (используйте «git push», чтобы опубликовать ваши локальные коммиты)

нечего коммитить, нет изменений в рабочем каталоге
И отправка на GitHub:

Код: Выделить всё

olej@R420:~/2024/Go/github/inout$ git push
Username for 'https://github.com': olej-tsil-51
Password for 'https://olej-tsil-51@github.com': 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
Перечисление объектов: 4, готово.
Подсчет объектов: 100% (4/4), готово.
При сжатии изменений используется до 40 потоков
Сжатие объектов: 100% (2/2), готово.
Запись объектов: 100% (3/3), 329 байтов | 329.00 КиБ/с, готово.
Всего 3 (изменений 1), повторно использовано 0 (изменений 0), повторно использовано пакетов 0
remote: Resolving deltas: 100% (1/1), completed with 1 local object.
To https://github.com/olej-tsil-51/inout
   6b5d09a..37936fe  main -> main
Откуда брать токен (или токены), которые вводим вместо пароля (на запрос), описано здесь: GitHub модулей Go.
И репозиторий GitHub (его WEB интерфейс) принял желаемый вид:
Снимок экрана от 2024-02-18 19-43-11.png
Снимок экрана от 2024-02-18 19-43-11.png (146.83 КБ) 161 просмотр

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Go: модули

Непрочитанное сообщение Olej » 18 фев 2024, 21:03

Olej писал(а):
18 фев 2024, 16:17
Но на GitHub свет клином не сошёлся ... есть ещё, как минимум GitLab и Bitbucket
GitLab :

Код: Выделить всё

olej@R420:~/2024/Go/gitlab/inout$ pwd
/home/olej/2024/Go/gitlab/inout

olej@R420:~/2024/Go/gitlab/inout$ ls -o
итого 28
-rw-rw-r-- 1 olej  215 фев 13 01:28 inputf.go
-rw-rw-r-- 1 olej  296 фев 13 01:28 inputr.go
-rw-rw-r-- 1 olej  387 фев 13 01:54 inputs2.go
-rw-rw-r-- 1 olej  265 фев 13 01:28 inputs.go
-rw-r--r-- 1 olej  103 фев 13 01:48 Makefile
-rw-rw-r-- 1 olej 6159 фев 18 04:35 README.md

Код: Выделить всё

olej@R420:~/2024/Go/gitlab/inout$ git remote 
origin

olej@R420:~/2024/Go/gitlab/inout$ git remote get-url origin
https://gitlab.com/go1195807/inout.git

Код: Выделить всё

olej@R420:~/2024/Go/gitlab/inout$ go mod init gitlab.com/go1195807/inout.git
go: creating new go.mod: module gitlab.com/go1195807/inout.git
go: to add module requirements and sums:
	go mod tidy
Вот добавилось:

Код: Выделить всё

olej@R420:~/2024/Go/gitlab/inout$ ls -o
итого 32
-rw-rw-r-- 1 olej   49 фев 18 19:59 go.mod
-rw-rw-r-- 1 olej  215 фев 13 01:28 inputf.go
-rw-rw-r-- 1 olej  296 фев 13 01:28 inputr.go
-rw-rw-r-- 1 olej  387 фев 13 01:54 inputs2.go
-rw-rw-r-- 1 olej  265 фев 13 01:28 inputs.go
-rw-r--r-- 1 olej  103 фев 13 01:48 Makefile
-rw-rw-r-- 1 olej 6159 фев 18 04:35 README.md

Код: Выделить всё

olej@R420:~/2024/Go/gitlab/inout$ cat go.mod 
module gitlab.com/go1195807/inout.git

go 1.22.0

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Go: модули

Непрочитанное сообщение Olej » 18 фев 2024, 21:07

Olej писал(а):
18 фев 2024, 21:03
Вот добавилось:
Теперь включить это под контроль локалного GIT:

Код: Выделить всё

olej@R420:~/2024/Go/gitlab/inout$ git status
Текущая ветка: main
Эта ветка соответствует «origin/main».

Неотслеживаемые файлы:
  (используйте «git add <файл>...», чтобы добавить в то, что будет включено в коммит)
	go.mod

индекс пуст, но есть неотслеживаемые файлы
(используйте «git add», чтобы проиндексировать их)

Код: Выделить всё

olej@R420:~/2024/Go/gitlab/inout$ git add go.mod 

Код: Выделить всё

olej@R420:~/2024/Go/gitlab/inout$ git status
Текущая ветка: main
Эта ветка соответствует «origin/main».

Изменения, которые будут включены в коммит:
  (используйте «git restore --staged <файл>...», чтобы убрать из индекса)
	новый файл:    go.mod

Код: Выделить всё

olej@R420:~/2024/Go/gitlab/inout$ git commit -m 'module: 18 фев 2024'
[main 1398d64] module: 18 фев 2024
 1 file changed, 3 insertions(+)
 create mode 100644 go.mod
И отправить на GitLab:

Код: Выделить всё

olej@R420:~/2024/Go/gitlab/inout$ git push 
Username for 'https://gitlab.com': olej.tsil
Password for 'https://olej.tsil@gitlab.com': 
Перечисление объектов: 4, готово.
Подсчет объектов: 100% (4/4), готово.
При сжатии изменений используется до 40 потоков
Сжатие объектов: 100% (2/2), готово.
Запись объектов: 100% (3/3), 327 байтов | 327.00 КиБ/с, готово.
Всего 3 (изменений 1), повторно использовано 0 (изменений 0), повторно использовано пакетов 0
To https://gitlab.com/go1195807/inout.git
   a5329b9..1398d64  main -> main
GitLab у меня зарегистрирован по аккаунту Google :!:
О том как получить/создать пароль к GitLab написано здесь: удалённые GIT репозитории
И выглядит (WEB-интерфейс) репозиторий на GitLab теперь так:
Снимок экрана от 2024-02-18 20-16-17.png
Снимок экрана от 2024-02-18 20-16-17.png (129.41 КБ) 157 просмотров

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Go: модули

Непрочитанное сообщение Olej » 18 фев 2024, 21:45

Olej писал(а):
18 фев 2024, 16:17
Но на GitHub свет клином не сошёлся ... есть ещё, как минимум GitLab и Bitbucket - из числа широко используемых.
Bitbucket :

Код: Выделить всё

olej@R420:~/2024/Go/bitbucket/inout$ pwd
/home/olej/2024/Go/bitbucket/inout

Код: Выделить всё

olej@R420:~/2024/Go/bitbucket/inout$ ls -o
итого 24
-rw-rw-r-- 1 olej 215 фев 13 01:28 inputf.go
-rw-rw-r-- 1 olej 296 фев 13 01:28 inputr.go
-rw-rw-r-- 1 olej 387 фев 13 01:54 inputs2.go
-rw-rw-r-- 1 olej 265 фев 13 01:28 inputs.go
-rw-r--r-- 1 olej 103 фев 13 01:48 Makefile
-rw-rw-r-- 1 olej 565 фев 18 03:34 README.md
Добавляю описание модуля:

Код: Выделить всё

olej@R420:~/2024/Go/bitbucket/inout$ git remote
origin

Код: Выделить всё

olej@R420:~/2024/Go/bitbucket/inout$ git remote get-url origin
https://oleg-tsiliuric@bitbucket.org/oleg-tsiliuric/inout.git
В большинстве случаев, когда у нас 1 сетевой репозиторий, можер сразу так:

Код: Выделить всё

olej@R420:~/2024/Go/bitbucket/inout$ git remote get-url $(git remote)
https://oleg-tsiliuric@bitbucket.org/oleg-tsiliuric/inout.git
Добавили описание модуля:

Код: Выделить всё

olej@R420:~/2024/Go/bitbucket/inout$ go mod init bitbucket.org/oleg-tsiliuric/inout.git
go: creating new go.mod: module bitbucket.org/oleg-tsiliuric/inout.git
go: to add module requirements and sums:
	go mod tidy

Код: Выделить всё

olej@R420:~/2024/Go/bitbucket/inout$ ls -o
итого 28
-rw-rw-r-- 1 olej  57 фев 18 20:31 go.mod
-rw-rw-r-- 1 olej 215 фев 13 01:28 inputf.go
-rw-rw-r-- 1 olej 296 фев 13 01:28 inputr.go
-rw-rw-r-- 1 olej 387 фев 13 01:54 inputs2.go
-rw-rw-r-- 1 olej 265 фев 13 01:28 inputs.go
-rw-r--r-- 1 olej 103 фев 13 01:48 Makefile
-rw-rw-r-- 1 olej 565 фев 18 03:34 README.md

Код: Выделить всё

olej@R420:~/2024/Go/bitbucket/inout$ cat go.mod 
module bitbucket.org/oleg-tsiliuric/inout.git

go 1.22.0
Завели его под контроль локального GIT:

Код: Выделить всё

olej@R420:~/2024/Go/bitbucket/inout$ git status
Текущая ветка: main
Эта ветка соответствует «origin/main».

Неотслеживаемые файлы:
  (используйте «git add <файл>...», чтобы добавить в то, что будет включено в коммит)
	go.mod

индекс пуст, но есть неотслеживаемые файлы
(используйте «git add», чтобы проиндексировать их)

Код: Выделить всё

olej@R420:~/2024/Go/bitbucket/inout$ git add go.mod 

Код: Выделить всё

olej@R420:~/2024/Go/bitbucket/inout$ git status
Текущая ветка: main
Эта ветка соответствует «origin/main».

Изменения, которые будут включены в коммит:
  (используйте «git restore --staged <файл>...», чтобы убрать из индекса)
	новый файл:    go.mod
Зафиксировали:

Код: Выделить всё

olej@R420:~/2024/Go/bitbucket/inout$ git commit -m 'module: 18 фев 2024'
[main 55c512f] module: 18 фев 2024
 1 file changed, 3 insertions(+)
 create mode 100644 go.mod

Код: Выделить всё

olej@R420:~/2024/Go/bitbucket/inout$ git log
commit 55c512f64aa7fc3305009987453bbeb0e59c0450 (HEAD -> main)
Author: oleg-tsiliuric <olej.tsil@gmail.com>
Date:   Sun Feb 18 20:36:33 2024 +0200

    module: 18 фев 2024

commit 3bb08931a735f83b6892710ab4228d0d32242959 (origin/main, origin/HEAD)
Author: oleg-tsiliuric <olej.tsil@gmail.com>
Date:   Sun Feb 18 03:58:35 2024 +0200

    Вс 18 фев 2024 03:57:44

commit 91ec45a507eb77f6f5912ea96a677e26f6618647
Author: Олег Цилюрик <olej.tsil@gmail.com>
Date:   Sun Feb 18 01:33:01 2024 +0000

    Initial commit

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Go: модули

Непрочитанное сообщение Olej » 18 фев 2024, 22:18

Olej писал(а):
18 фев 2024, 21:45
Зафиксировали:
И отправляем его (синхронизация) на Bitbucket:

Код: Выделить всё

olej@R420:~/2024/Go/bitbucket/inout$ git push
Password for 'https://oleg-tsiliuric@bitbucket.org': 
Перечисление объектов: 4, готово.
Подсчет объектов: 100% (4/4), готово.
При сжатии изменений используется до 40 потоков
Сжатие объектов: 100% (3/3), готово.
Запись объектов: 100% (3/3), 334 байта | 334.00 КиБ/с, готово.
Всего 3 (изменений 1), повторно использовано 0 (изменений 0), повторно использовано пакетов 0
To https://bitbucket.org/oleg-tsiliuric/inout.git
   3bb0893..55c512f  main -> main
Обращаем внимание: в этом случае он не спрашивает имя пользователя (он его знает), только пароль.
У меня логин Bitbucket сделан через аккаунт Google.
О том как получить/создать пароль к Bitbucket написано здесь: удалённые GIT репозитории.
И WEB-интерфейс репозитория Bitbucket приобретает такой вот вид:
Вложения
Снимок экрана от 2024-02-18 21-18-22.png
Снимок экрана от 2024-02-18 21-18-22.png (121.94 КБ) 154 просмотра

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Go: модули

Непрочитанное сообщение Olej » 19 фев 2024, 02:39

Всё что до сих пор - это было то как создать и описать модуль.
Ну и как использовать готовые модули в качестве требуемого импорта.
Импорт затребованный произаодится сюла:

Код: Выделить всё

olej@R420:~$ ls `go env GOPATH`/pkg/mod/
cache             dmitri.shuralyov.com  github.com  golang.org        google.golang.org         go.opentelemetry.io  go.uber.org  k8s.io         rsc.io       sourcegraph.com
cloud.google.com  gerace.dev            go.etcd.io  golang.zx2c4.com  go.opencensus.io@v0.23.0  gopkg.in             honnef.co    launchpad.net  sigs.k8s.io
Вот например из репозиторев GitHub:

Код: Выделить всё

olej@R420:~$ ls `go env GOPATH`/pkg/mod/github.com
 afex              casbin                   dgrijalva     flynn           go-logr          ianlancetaylor   '!knetic'      mxk                   pact-foundation      russross        tidwall
 alecthomas        cenkalti                 dimchansky    form3tech-oss   google           imdario           konsorten     nats-io               pascaldekloe         ryanuber        tinylib
 antihax           census-instrumentation   dnstap        franela         googleapis       inconshreveable   kr            niemeyer              pborman              samuel          tmc
 apache            cespare                  docker        frankban        go-openapi       influxdata        libp2p        nxadm                 performancecopilot   sean-           urfave
 apparentlymart    chzyer                   docopt        fsnotify        gopherjs         infobloxopen      lightstep    '!n!y!times'           peterbourgon        '!shopify'       vikulin
'!arceliar'        clbanning                dustin        getlantern      gorilla          ip2location       lyft          oklog                 philhofer           'shurcoo!l'      vishvananda
 armon             client9                  eapache       ghodss          go-sql-driver    jmespath          mailru        olekukonko            pierrec              sirupsen       '!vivid!cortex'
 aryann            cncf                     edsrzf        go-board        go-stack         jonboulle         mattn        '!one!of!one'          pkg                  slonm           vorot93
 asaskevich        cockroachdb              eiannone      godbus          gregjones        jpillora          matttproud    onsi                  pmezard              smartystreets   xiang90
 astaxie           codahale                 ekomobile     gofrs           grpc-ecosystem   json-iterator    '!microsoft'   op                    posener              soheilhy        yggdrasil-network
 aws               coredns                  elazarl       go-gl          'g!spera'         jstemmer          miekg         opentracing           prometheus           sony            yuin
'!azure'           coreos                   emicklei      gogo            hajimehoshi      jtolds            mitchellh     opentracing-contrib  '!puerkito!bio'       spaolacci       zhoreeq
 beorn7            cpuguy83                 envoyproxy    go-kit          hashicorp        julienschmidt     moby          openzipkin            quic-go              spf13
 bgentry           creack                   evanphx       golang          hjson            kardianos         modern-go     openzipkin-contrib    rcrowley             stoewer
 bits-and-blooms  '!data!dog'               farsightsec   go-logfmt       hpcloud          kataras           munnerz       oschwald              rivo                 streadway
'!burnt!sushi'     davecgh                  fatih         gologme         hudl             kisielk           mwitkow       oxtoacart             rogpeppe             stretchr
И всё это, со временем, требует не так уж и мало:

Код: Выделить всё

olej@R420:~$ du -hs `go env GOPATH`/pkg/mod
2,1G	/home/olej/go/pkg/mod

Ответить

Вернуться в «Программирование»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 6 гостей