2011-09-09 101 views
0

我想將我的「vendor/assets」目錄中的子模塊中的一些文件複製到另一個目錄 - 「public/assets」。我聽說過更新鉤子,但我不確定它們是否適用於子模塊。我寫了一個簡單的鉤子,並從命令行運行更新,但它不起作用。如何爲git子模塊編寫更新鉤子?

我的更新鉤看起來是這樣的:

#.git/gooks/update.rb 

#!/usr/bin/env ruby 

puts "Copying files..." 

因此,這甚至可能嗎?

btw,我使用Braid來管理我的子模塊。

回答

1

update掛鉤僅在有人推入當前存儲庫時纔會運行,這聽起來不像您想要的。你可以使用post-commit鉤子,如果你想每次在倉庫中創建提交時將這些文件複製到位。 (這應該是足夠的,因爲當您更改子模塊的提交時,您需要在主項目中提交任何子模塊的新版本。這將是更新public/assets中的文件的一個自然點。 )

你說你的測試鉤沒有運行 - 這可能只是因爲你的名字錯了。更新掛鉤必須是名爲.git/hooks/update的可執行文件(n.b.沒有.rb後綴)。同樣,提交後掛鉤必須是.git/hooks/post-commit

您不應在任何特定子模塊中爲此任務創建鉤子,因爲鉤子將執行的操作僅限於主項目。因此,由於提交子模塊的新版本或更新任何隨機文件而導致您擔心的更改無關緊要。

對於書寫掛鉤,您會發現official githooks文檔很有用,可能還有這些additional tips

+0

我明白了。但是使用最好的鉤子是不是預先提交?這樣複製的文件也將包含在提交中。 – picardo

+0

哦,我曾假設這些文件將被解除。我不知道你是否可以在'pre-commit'鉤子中放置額外的文件,但是很容易測試... –

+0

是的,這似乎工作正常,雖然你'git add'在'pre-commit'鉤子中不會出現在提交消息的有用的註釋掉的部分。 –