Git:所有文件都在子目录中,但它们应该是顶级的

时间:2012-08-26 09:53:36

标签: git

这是wordpress插件的解剖:

.twitter-plugin
|-images/
|-index.php
+-README

目录twitter-plugin必须放在一个众所周知的位置(wp-content/plugins),以便Wordpress可以扫描它,如果它找到了README,那么它就是一个有效的插件。不幸的是,当我cdplugins目录并从Gitorious克隆存储库时,我得到:

.twitter-plugin
+-twitter-plugin
 |-images/
 |-index.php
 +-README

插件开发人员没有将文件直接放在顶级目录中,而是将它们保存在以项目命名的子目录中。这样Wordpress无法找到插件(它会查找twitter/README,而是twitter/twitter/README)。我可以通过克隆上面的一个目录(在wp-content而不是wp-content/plugins)克服这个问题,但它感觉很乱,有明显的缺点,我将不得不忽略所有其他插件目录,加上Git会抱怨plugins/目录已经存在(因此我必须临时移动以使其正常工作)。

有没有办法恢复这种情况?我错过了关于git 基本的内容吗?

此时此刻我认为我可以做的是初始化一个新的存储库,将文件放入,并尝试以某种方式导入历史记录。但是这样我就无法推送到原始存储库 - 对吗? - 因为所有文件路径都不同

我的目标是开发插件,而不仅仅是使用它。当然,要开发插件,它必须由某些Wordpress安装使用,所以它必须在众所周知的目录中,否则我的开发Wordpress安装将找不到它,我不会能够测试我的变化

1 个答案:

答案 0 :(得分:2)

克隆到wordpress项目之外的位置,然后符号链接或复制它所属的正确目录,例如:

$ git checkout git@wherever.org:twitter-plugin
$ cd my-wordpress-site
$ ln -s ../twitter-plugin/twitter-plugin ./twitter-plugin

Symlinking可能有效,也可能无效,因为并非所有PHP函数都遵循它们;如果没有,请尝试复制。但这确实意味着,在更新git repo时必须再次复制;您可能希望在部署脚本中包含此过程。