Как работать с пакетом вендора разработки под управлением dep?
Как я могу использовать копию разработки / клон пакета при использовании dep
а каталог поставщиков? Каталог поставщиков включен в основной репозиторий.
Например, я раздвоил пакет и заменил его своим собственным на github. Я хочу иметь возможность редактировать код и не должен git push
+ dep ensure
за каждое изменение пакета.
Если я клонирую пакет в каталоге vendor, он не сможет зафиксировать этот каталог в основном репо, потому что он рассматривается как отдельный репозиторий.
Я попробовал подвох .gitignore
.git
каталог снаружи пакета. Это работает хорошо, пока dep ensure
выполняется, где .git
каталог обнулен.
2 ответа
Согласно dep
Документы, нет встроенного способа сделать это в том виде, как оно есть.
Они также рекомендуют не изменять пакеты в vendor
Директория напрямую, по причинам, которые я обнаружил: она запускается при запуске dep ensure
,
Их основное предложение - вручную удалить пакет из vendor/
каталог, измените его в обычном $GOPATH
и работает dep ensure -update <pkg>
когда закончил разработку этого.
Это достаточно лучше, чем нажатие на каждое изменение, но все же требует ручного push
/dep ensure
при завершении работы по разработке.
Альтернатива "игнорированию" .git
"это сохранить .git
папка в другом месте! (далеко за пределами вашего проекта Go)
В любое время, когда вам нужно выполнить команду git в специализированном подпроекте, вам нужно будет использовать псевдоним для команды git, который будет:
alias gg='git --git-dir=/path/to/elsewhere/.git --work-tree=/path/to/vendored/subproject'
# Windows
doskey gg=git --git-dir=C:\path\to\elsewhere\.git --work-tree=C:\path\to\vendored\subproject $*
Таким образом, вы все еще можете извлечь выгоду из операций с управлением версиями в рамках вашего подпроекта.