You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Datalad从GitLab获取子数据集遇凭证重定向错误求助

问题描述

在GitLab实例上搭建了包含子数据集input的Datalad仓库,执行以下命令克隆主仓库并进入目录:

datalad clone https://gitlab.gwdg.de/thomas.wutzler/SesamFitSPP.jl.git SesamFitSPP
cd SesamFitSPP

尝试运行datalad get -n input获取子数据集时,出现以下错误(已移除部分URL):

install(error): /User/homes/twutz/tmp/SesamFitSPP/input (dataset) [Failed to clone from any candidate source URL. Encountered errors per each url were:

  • gitlab.gwdg.de/thomas.wutzler/SesamFitSPP.jl.git/input
    CommandError: 'git -c diff.ignoreSubmodules=none clone --progress ...SesamFitSPP.jl.git/input /User/homes/twutz/tmp/SesamFitSPP/input' failed with exitcode 128 [err: 'Cloning into '/User/homes/twutz/tmp/SesamFitSPP/input'...
    fatal: unable to update url base from redirection:
    asked for: ...SesamFitSPP.jl.git/input/info/refs?service=git-upload-pack
    redirect: https://gitlab.gwdg.de/users/sign_in']
  • .../SesamFitSPP.jl.git/input/.git
    CommandError: 'git -c diff.ignoreSubmodules=none clone --progress .../SesamFitSPP.jl.git/input/.git /User/homes/twutz/tmp/SesamFitSPP/input' failed with exitcode 128 [err: 'Cloning into '/User/homes/twutz/tmp/SesamFitSPP/input'...
    fatal: unable to update url base from redirection:
    asked for: ...SesamFitSPP.jl.git/input/.git/info/refs?service=git-upload-pack
    redirect: .../users/sign_in']]

已按照Datalad凭证帮助文档配置Git凭证,但错误仍未解决。从本地文件系统克隆仓库时,datalad get -n input可正常运行,说明子数据集配置无误。需解决如何配置才能获取该子数据集及已配置的annex-siblings信息。

解决方案

1. 检查子数据集URL配置

查看主仓库的子模块配置文件,确认子数据集的URL格式是否正确:

cat .gitmodules

若[submodule "input"]下的url是相对路径(如./input),Datalad会基于主仓库HTTP URL拼接,但GitLab的HTTP访问可能不支持这种嵌套路径克隆方式,需要改为子数据集的独立仓库URL。

2. 改用SSH协议访问

HTTP协议的凭证传递可能存在问题,改用SSH可避免重定向到登录页:

  • 确保本地SSH公钥已添加到GitLab账户
  • 重新克隆主仓库:
    datalad clone git@gitlab.gwdg.de:thomas.wutzler/SesamFitSPP.jl.git SesamFitSPP
    cd SesamFitSPP
    
  • 再次尝试获取子数据集:
    datalad get -n input
    

3. 手动修改子数据集URL

若不想重新克隆主仓库,可直接修改子模块配置:

  • 编辑.gitmodules文件,将input子模块的url改为SSH格式:
    [submodule "input"]
      path = input
      url = git@gitlab.gwdg.de:thomas.wutzler/[子数据集实际仓库名].git
    
  • 同步子模块配置:
    git submodule sync input
    
  • 重新执行获取命令:
    datalad get -n input
    

4. 验证Git凭证有效性

检查Git凭证存储是否正确应用:

  • 查看当前凭证助手配置:
    git config --global credential.helper
    
  • 若使用个人访问令牌,重新录入凭证:
    git credential approve
    
    按提示输入GitLab服务器地址、用户名和个人访问令牌。

5. 确保SSH密钥正常生效

检查SSH代理和密钥状态:

  • 查看已加载的SSH密钥:
    ssh-add -l
    
  • 若未加载密钥,执行以下命令添加(替换为你的密钥路径):
    ssh-add ~/.ssh/id_rsa
    

内容的提问来源于stack exchange,提问作者bgctw

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 13:50:33