理解不同命名空间中的git标签



我想在不同的命名空间中创建标记。仔细阅读:https://git-scm.com/docs/gitnamespaces但我不确定,我理解正确。那么,我们说我创建了一个标签,并使用:git -c core.quotepath=false push -v origin refs/tags/20221208_144648

现在看到标签使用:git ls-remote --tags <repo_url.git> refs/tags/*

现在,假设我想在命名空间中创建一个标签:
export GIT_NAMESPACE=foo
git -c core.quotepath=false push -v origin refs/tags/20221208_144648_TEST 

git -c core.quotepath=false push -v origin refs/namespace/foo/tags/20221208_144648_TEST

我只看到我第一次创建的标签,当我运行:

git ls-remote --tags <repo_url.git> refs/tags/*

甚至尝试:

git ls-remote --tags <repo_url.git> refs/namespace/foo/tags/*

我显然在这里遗漏了一些东西。如有任何解释,将不胜感激。

根据下面的回答更新我的问题:

下面是我所尝试的:

  1. 创建一个没有标签的新仓库

    $git ls-remote origin refs/tags/* $

  2. 创建标签:

    git tag 20221208_144648_TEST -m messages

  3. 设置命名空间:

    export GIT_NAMESPACE=foo

  4. push ref

    git -c core.quotepath=false push -v origin refs/tags/20221208_144648_TEST

  5. 列出参考文献

    $git ls-remote origin refs/tags/*
    362cb81e90fca03c73e0d3e5ea44883c6298a598    refs/tags/20221208_144648_TEST
    538a4686d9dd17c1a7d770e718d21b95507393c1    refs/tags/20221208_144648_TEST^{}
    
  6. 取消命名空间

    unset GIT_NAMESPACE

  7. 列出远程参考

    git ls-remote origin refs/tags/*
    362cb81e90fca03c73e0d3e5ea44883c6298a598    refs/tags/20221208_144648_TEST
    538a4686d9dd17c1a7d770e718d21b95507393c1    refs/tags/20221208_144648_TEST^{}
    

注意:我还没有看到命名空间。

您在refs/namespaces(不是refs/namespace)中错过了s,参考路径应该是refs/namespaces/foo/refs/tags/xxx而不是refs/namesapces/foo/tags/xxx(tags/之前的refs/被错过了),但两者都不是重点。

您可以使用任何一种方式(GIT_NAMESPACErefs/namespaces/)来指定命名空间,但不能同时使用!

如果您导出GIT_NAMESPACE=foo,然后将对象推入refs/namespaces/foo/refs/tags/,那么它实际上将被推入refs/namespaces/foo/refs/namespaces/foo/refs/tags,相当于命名空间foo/foo

实际上,我尝试了你的步骤,并得到了预期的结果。

步骤:

git tag 20221208_144648_TEST -m messages
export GIT_NAMESPACE=foo
git -c core.quotepath=false push -v origin refs/tags/20221208_144648_TEST

结果:

$ git ls-remote origin refs/tags/*
a750776e2ce551b597a87804424e95b90f26b391        refs/tags/20221208_144648_TEST
852d0196ca768d181bb027d0f37a0913b00bc7cf        refs/tags/20221208_144648_TEST^{}

Afterunset GIT_NAMESPACE:

$ git ls-remote origin refs/tags/*
a750776e2ce551b597a87804424e95b90f26b391        refs/namespaces/foo/refs/tags/20221208_144648_TEST
852d0196ca768d181bb027d0f37a0913b00bc7cf        refs/namespaces/foo/refs/tags/20221208_144648_TEST^{}

您使用的是--tags,所以它只在refs/tags/*中搜索与模式匹配的refs。然而,模式是refs/namespace/foo/tags/*。没有一个标签符合这个模式。用git ls-remote <repo_url.git> refs/namespace/foo/tags/*代替。

相关内容

  • 没有找到相关文章

最新更新