golang + Godeps: добавление нового файла переопределения зависимостей Godeps.json

Я использую Godeps для сохранения своих зависимостей в моем проекте go.

На данный момент мой файл Godeps.json выглядит так:

{
    "ImportPath": "github.com/some/repo",
    "GoVersion": "go1.6",
    "GodepVersion": "v74",
    "Packages": [
        "gopkg.in/mgo.v2",
        "github.com/sendgrid/sendgrid-go",
        "gopkg.in/olivere/elastic.v3"
    ],
    "Deps": [
        {
            "ImportPath": "github.com/sendgrid/sendgrid-go",
            "Comment": "v2.0.0-22-g6ea8b2b",
            "Rev": "6ea8b2b2d54b2e54efcf8668867289a1838d96fd"
        },
        {
            "ImportPath": "github.com/sendgrid/smtpapi-go",
            "Comment": "v0.4.0-7-gb88787c",
            "Rev": "b88787cc8801ef961d7daef0bcb79ae3f50bfd52"
        },
        {
            "ImportPath": "gopkg.in/check.v1",
            "Rev": "4f90aeace3a26ad7021961c297b22c42160c7b25"
        },
        {
            "ImportPath": "gopkg.in/mgo.v2",
            "Comment": "r2016.02.04-1-gb6e2fa3",
            "Rev": "b6e2fa371e64216a45e61072a96d4e3859f169da"
        },
        {
            "ImportPath": "gopkg.in/mgo.v2/bson",
            "Comment": "r2016.02.04-1-gb6e2fa3",
            "Rev": "b6e2fa371e64216a45e61072a96d4e3859f169da"
        },
        {
            "ImportPath": "gopkg.in/mgo.v2/internal/sasl",
            "Comment": "r2016.02.04-1-gb6e2fa3",
            "Rev": "b6e2fa371e64216a45e61072a96d4e3859f169da"
        },
        {
            "ImportPath": "gopkg.in/mgo.v2/internal/scram",
            "Comment": "r2016.02.04-1-gb6e2fa3",
            "Rev": "b6e2fa371e64216a45e61072a96d4e3859f169da"
        },
        {
            "ImportPath": "gopkg.in/olivere/elastic.v3",
            "Comment": "v3.0.40",
            "Rev": "7a92d18eaf7a9f95d603e70970fb5adcd4dc62f1"
        },
        {
            "ImportPath": "gopkg.in/olivere/elastic.v3/backoff",
            "Comment": "v3.0.40",
            "Rev": "7a92d18eaf7a9f95d603e70970fb5adcd4dc62f1"
        },
        {
            "ImportPath": "gopkg.in/olivere/elastic.v3/uritemplates",
            "Comment": "v3.0.40",
            "Rev": "7a92d18eaf7a9f95d603e70970fb5adcd4dc62f1"
        }
    ]
}

Если я хочу установить новую зависимость, используя go get:

go get "github.com/robfig/cron"

Это переопределит мой файл Godeps.json, и в нем будет храниться только последний установленный мной пакет, и, кроме того, будут удалены пакеты из моей папки vendor.

Как я могу добавить эту зависимость вместо ее замены?


person Shikloshi    schedule 21.06.2016    source источник
comment
Кроме того, использование go get не обновит ваши отпечатки (до того, как вы явно сделали это через godep update или подобное, просто выбросьте Godep и используйте govendor - избавил меня от головной боли ;-)   -  person Havelock    schedule 21.06.2016
comment
@Havelock Очень хороший совет.   -  person Shikloshi    schedule 21.06.2016


Ответы (1)


Если вы не запустите godeps save, новая зависимость не будет сохранена в вашем Godeps.json. Трудно представить, зачем вам нужны две версии одной и той же библиотеки, но если вы действительно хотите это сделать, то во время развертывания вашего проекта сначала выполните godep restore, а затем установите свою зависимость как go get "github.com/robfig/cron". Это предотвратит замену

person Raj Kumar    schedule 22.06.2016