当dev repo没有与生产工作树进行1对1映射时,那么这是git子模块的一个很好的用例吗?

时间:2011-12-06 15:32:39

标签: git git-submodules

我对git相当陌生,只是通过这些人解释的方法找出了如何通过我当地的dev repo更新实时网站的基础知识:

http://danielmiessler.com/study/git/#website
http://toroid.org/ams/git-website-howto

('单行摘要^^^:推入具有分离工作树的远程存储库,以及运行“git checkout -f”的后接收挂钩。')

一切都很顺利,但我有两个问题,我希望我可以通过一些比我知道如何管理更好看的git footwork来解决这个问题:

  • 我的开发回购实际上代表的不仅仅是我需要推送到现场网站。但是我想保留我的本地dev repo(带有无关的文件夹),因为我还使用这个dev repo来备份所有我与网站相关的工作(包括我用来创建的主要photoshop文件)该网站的jpgs,项目备注等),本地,到我的备份开发HD)。我有一个模糊的概念,我应该看看git能够忽略某些文件/文件夹,但是(还没看过)我真的不想忽略任何东西 - 我想要备份我的整个当我推送到我的备份dev repo(本地备份HD)时使用git push进行repo,但在推送到实时站点repo时只推送某些文件夹。我不知道该怎么做。

  • 我的dev repo的文件夹实际上代表了实际站点上的不同区域,这些区域不在同一目录结构中。我的意思是说我实际上需要(希望,如果可能的话)使后接收挂钩(s?)检查实时服务器树的一些文件夹/文件进入 Web服务器DocumentRoot,同时检查实时服务器树的一些其他文件夹/文件外部 Web服务器的DocumentRoot。我本来只是将post-receive hook checkout发送到父文件夹,其子文件夹是服务器的DocumentRoot,但是我的dev repo的目录结构没有一对一地映射到活动服务器的目录结构。我需要一个细粒度的控件(只有几个文件夹),所以我可以在实时站点目录/文件结构中有效地告诉post-receive hook(s?)树的每个文件夹应映射到的位置。 / p>

感谢任何指导!

1 个答案:

答案 0 :(得分:2)

我认为你使用的是错误的工具!您将网站和辅助文件保存在git存储库中,这很好,但是您希望使用git来部署项目。

我建议使用不同的东西:使用专用工具进行部署,例如 fabric http://docs.fabfile.org/en/1.3.3/index.html还有其他工具可以做同样的事情,但我碰巧知道面料。

如果需要,您可以将存储库推送到服务器并让它触发只接听fab deploy(或类似)的post-receive挂钩。但是,您可能不希望整个项目驻留在生产计算机上。在这种情况下,您可以在本地计算机上调用fab deploy。 (可能会编写不同的deploy函数...)


你特别想问一下git子模块。我不能在这里看到它们的使用,否则它将允许您在本地机器和生产机器上具有不同的文件夹结构。这可能会起作用(我猜)但IMO太过分了。