GitHub:是否可以从存储库中获取存储库?

时间:2012-05-26 13:00:52

标签: git symfony github

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

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

或者我应该只使用组件存储库吗?

此致

编辑:

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

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

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

4 个答案:

答案 0 :(得分:4)

我在Symfony 2 Git项目中处理依赖关系的方式如下:

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

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

我也有这种结构:

src\Company\SharedBundle
src\Company\ProjectBundle

其中SharedBundle被简单地指定为依赖项,目标安装路径位于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

答案 1 :(得分:1)

您可能需要查看子模块。

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

答案 2 :(得分:1)

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

答案 3 :(得分:1)

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

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

所以你想要这样的东西:

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