获取当前分支名称或标记名称

时间:2015-03-12 04:58:22

标签: git puppet

我正在编写一个Puppet模块,用于管理当前在本地Git存储库上检出的分支或标记。我基本上希望让用户能够指定他们要检出的存储库版本。这可以是master(分支)或v3.6.2(标记)。

这是我到目前为止所得到的:

exec { 'gitolite_select_version':
    command => "git checkout ${actual_version}",
    cwd     => '/usr/src/gitolite',
    path    => '/bin:/usr/bin',
    unless  => "test \"$(git describe --contains --all HEAD)\" == ${actual_version}""
}

这在像master之类的分支上工作正常,但是在像标记一样的分离HEAD上会产生错误的输出。主人的例子

$ git describe --contains --all HEAD
master

标签示例:

$ git describe --contains --all HEAD
tags/v3.6.2^0

是否有一个Git命令可以以简单统一的格式获取分支名称或当前标记?

1 个答案:

答案 0 :(得分:2)

您是否考虑过使用puppetlabs-vcsrepo?这是模块管理的东西:

vcsrepo { "/usr/src/gitolite":
  ensure   => present,
  provider => git,
  source   => 'git://example.com/repo.git',
  revision => $actual_version,
}