2

我将我的 php 项目存储在一个私人 GitHub 帐户下。

例如,现在我有不同的组件(新闻包、用户包等)和一个将所有组件一起使用的项目(例如自定义网站)。我可以以某种方式对它们进行符号链接吗?

还是我应该只使用组件存储库?

问候

编辑:

例如对于 symfony2 项目,有一种简单的方法可以做到这一点。在父存储库中总是有可用的组件。

例如:https ://github.com/symfony/OptionsResolver

symfony/OptionsResolver->syfmony/symfony->symfony/标准版

4

4 回答 4

4

我在 Symfony 2 Git 项目中处理依赖项的方式是这样的:

主要项目在Git下。外部依赖项(Bundles 和所有供应商的东西)进入 .deps 文件(或 composer.json)。然后我要么运行php bin/vendors install要么composer install安装依赖项。

依赖项将作为 Git 存储库安装,因此,如果我愿意,我可以cd进入它们并在那里提交并在我有权限的情况下推送它。这使得编辑您自己的包变得更容易,无需克隆单独的包存储库就可以在那里进行更改。

我也有这个结构:

src\Company\SharedBundle
src\Company\ProjectBundle

whereSharedBundle被简单地指定为依赖,目标安装路径在src\Company.

我在SharedBundle我所有的项目中都使用了。如果我需要对其进行更改,我会在其中一个项目中进行更改,然后我cd src\Company\SharedBundle提交并推送它,并在我需要更改时从所有使用它的项目中提取。

使用deps,您可以进行如下定位:

[AcmeAwesomeBundle]
    git=http://github.com/johndoe/Acme/AwesomeBundle.git
    target=../src/Acme/AwesomeBundle

如果你使用 Composer,你可能想要这个: http: //getcomposer.org/doc/01-basic-usage.md#autoloading

于 2012-05-27T09:11:28.807 回答
1

您可能想看看子模块。

http://git-scm.com/book/en/Git-Tools-Submodules

于 2012-05-26T13:04:18.507 回答
1

您可以使用composer来处理依赖关系。这不会像子模块那样将子项目锁定到特定的提交。Symfony 使用作曲家。

于 2012-05-26T17:42:36.127 回答
1

如果您只想将来自不同存储库的所有文件导入另一个存储库,并能够根据需要更新它们,我相信您可以简单地将所有其他存储库添加到主存储库作为远程存储库。

显然,在尝试之前备份所有内容,但我认为您只是想使用“git remote add [其他存储库的任意名称] [其他存储库的位置]”,“git fetch [其他存储库的任意名称]”和“get合并 [其他存储库的任意名称]/[其他存储库的分支]”。您可以使用任意数量的不同存储库来执行此操作。例如,我所有的存储库现在都是作为构建它们的框架的存储库的克隆开始的。我的项目与框架没有任何关系,只是碰巧将它用作起点,这并不重要。

所以你想要这样的东西:

git remote add news-bundle git://example.com/news-bundle.git
git merge news-bundle/master
git remote add user-bundle git://example.com/user-bundle.git
git merge user-bundle/master

然后,当您对 news-bundle 进行了更多更改时,您可以像这样更新其他存储库:

git fetch news-bundle
git merge news-bundle/master
于 2012-05-27T07:40:50.367 回答