使用download-git-repo下载指定库时,遇到git 128错误,如何定位问题并换向解决呢?

前言

我正在搭一个脚手架,希望通过命令行终端自动下载git仓库的代码到本地,首先想到的库便是download-git-repo,部分代码如下所示:

const download = require('download-git-repo');
download('direct:https://gitee.com/xx/xxx.git', 'test', {clone: true}, (err) => {
	if (err) {
		console.log('executeDownload error ==', err);
        process.exit();
	} else {
		console.log('success!')
	}
});
  • 参数direct:https://gitee.com/xx/xxx.gitrepo仓库地址
  • 参数test:拷贝的目的文件夹,若当前路径下没有,会自动创建该文件夹
  • 参数{clone: true}表示使用git clone进行下载,若为false,则直接下载zip等包,部分download-git-repo源码如下所示:
var clone = opts.clone || false
if (clone) {
    var cloneOptions = {
      checkout: repo.checkout,
      shallow: repo.checkout === 'master',
      ...opts
    }
    gitclone(url, dest, cloneOptions, function (err) {
      if (err === undefined) {
        rm(dest + '/.git')
        fn()
      } else {
        fn(err)
      }
    })
  } else {
    var downloadOptions = {
      extract: true,
      strip: 1,
      mode: '666',
      ...opts,
      headers: {
        accept: 'application/zip',
        ...(opts.headers || {})
      }
    }
    downloadUrl(url, dest, downloadOptions)
}

却不断地遇到如下图的错误:

在这里插入图片描述

通过查看download-git-repo源码,以及该源码库引用的另一git-clone源码,发现命令行下载git仓库的终极武器是child_process,既然如此,我决定直接使用它达到我的目的

child_process

该库提供了spawn方法,可直接运行各种命令,详情可见

比如,我现在需要下载git仓库的feature/V1.x分支,代码如下所示:

var child_process = require('child_process')

const { spawn } = child_process

var g = spawn('git', ['clone', '-b', 'feature/V1.x', 'http://xxx/scm/gis-acc/xxxx.git', 'test'])
g.stdout.on('data', function (s) {
	console.log('g stdout: ' + s)
})
g.stderr.on('data', function (data) {
	console.log('g stderr: ' + data);
});

第一个参数表示执行的是git命令,第二个参数为数组,类似于在git bash终端输入如下命令:

$ git clone -b feature/V1.x http://xxx/scm/gis-acc/xxxx.git

test表示将该仓库代码下载到该文件夹下(没有该文件夹会直接创建一个,如上面所说)

Duang, Duang~~,再次执行node bin/sf.js init,发现在当前项目下面已多出了test文件夹,如下图所示:

在这里插入图片描述

execSync

使用child_processexecSync方法,可达到同样的目的,代码如下所示:

child_process.execSync(`git clone -b feature/V1.x http://xxx/scm/gis-acc/xxxx.git test`);

结语

暂时不清楚git 128错误的根本原因,翻墙去google查找,说是权限问题,试过各种办法,只能弃用'download-git-repo',改用nodejs内置的方法去实现,欢迎感兴趣的小伙伴在下面留言

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
download-git-repo是一个用于从GitHub、GitLab等代码托管平台上下载代码仓库的工具。如果在使用download-git-repo遇到报错,可能有以下几种原因和解决方法。 1. 网络连接问题:下载代码仓库需要通过网络连接到代码托管平台,如果网络连接异常或不稳定,可能会导致下载失败。这时可以尝试检查网络连接是否正常,并重试下载操作。 2. 权限问题:有些代码仓库可能设置了访问权限,如果没有相应的权限,下载操作就会失败。在使用download-git-repo时,需要确保你有访问该代码仓库的权限,否则无法下载。可以尝试检查你的访问权限,并确认是否有权下载该代码仓库。 3. 参数配置错误:在使用download-git-repo时,需要提供正确的参数配置。如果参数配置错误,也会导致下载失败。可以检查一下传递给download-git-repo的参数是否正确,例如代码仓库的地址、分支、保存路径等。 4. download-git-repo工具自身问题:有时候,download-git-repo工具本身可能存在一些问题,例如版本不兼容或者有bug。可以尝试更新或升级download-git-repo工具,或者尝试使用其他下载工具来下载代码仓库。 总之,download-git-repo报错可能原因多种多样,需要根据具体错误提示和情况进行排查和解决。可以通过检查网络连接、权限、参数配置等方面来确定问题所在,并尝试相应的解决方法来解决报错。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值