2011-08-03 12 views
26

リモートのgitリポジトリにタグを付ける方法はありませんローカルではをクローンしませんか?リモートgitリポジトリをクローン化せずにタグを付けよう

コード・リポジトリと構成リポジトリを関連付けるために、(CIビルド・ステップとして)ビルド-nを持つ構成リポジトリの現在のヘッドが何であれタグを付けたいとします(Nは現在提供されているビルド番号です)。ジェンキンス)。

configリポジトリがビルドの一部として使われていないので、たとえば、バージョン1234がビルドされたときのようにconfigリビジョンを簡単に取得し、ビルド-1234としてタグ付けするのは簡単ですこれを達成する最も簡単な方法です。

+1

このリポジトリにはどのようにアクセスしますか?たとえば、これが裸のリポジトリでSSHを使ってアクセスする場合、SSHでタグコマンドを実行すればいいと思います。 – Legolas

+0

@Legolasいいえ、裸のレポでコマンドを実行することはできません。 –

+0

裸のリポジトリで 'git tag alpha master'を実行しようとしましたが、うまくいきました。 – Legolas

答えて

8

これを解決するには:現時点ではgitでリモートタグ付けを行う方法はありませんが、何らかの方法でリモート(裸の)リポジトリにアクセスできる場合、リモートでタグ付けすることができますロケーション。

たとえば、SSH経由でgitリポジトリにアクセスする場合は、SSHを使用してログインし、(裸の)リポジトリに移動し、(裸の)リポジトリでタグコマンド(git tag build-1234 master)を実行します。

(私は@のルスラン・kabalinで言及したツールについて完全にわからない)

+0

サーバでgitoliteを使用している場合は、[gitolite custom command](http://gitolite.com/gitolite/cookbook.html#adding-your-own-commands)を試してみてください。 – xmedeko

4

それは現在、リモートで枝の先端にコミットにタグ付けすることは可能ですが、ありません(私の知る限り)とギフトの磁器や配管。リモートgit receive-packに直接話す必要があります。

は、ここで私たちがやりたい dulwichを使用して、いくつかのPythonの:

#!/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) 
+0

タグメッセージはどのように指定しますか? – user1225999

1

Gitlabは、そのためのAPIがあります。かなり自信を持っている他の人がこのためのエンドポイントを持っているかもしれません。 http://docs.gitlab.com/ce/api/tags.html