git post-receive用于管理带有生成文件的网站

时间:2012-02-07 16:50:46

标签: git githooks

我有一个Web应用程序,我想使用git进行版本控制。我已使用以下策略在服务器上与其他几个站点完成此操作。

$ mkdir /var/git/example.git && cd /var/git/example.git
$ git init --bare
$ cat > hooks/post-receive
#!/bin/sh
GIT_WORK_TREE=/var/www/example.com git checkout -f
$ chmod +x hooks/post-receive
.... add files, commit, push, yada yada

这个过程在我过去做的时候工作正常,但对于这个新网站来说,我有一个新的皱纹。这个新站点生成文件并将它们存储在目录中。该目录可由webroot写入。我们称之为目录:

/var/www/example.com/generatedfiles/

我担心checkout -f将删除此目录,我将丢失所有生成的内容。我也不想在我的git存储库中使用该内容。

所以,我的问题是如何设置我的post-receive挂钩,以便它单独留下generatedfiles目录,但我仍然可以获得checkout -f的效率?

1 个答案:

答案 0 :(得分:1)

评论中有一些有用的建议,但由于没有人给出答案,我会给出一个。如果任何发表评论的人都在回答,我会将你的评论标记为正确。

@ceejayoz是正确的,如果文件和目录不受版本控制,那么它们不会被checkout -f

覆盖

@kan和@vpatil是正确的,如果我只是将以下内容添加到repo根目录中名为.gitignore的文件中,则generatefiles目录将不会被覆盖

/generatedfiles