繁体   English   中英

Git 获取标签但缺少最新版本

[英]Git fetch tags but missing latest version

最近我升级了我的 gitlab( 8.17.3 -> 12.10.9 )。 升级git后一切正常。

但有时,某些项目无法获取完整标签(缺少最新版本)。 使用 jenkins 时,错误消息是“找不到要构建的任何修订。验证此作业的存储库和分支配置”。

git 客户端版本为:1.7.1.2、1.8.3.1、2.8.4 和 2.22.0

如何重现:

git init test ;
cd test ;
git fetch --tags --progress http://url_to_git/abc.git "+refs/heads/*:refs/remotes/origin/*"  --prune

...
From From http://url_to_git/abc.gi
 * [new branch]      Dev_Long_Br -> origin/Dev_Long_Br
 * [new branch]      ft_dev_0805_ppt -> origin/ft_dev_0805_ppt
 * [new branch]      ft_dev_0911 -> origin/ft_dev_0911
 * [new branch]      master     -> origin/master
 * [new tag]         dev_fiba_dmm_20190302_1028 -> dev_fiba_dmm_20190302_1028
 * [new tag]         rls_fiba_dmm_20191126 -> rls_fiba_dmm_20191126

结果似乎缺少最新的分支“rls_0929”。 但是等一会儿再试取标签,我得到了最新的分支

git fetch --tags --progress http://url_to_git/abc.git "+refs/heads/*:refs/remotes/origin/*"  --
...
 From http://url_to_git/abc.git
   7501d7d..1a9a602  ft_dev_0911 -> origin/ft_dev_0911
 * [new branch]      rls_0929   -> origin/rls_0929

如果我删除.git目录,重新fetch tags ,一切似乎都是正确的。

工作步骤如下:

rm -rf .git
retry fetch
git init; git fetch --tags --progress http://url_to_git/abc.git "+refs/heads/*:refs/remotes/origin/*"  --prune
...

 From From http://url_to_git/abc.gi
 * [new branch]      Dev_Long_Br -> origin/Dev_Long_Br
 * [new branch]      ft_dev_0805_ppt -> origin/ft_dev_0805_ppt
 * [new branch]      ft_dev_0911 -> origin/ft_dev_0911
 * [new branch]      master     -> origin/master
 * [new branch]      rls_0929   -> origin/rls_0929
 * [new tag]         dev_fiba_dmm_20190302_1028 -> dev_fiba_dmm_20190302_1028
 * [new tag]         rls_fiba_dmm_20191126 -> rls_fiba_dmm_20191126

我用nfs作为存储服务,是不是存储缓存问题 nfs server info:

 # rpm -qa|grep nfs
libnfsidmap-0.25-15.el7.x86_64
nfs-utils-1.3.0-0.33.el7_3.x86_64
[root@gitpprdtools-prod34 ~]# service nfs status
Redirecting to /bin/systemctl status  nfs.service
● nfs-server.service - NFS server and services
   Loaded: loaded (/usr/lib/systemd/system/nfs-server.service; enabled; vendor preset: disabled)
   Active: active (exited) since Sat 2020-07-18 00:14:18 CST; 2 months 12 days ago
 Main PID: 16701 (code=exited, status=0/SUCCESS)
   CGroup: /system.slice/nfs-server.service

NFS 客户端/gitlab 应用程序服务器信息:

mount|grep git-data
NFS_IP:/var/opt/gitlab/git-data on /var/opt/gitlab/git-data type nfs (rw,relatime,vers=3,rsize=1048576,wsize=1048576,namlen=255,soft,proto=tcp,timeo=600,retrans=2,sec=
sys,mountaddr=NFS_IP,mountvers=3,mountport=20048,mountproto=udp,local_lock=none,addr=NFS_IP)

该分支实际存在于远程 git 服务器上。 我怀疑这是一个 nfs 问题,我的 git 服务器是 4 个 git 应用程序服务器,具有一个 vip 并安装相同的 nfs 存储。 发生错误时,客户端真正请求的git服务器具有没有最新分支的nfs缓存。 所以我将我的设置修改为 git doc,但错误继续https://docs.gitlab.com/12.10/ee/administration/high_availability/nfs.html

jenkins specify branch to build时出现missing lastest branch错误,错误如下:

Started from command line by jenkinsadmin
Building remotely on docker10-2.64 (C++ docker10 docker) in workspace /data/jenkins/workspace/workspace/Flow_dockerMakePackage_5387053_774
Cloning the remote Git repository
Cloning repository http://git.a.com/b/c.git
 > git init /data/jenkins/workspace/workspace/Flow_dockerMakePackage_5387053_774 # timeout=10
Fetching upstream changes from http://git.a.com/b/c.git
 > git --version # timeout=10
using GIT_ASKPASS to set credentials root_gitlab
 > git fetch --tags --progress http://git.a.com/b/c.git +refs/heads/*:refs/remotes/origin/* # timeout=30
 > git config remote.origin.url http://git.a.com/b/c.git # timeout=10
 > git config --add remote.origin.fetch +refs/heads/*:refs/remotes/origin/* # timeout=10
 > git config remote.origin.url http://git.a.com/b/c.git # timeout=10
Cleaning workspace
 > git rev-parse --verify HEAD # timeout=10
No valid HEAD. Skipping the resetting
 > git clean -fdx # timeout=10
Pruning obsolete local branches
Fetching upstream changes from http://git.a.com/b/c.git
using GIT_ASKPASS to set credentials root_gitlab
 > git fetch --tags --progress http://git.a.com/b/c.git +refs/heads/*:refs/remotes/origin/* --prune # timeout=30
 > git rev-parse b215fc6cf5a4f431408773e3e05130a72f263546^{commit} # timeout=10
 > git rev-parse origin/b215fc6cf5a4f431408773e3e05130a72f263546^{commit} # timeout=10
 > git rev-parse b215fc6cf5a4f431408773e3e05130a72f263546^{commit} # timeout=10
ERROR: Couldn't find any revision to build. Verify the repository and branch configuration for this job.

谁能帮忙?

您用rls_0929分支描述了 git 的正常行为,该分支最初在遥控器上不存在,并且是在您的 2 git fetch调用之间创建的。

是什么因素让你产生了不同的想法?

要查看您期望的分支是否确实存在于您的遥控器上,请检查其内容:

  • 通过 gitlab 的 GUI(你标记gitlab因为你的遥控器是一个 gitlab 实例,对吗?)
  • 来自 cli: git ls-remote <url> refs/heads/rls_0929

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM