有没有办法使用木偶(或模仿)使用git稀疏结账?

时间:2017-05-18 10:06:58

标签: git puppet

我有一个项目使用puppet中的vcsrepo使用puppet复制到服务器。所以整个git项目都被复制了下来。我可以将它限制为最新的深度= 1。

vcsrepo {$docroot:
  ensure => latest,
  provider => git,
  source => 'git@www.github.com:my-repo.git',
  revision => 'mytag'
  depth => 1
  etc.
}

理想情况下,我只想将 my-repo git repo中的 / mysubdirectory 复制到服务器上的$ docroot目录。

此示例显示了我认为可行的方法: How do I clone a subdirectory only of a Git repository? 但它似乎没有足够的傀儡选择。

还是有另一种方法:

基本上将git项目复制到服务器上的其他位置,然后将.git目录中的文件复制到$ docroot。我仍然只想在git中附加到 mytag src 。 (从技术上讲,我不需要git功能,例如服务器上的推送或拉取存储库)。

我如何用木偶代码做到这一点?

我不想使用exec(或等效的)。

更新

我应该首先说我是一个混蛋和木偶新手。我这样做的目的和原因是我有一个名为 myproject 的git项目。 在项目中有一个名为 / src 的子目录。在git存储库中有" mytag-20170517"等标签。和mytag-201705018"。当我添加属性 revision =>' mytag' 时,它会复制正确的文件,但会带来太多文件。

myproject\
  file-i-do-NOT-want-puppet-to-copy1.txt (tagged with mytag-2017-0518)
  file-i-do-NOT-want-puppet-to-copy2.txt (tagged with mytag-2017-0518)
  src\
    file-i-DO-want-puppet-to-copy1.txt  (tagged with mytag-2017-0518)
    file-i-DO-want-puppet-to-copy2.txt  (tagged with mytag-2017-0518)

目前使用vcsrepo,它会使用puppet将包含根文件的所有目录复制到目标服务器。理想情况下,从/ src开始的文件。 src根目录中的文件是$ docroot根目录中我想要的文件。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

如果你不想使用exec(顺便说一下我会使用exec),我唯一能想到的另一个选择就是发送一个pull请求,在here中添加你需要的功能。或者,自己在Ruby中编写提供程序。

那就是说,你还没有说明为什么要这样做,我想知道是否将Git repo本身分解为vcsrepo支持的子模块,对你来说可能是更好的解决方案吗?