我有一个Git存储库,我所有的代码都在master分支中,以前我只是忽略了所有Drupal文件,因此我在编写(或修改或可能修改)的代码与代码之间严格分开可以用Drush或其他方式生成
在我不得不升级Drupal之前,这似乎是一个不错的策略。我意识到如果情况不佳,我希望能够回滚,并且可以使用比Git更好的工具来做到这一点。我以为自己这是功能分支的理想情况,所以我做了一个drupal-7.14
分支,让它自己.gitignore
忽略了我所有的代码和设置文件,只注意了Drupal安装中的文件,而我不会这样做。不要碰。我手动进行了升级(下载,解压缩,解压缩,复制),对诸如robots.txt和.htaccess之类的边界案例进行了排序,并用我自己的脚本覆盖了Drupal的.gitignore。我修复了一些适用于7.14但不适用于7.15的设置,以从500错误中恢复,然后一切似乎都很完美。我将分支重命名为,drupal-7.15
并且愉快地前进了。
直到我意识到自己无意间做了什么:当我签出master时,以前由master分支取消跟踪但留在工作目录中的文件现在已从工作目录中删除,因为它们不再是取消跟踪的文件! 天哪!
如果我将drupal-7.15
分支与master 合并,则将失去代码分离。
可能存在将分支转换为子模块的某种方法。假设这是可能的,那可能是最好的策略。在执行此操作之前,我知道子模块是“正确的”解决方案,但是由于我没有意识到对以前未跟踪的文件使用分支的副作用,因此我决定走捷径。(此外,我所见过的在Drupal中使用子模块的所有方法都假设您正在启动一个新项目,而Drupal将成为master分支。我不希望将其他人的代码设为master分支,而我已经拥有了带有主分支的仓库。这看起来像只是进行升级就不必要地复杂。)
可能还有其他我没有想到的解决方案。
我如何才能以最少的弊端从中最好地恢复过来?
更新:这正在开发中(在我的笔记本电脑上是Linux VM),尚未投入生产。到我们投入生产时,我计划将所有功能包装在功能模块中,但是目前为止还没有。
更新2:子模块可能无法正常工作。根据 Pro Git的说法,“子模块允许您将Git存储库保留为另一个Git存储库的子目录”。Drupal没有提供任何这种很好的分离。并不是所有的Drupal代码都在一个子目录中,而是差不多颠倒了这种关系,但是仍然没有明确的分离,因为您可能正在编辑.htaccess和robots.txt,因此您的代码和Drupal仓库混合在一起了。我正在寻找解决此问题的方法。