Glide
https://github.com/Masterminds/glide
golang의 디펜던시 관리 툴이다. 하지만 여전히 gopath를 설정하고 gopath 안에서만 제대로 동작한다. 즉 vendoring 만 도와 줄뿐 여전히 gopath 를 설정해야 하는 것은 변함 없다.
https://glide.readthedocs.io/en/latest/glide.yaml/
vendor내의 type과 바깥에 있는 Type이 실질적으로 같은 경우에도 타입이 다르다고 인식하는 문제 때문에 쓰기가 어렵다.
https://github.com/golang/go/issues/18827
이게 심각한게 다음과 같은 경우에서도 문제가 생긴다.
- main.go
- driver
- driver.go
- vendor
- github.com/aaa/aaa/
- types.go
- github.com/aaa/aaa/
main.go와 driver.go 에서 types.go의 type을 사용
main.go에서 import “driver” 한후 types.go에 있는 type을 인자로 하여 driver를 쓰면 상기 에러가 나면서 컴파일이 안된다. (interface는 관계 없다.)
그래서 패키지를 나눌수가 없게 된다. 이 문제가 해결되지 않으면 vendor 를 쓸때 반드시 양쪽에서 vendor 안에 있는 type을 쓰지 않아야 하는데, 이게 쉽지 않다. 그래서 vendor 를 활용하는 glide 도 쓰기 쉽지 않다.
차라리 go get 만 쓰고 안깨지기를 비는 것이 낫다.