Изменение зависимости библиотеки в Go

У меня есть проект(пусть moduleA). Он использует библиотеку(пусть moduleB). Эта библиотека же использует другую(пусть moduleC). Требуется слегка изменить moduleC, не изменяя при этом moduleB. Как это можно сделать?

Метод с vendor работает, но кажется это не правильный способ решать подобное

Пример:

moduleA

package main

import moduleB
...

moduleB

package moduleB

import moduleC
...

moduleC

package moduleC

...
func funcToFix() {
    ...
    some fix
}

...

Ответы (1 шт):

Автор решения: Borislav

Решение: Сделайте fork репозитория moduleC, внесите в него требуемые изменения и подключите свой moduleC-forked в проект (удалите moduleC зависимость и используйте moduleC-forked).

Note: вариант с go mod vendor разумеется неверный, как вы и сами заметили, т.к. это локальное представление удаленных зависимостей, изменив что-то в директории vendor, вы не сможете отразить эти изменения в своем репозитории, т.к. vendor директория у вас не индексируется git-ом.

Important: так же, обратите внимание на то, что вы делаете fork конкретной версии, далее, вам нужно будет поддерживать обновление fork-а самостоятельно (новые версии кода из оригинального репозитория вы не будете получать).

→ Ссылка