go get 多凭证切换(切换.netrc),实现多个私有包切换拉取

        在实际开发 go 的场景中,我们需要拉取自己托管在代码平台的公共包(一般是开发场景中抽出来可以复用的包),但是有时候会有从不同的私有仓库拉取包的需求(自己写的开源项目和所在公司的包都在同一个平台),这时候 go get拉取会默认将.netrc 文件里面的内容作为凭证去拉取,且同.netrc 下面不能出现同一个machine,因此曲线救国的办法就是创建一个脚本去切换.netrc 的内容。具体实现的方法如下:

        1. 在~目录下新建.netrc_configs文件夹,用来存多个需要切换的配置。

mkdir ~/.netrc_configs

        2. 在文件夹内存放多个需要切换的配置。例如有 a,b 两个配置,我们只需要在文件夹内新建a,b 两个文件,示例内容如下:

        a 文件内容

# a 
machine xxx.github.com 
login xxxx_a_user 
password xxxxx_a_pwd

        b 文件内容

# b 
machine xxx.github.com 
login xxxx_b_user 
password xxxxx_b_pwd

         3.在~目录下新建一个脚本用来切换配置文件 swrc.sh:

#!/bin/bash

# 定义多套配置
NETRC_PATH="$HOME/.netrc"
BACKUP_PATH="$HOME/.netrc.bak"
CONFIG_DIR="$HOME/.netrc_configs"

# 检查参数
if [ $# -eq 0 ]; then
    echo "Usage: $0 <config_name>"
    echo "Available configs:"
    ls $CONFIG_DIR
    exit 1
fi

CONFIG_NAME=$1
TARGET_CONFIG="$CONFIG_DIR/$CONFIG_NAME"

# 检查目标配置是否存在
if [ ! -f "$TARGET_CONFIG" ]; then
    echo "Error: Config $CONFIG_NAME not found in $CONFIG_DIR"
    exit 1
fi

# 备份当前 .netrc 文件
if [ -f "$NETRC_PATH" ]; then
    mv $NETRC_PATH $BACKUP_PATH
fi

# 替换为目标配置
cp $TARGET_CONFIG $NETRC_PATH
chmod 600 $NETRC_PATH

echo "Switched to $CONFIG_NAME configuration."

        4.这时候只需要执行sh ./swrc.sh a,即可切换配置文件,如果想要更加快捷,可以把命令加入到zshrc 或者 bashrc,但是在这之前需要赋予 swrc.sh 可执行权限,之后就可以配置别名了。

alias swrc="~/swrc.sh"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值