jfrog rt glc在refs / remotes / *中搜索匹配的工件存储库文件。 git lfs将这些文件放在lfs \ objects

时间:2018-08-10 10:32:56

标签: artifactory jfrog-cli

当我使用jfrog rt glc时,它想删除工件中gitlfs存储库中的所有工件。 但是我在本地git仓库中仍然只有一个文件!

  

E:\ test-scripts> jfrog rt glc
  [信息]从Artifactory存储库lfs-local中搜索文件…
  [信息]从Git引用中收集要保留的文件,这些引用与模式refs / remotes / *匹配...
  [信息]找到了0个文件,需要清理3个文件
    4ee3d767d9126308d6bcf7b7290e85614a83fe51a9d84e765b9b7f4359f79fce
    118feab626439e11e6ef3d3d12b3d297c0cccffaf2e34e5b5be7e4276c28678c
    cbeffb41253da58f8924423f22a9bd53802633925664d68c46e6bfffd506a33d
  您确定要删除上述文件吗? (y / n):

     

E:\ test-scripts> git lfs ls文件
  4ee3d767d9 * xmlstarlet-1.6.1-win32.zip

jfrog rt glc找不到正确的目录!

git lfs将工件放置在lfs \ objects *目录中,而不是refs / remotes / *

命令jfrog rt glc --refs ='。git \ lfs \ objects *'给出相同的输出。

dir .git \ lfs \ objects * / s E:\ test-scripts.git \ lfs \ objects \ 4e \ e3 4ee3d767d9126308d6bcf7b7290e85614a83fe51a9d84e765b9b7f4359f79fce

'。git \ lfs \ objects *'中仍然有1个文件

有人对此有经验吗?

2 个答案:

答案 0 :(得分:1)

  

jfrog rt glc找不到正确的目录!

     

git lfs将工件放置在lfs \ objects *目录中,而不是refs / remotes / *

这不是命令的工作方式。它不会在.git/lfs/objects .git/refs/remotes中寻找对象。这是它的作用:

  1. 它在您的.lfsconfig中查找远程LFS服务器URL(这大概是CLI连接到的Artifactory服务器上的LFS存储库)。它将下载该存储库中包含的对象哈希列表。
  2. 它将搜索位于refs/remotes/*的所有Git引用的头部(因此,它将搜索所有远程跟踪分支)以查找LFS对象。这并不意味着它在该目录中搜索对象。 .git/refs/remotes目录包含Git分支的名称,并且该命令搜索这些分支。
  3. 它将在Artifactory服务器上找到的LFS对象列表与在Git远程跟踪分支中找到的对象列表进行比较。它准备从Artifactory服务器中删除在跟踪分支中也找不到的对象。

运行git lfs ls-files时,它将搜索当前的本地分支。如果您要从该命令中找回rt glc要删除的对象,那是因为您的本地分支不是当前分支,或者您没有将更改推到上游。

如果您希望rt glc保留在远程跟踪本地分支中找到的工件,则可以传递选项--refs=refs/remotes/*,refs/heads/*

答案 1 :(得分:0)

我发现了“不匹配”

jfrog rt glc命令“默认”与Unix目录符号(/)匹配的参考模式

因此,对于Windows,您必须使用--refs = refs \ remotes *变量来获取正确的信息(\)

jfrog.exe = jfrog版本1.18.0