簡體   English   中英

有沒有辦法使用puppet(或模擬)使用git sparse-checkout?

[英]Is there a way to use git sparse-checkout using puppet (or mimic)?

我有一個在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中的/ mysub目錄復制到服務器上的$ docroot目錄中。

這個例子展示了我認為可以起作用的方法: 如何僅克隆Git存儲庫的子目錄? 但這似乎還不夠人偶選擇。

還是有另一種方法:

本質上,將git項目復制到服務器上的其他位置,然后將文件從.git目錄復制到$ docroot。 我仍然只希望git附加到mytagsrc (從技術上講,我不需要服務器上的git功能(例如push或pull倉庫))。

我要如何用人偶代碼做到這一點?

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

更新:

我應該先說我是git和puppet新手。 我這樣做的目的和原因是我有一個名為myproject的git項目。 在項目中是一個名為/ src的子目錄。 在git倉庫中有諸如“ mytag-20170517”和“ mytag-201705018”之類的標簽。當我添加屬性版本=>'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,它將使用p將所有目錄(包括根文件)復制到我的目標服務器。 理想情況下, 只有文件從/ src目錄開始。 src根目錄中的文件是我想要的$ docroot根文件。

我該如何解決這個問題?

如果您不想使用exec(我將使用exec),那么我唯一想到的另一種選擇是發送請求請求以在此處添加所需的功能。 或者,您自己用Ruby編寫一個提供程序。

就是說,您尚未說過為什么要這樣做,我想知道是否將Git存儲庫本身拆分為vcsrepo支持的子模塊,對您來說是更好的解決方案?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM