uni farm

dep(golang)のGopkg.lock内のバージョン情報を変更する

depとは、golangのpackageをローカルで管理するためのツール

Gopkg.lockに書かれたpackageのリビジョンを変更する方法を試したので残しておく

環境

  • go: 1.9.3
  • dep: v0.4.1

概要

Gopkg.lockファイルに依存関係にある各packageとリビジョンが以下のように書かれている

Gopkg.lock
[[projects]]
  name = "github.com/xxxx/xxxx"
  packages = ["."]
  revision = "f587xxxxxxxxxxxxx"
  version = "v1.2.0"

この状態から、branch = “master”のバージョンに変える方法を書いていく

1. Gopkg.lockを編集

(直接編集するのはアンチパターンのようですが)Gopkg.lockを編集する 下のように、versionを削除し、branchとrevisionを追加する revisionにはcommit idを設定する

Gopkg.lock
[[projects]]
  branch = "master"
  name = "github.com/satori/go.uuid"
  packages = ["."]
  revision = "36e9xxxxxxxxxxxxxxxxxxxxx"

uuid commit log

dep ensure

で指定したバージョン、リビジョンのパッケージがvenderディレクトリ以下にダウンロードされる

2. depコマンドで指定する

depコマンドでバージョンを指定して、追加してやる

dep ensure -add github.com/xxxx/xxxx@master

実行すると、指定したバージョンのパッケージがvenderディレクトリ以下にダウンロードされ 各tomlファイルにバージョン情報が追記&編集される

Gopkg.toml
[[constraint]]
  branch = "master"
  name = "github.com/xxxx/xxxx"
Gopkg.lock
[[projects]]
  branch = "master"
  name = "github.com/xxxx/xxxx"
  packages = ["."]
  revision = "36e9xxxxxxxxxxxxxxxxxxxxx"

しかし、どちらも方法も

dep ensure --update

するとGopkg.lockの中身が戻ってしまうので注意

参考

2022, Built with Gatsby. This site uses Google Analytics.