github.com/xkeyideal/glide@v0.0.0-20171121052037-a806f0aaeda0/README_CN.md (about)

     1  # 修复了原来glide的两个问题
     2  
     3  ## windows环境下经常在export dependencies时无故报错
     4  
     5  主要是由于glide在最终拷贝文件时使用的命令是`move`,glide上已经有pull request了,我的版本把这个merge进来了
     6  
     7  [#889](https://github.com/Masterminds/glide/pull/889/commits/cc37dc711a3191c2b91b01b9593c685660eeb9af)
     8  
     9  原因就是windows下诡异的文件权限导致的。
    10  
    11  如果大家在glide报错的时候看到的是乱码,请先在cmd里面执行`chcp 65001`,然后再看到的就不再是乱码了。
    12  
    13  ## 解决使用mirror拉取子包时出现export至错误的目录路径问题
    14  
    15  问题描述:
    16  
    17  由于GFW的缘故,`golang.org/x/...`的包全部拉不下了,幸好github上做了镜像在`github.com/golang/...`
    18  
    19  我们只需要使用`glide mirror set`命令来设置镜像配置:
    20  `glide mirror set https://golang.org/x/sys https://github.com/golang/sys`
    21  这样我们就能愉快的玩耍了。
    22  
    23  但耍着耍着会发现,有些第三方依赖需要`go get golang.org/x/sys/unix`,比如`gin`web框架,这时候就操蛋了。
    24  
    25  有两种设置镜像的方式:
    26  
    27  1. `glide mirror set https://golang.org/x/sys/unix https://github.com/golang/sys`
    28  
    29  这个方式虽然能成功拉取,但是会发现export的目录完全错了,会复制到`golang.org/x/sys/unix`下面,将会看到
    30   `golang.org/x/sys/unix/unix`, `golang.org/x/sys/unix/plan9`, `golang.org/x/sys/unix/windows`,这样就完全错了。
    31  
    32  2. `glide mirror set https://golang.org/x/sys/unix https://github.com/golang/sys/unix`
    33  
    34  这种方式就会报`Cannot detect VCS`错误
    35  
    36  原有的`glide`有解决方案,就是在glide.yaml中将`golang.org/x/sys/unix`加入到`ignore`中,然后手动补刀,将该依赖加进去。
    37  
    38  针对这个问题,我的解决方案是修改`glide`的mirror命令的相关代码,添加`--base`参数,即用户可以指定fetch的包export到哪个目录。
    39  这样针对需要依赖子包时就不会出现上述问题了。操作方法如下:
    40  
    41  1. glide mirror set https://golang.org/x/sys/unix https://github.com/golang/sys --base golang.org/x/sys
    42  2. glide get golang.org/x/sys/unix
    43  
    44  这时候在`mirrors.yaml`文件中会看到
    45  
    46  ```yaml
    47  repos:
    48  - original: https://golang.org/x/crypto
    49    repo: https://github.com/golang/crypto
    50  - original: https://golang.org/x/crypto/acme/autocert
    51    repo: https://github.com/golang/crypto
    52    base: golang.org/x/crypto
    53  - original: https://golang.org/x/sys/unix
    54    repo: https://github.com/golang/sys
    55    base: golang.org/x/sys
    56  ```
    57  
    58  同样使用`glide mirror list`命令也能看到`base`参数的输出。