2012-08-08 28 views
5

我想弄清楚如何做到以下几点(并弄清楚它是否可能)。Git在post-receive脚本上使用远程稀疏检出

我有一个本地的git仓库,其中包含许多用于各种文件的文件夹,但我希望能够将我的网站与git一起部署到我的开发服务器上,并且实际上只有一个文件夹的内容应该放入远程webroot只是文件夹的内容,而不是文件夹本身,这是艰难的一点)。我将git推送到dev服务器,并进入web可访问文件夹之外的裸回购站,然后我使用post-receive脚本将所有工作文件放入webroot。但是,这将复制所有文件夹,显然我只希望在操作完成后移动一个特定文件夹的内容。

做一些研究,它看起来像稀疏检查将是一个不错的选择。更新:我现在正在工作,它将只复制一个特定的文件夹,但我仍然没有得到它忽略文件夹本身,只是拉内容。我想这是与我添加到.git/info/sparse-checkout的路径/通配符有关的,但我不确定该模式用于排除目录但不排除其内容。

有没有很好的方法来做到这一点?我应该只使用post-receive脚本来手动复制我想要的目录的内容,而不是直接使用稀疏签出来完成它?

我很感激任何人愿意给予的帮助。谢谢!

+0

在进一步审查之后,我相信你不能使用稀疏签出将内容从目录中拉出。你可以在目录中选樱桃,但是无论你做什么,目录结构似乎都保持完好无损。我发现了一种适用于我的方式,但如果有人想知道如何做到这一点,请回复此主题。谢谢! – user1193694 2012-08-10 07:05:08

回答

0

一个更简单的方法是:

  • 做稀疏结账的/tmp/YourRepo/Yourdirectory(与YourDirectory是您要忽略一个,因为只有其内容的利息)
  • 移动/tmp/Yourdirectory的内容转移到正确的目标目录
+0

我曾考虑过这个问题,但我认为直接结帐到webroot可能会有一些速度优势,尽管我可能会错误地考虑它。如果我已经有一个webroot中的文件集合,并且我更新到同一位置,那么我是不是只是更新提交中webroot中已更改的文件,或者我基本上是通过该文章完成了一个完整的树形副本无论如何都接收钩子? (GIT_WORK_TREE = /我的/目录)。我假设如果我去/ tmp我会一直在做一个完整的树副本,而不是只更新已更改的文件? – user1193694 2012-08-09 07:27:58