我有一个项目使用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根目录中我想要的文件。
我该如何解决这个问题?
答案 0 :(得分:0)
如果你不想使用exec(顺便说一下我会使用exec),我唯一能想到的另一个选择就是发送一个pull请求,在here中添加你需要的功能。或者,自己在Ruby中编写提供程序。
那就是说,你还没有说明为什么要这样做,我想知道是否将Git repo本身分解为vcsrepo支持的子模块,对你来说可能是更好的解决方案吗?