首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >标记远程git存储库而不克隆它

标记远程git存储库而不克隆它
EN

Stack Overflow用户
提问于 2011-08-03 06:53:54
回答 3查看 14.8K关注 0票数 48

有没有一种方法可以在没有本地克隆的情况下对远程git存储库进行标记?

为了将代码存储库与配置存储库关联起来,我想(作为CI构建步骤)用build (其中N是jenkins提供的当前版本号)标记任何配置存储库的当前头。

配置存储库没有作为构建的一部分使用,我只是想要一种简单的方法来获取配置修订版,例如1234版本是构建的,标记为“buil-1234”似乎是实现这一目标的最简单方法。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-08-03 15:17:44

要回答这个问题:目前还没有办法使用git进行远程标记,但是如果您可以以某种方式访问远程(裸)存储库,则可能可以在远程位置上标记。

例如,如果通过SSH访问git存储库,可以使用SSH登录,转到(bare)存储库并在(bare)存储库中执行标记命令(git tag build-1234 master)。

(我对@ruslan-kabalin提到的工具不太确定)

票数 15
EN

Stack Overflow用户

发布于 2015-01-07 07:29:47

远程将当前提交标记在分支顶端是可能的,但(据我所知)不能用git瓷器或管道来标记。我们必须直接与远程git receive-pack对话。

下面是一些使用杜尔维奇来做我们想做的事情的python:

代码语言:javascript
复制
#!/usr/bin/env python

from dulwich.client import get_transport_and_path
import sys


def tag_remote_branch(repo_url, branch, tag):
    client, path = get_transport_and_path(repo_url)

    def determine_wants(refs):
        tag_ref_name = 'refs/tags/%s' % tag
        branch_ref_name = 'refs/heads/%s' % branch
        # try not to overwrite an existing tag
        if tag_ref_name in refs:
            assert refs[tag_ref_name] == refs[branch_ref_name]
        refs[tag_ref_name] = refs[branch_ref_name]
        return refs

    # We know the other end already has the object referred to by our tag, so
    # our pack should contain nothing.
    def generate_pack_contents(have, want):
        return []

    client.send_pack(path, determine_wants, generate_pack_contents)


if __name__ == '__main__':
    repo_url, branch, tag = sys.argv[1:]
    tag_remote_branch(repo_url, branch, tag)
票数 8
EN

Stack Overflow用户

发布于 2016-07-07 22:53:53

Gitlab为它提供了一个API。非常有信心的是,其他人可能会有这样的端点。http://docs.gitlab.com/ce/api/tags.html

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6922700

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档