Git repos与Web根目录之外的多个目录?

时间:2012-12-06 01:50:44

标签: git directory repository

我开始使用git和我的.git目录以及web根目录中的所有其他内容。进一步阅读后,这似乎是一种不好的做法。我现在将我的应用程序和系统文件夹放在Web根目录之外。我的Web根目录中唯一剩下的就是索引文件和图像资源文件夹,js和css。

旧路

/var/www/assets
/var/www/application
/var/www/system
/var/www/.git

新方法(不确定.git应该在哪里使用?)

/var/www/assets
/var/application
/var/system

之前很容易设置git。我创建了repo,它找到了所有文件,因为它们都在同一个目录中。现在,我不确定.git repo应该驻留在新结构中的哪个位置。如果我将它添加到/ var / www,它会看到assets文件夹而不是其他任何内容。

我想用git管理所有三个目录。如何将所有目录包含在仓库中。或者,还有另一种方法,git旨在处理这样的实例?我在这个网站上发现了这样的另一个问题,但我无法理解它。

另外,在我的远程回购中,我会将其设置为这样。我还没有移动任何目录。我刚刚尝试让它在本地工作。

var/www/assets
var/application
var/system
var/git/.git

2 个答案:

答案 0 :(得分:3)

我建议不要将两个目录移出repo,而是建议将web根目录移动到www目录中。我这样做的方式如下:

  1. 创建新的Web根目录:

    # from /var/www
    mkdir www
    git mv assets www
    git mv index* *html www
    git commit
    

    所以,当前的临时结构是:

    /var/www/www/assets
    /var/www/system
    /var/www/application
    /var/www/.git
    
  2. 此时您有两个选择:编辑服务器配置以使/var/www/www成为新的Web根目录。或者将整个内容移动到其他位置并将webroot符号链接到其原始位置。我个人更喜欢第二种选择:

    # from /var/www
    cd ..
    mv www /usr/local/mywebapp
    ln -s /usr/local/mywebapp/www www
    

    现在你的文件夹结构是:

    /usr/local/mywebapp/www/assets
    /usr/local/mywebapp/system
    /usr/local/mywebapp/application
    /usr/local/mywebapp/.git
    

    但网络搜索者只能看到:

    /var/www/assets
    /var/www/index.html
    
  3. 这样做可以确保您的项目始终处于git控制之下,而不会在git之外发生更改(因此在git的历史记录中未记录)。这样做的好处是您根本不需要更改远程仓库。只需将更改推送到那里。

    如果您希望其他人使用符号链接方法正确安装您的应用程序,您可以随时提供一个shell脚本来为它们创建符号链接,并确保服务器配置正确。

答案 1 :(得分:1)

最好将源和运行时分开。

在其他地方完全拥有git和source。有一个从源构建的构建脚本(即从git checkout构建)并将构建的输出传输到web目录。

所以来源可能看起来像:

/var/src/assets
/var/src/application
/var/src/system
/var/src/.git

然后构建脚本将仅将构建的输出复制到/var/www