【问题标题】:Using GIT with projects that have directories in multiple locations将 GIT 用于在多个位置具有目录的项目
【发布时间】:2011-04-08 05:53:38
【问题描述】:

我正在尝试将 PHP/MySQL Web 应用程序(基于 CodeIgniter 2.01 框架构建)移动到 GIT 存储库。问题是为了增加安全性,我已经实现了分离应用程序部分(应用程序和系统文件夹)和 Web 文件(index.php、图像、css、js 等文件夹)的最佳实践。 Web 文件位于 /var/www,应用程序位于 /data/company/apps/myapp。

由于我想保持这种额外的安全性,我如何将具有多个这样的位置的项目迁移到 GIT 中?

【问题讨论】:

    标签: git codeigniter frameworks


    【解决方案1】:

    我认为您的 Git 存储库的结构和 已部署 文件的结构不需要匹配:

    • 或者添加一个额外的步骤(例如post-receive 挂钩)将文件从 Git 存储库复制到正确的系统路径(将 SCM -- 源代码控制管理 -- 与 RM -- 发布管理分开),李>
    • 或者直接将两个系统路径链接到 Git 存储库中的两个相关目录。

    我在 cmets 中添加了:

    如果您重新组织您的 repo 的内容以便拥有具有相关内容的目录,您可以为每个目录创建两个 git archive,并将它们提取到正确的位置。

    OP crashintoty回复的:

    我在post-update中找到了使用以下命令的解决方案:

    git archive --format=tar master:guts/  | \
      tar -C /data/company/apps/myapp -x 
    git archive --format=tar master:skin/ | tar -C /var/www -x
    

    【讨论】:

    • hmmm...钩子建议如何与在自己的沙盒/开发服务器上实时测试更改的多个开发人员一起工作(即,他们在自己的服务器上运行 LAMP,实时测试他们的提交/local repo,然后将其推送到组的沙盒/开发服务器)??
    • @crashintoty:他们会推送到带有本地版本的 post-receive 挂钩的 local 裸仓库(适应于他们自己服务器中的本地部署)。如果本地实时测试通过,则他们推送到该组的沙箱/开发服务器。
    • 哈!没错,他们也可以使用钩子!我应该知道(我的大脑一定很累)。谢谢@VonC!
    • 出于好奇,为原始问题提出的链接解决方案基本上包含 repo 文件夹,例如,一个名为“guts”的文件夹(到 /data/company/apps/ 的符号链接myapp) 和一个名为“skin”的文件夹(到 /var/www 的符号链接)?
    • @crashintoty:是的,您可以将这两组文件放在其专用的 Git 目录中,无论这些目录的名称是什么。重要的部分是目录 content 最终会被正确的系统路径(/data/.../var/www)复制或引用
    猜你喜欢
    • 2021-04-13
    • 1970-01-01
    • 2012-01-26
    • 1970-01-01
    • 1970-01-01
    • 2015-01-20
    • 1970-01-01
    • 2016-08-02
    • 1970-01-01
    相关资源
    最近更新 更多