Git/Mercurial:如何在结构中分离存储库

4
我是一名有用的助手,可以为您翻译文本。

我试图使用Composer / Packagist进行工作,并为此,我试图理解管理工作流程的最佳方法,以便我可以使用我选择的框架和应用程序创建Composer包。但是如果我无法找到使用Git / Github或Hg / BitBucket(或两者)的方法,那么这些都是徒劳的。

当前结构/工作流程

%path%/sites/[framework]
 - contains up to date framework git repo  
%path%/sites/[framework]/application
 - contains app specific code and is a bitbucket repo
*%path%/www/[appname]_public
 - contains public files and is a bitbucket repo i.e. "public_html" folder  

通过正确的别名设置,这对我的当前网站有效(每个网站都是“/sites”中的一个单独文件夹)。由于我使用了两种不同的仓库机制,因此我可以随时更新特定站点的框架而不会对我的应用程序造成太大影响,反之亦然。

既然包含的软件包作为“应用程序”文件夹的子文件夹(以便我可以创建和测试它们),那么我该如何将那些文件夹“包装”为作为独立的composer包可在github或bitbucket上提供的软件包?我有点茫然无措。

%path%/sites/[framework]/application/[module]
 - contains controllers, models, views, etc... to be wrapped up as a composer
   "package" and made available on github or bitbucket as its own repo.

也许这里有人可以帮忙设计逻辑或指导如何设置,我无法想象该如何实现。这种操作可能吗?难道我对问题的思考过度了吗?
也许我的整个思路都错了。在我的现有结构中,我试图完成任务,但是Git子模块或HG嵌套repo似乎不能按照我预期的方式工作。
我的工作流是否出现了严重缺陷,还是需要更多关于Git的知识才能完成?是否有更简单/更好的方法?如果我可以找到某种机制/逻辑,就可以将框架/siteApplicationCode/packaging作为单独的存储库进行分离,那么我将很高兴地重建我的结构/工作流。
提前感谢任何帮助。
1个回答

1

%path%/sites/[framework]/application/[module] 应该是一个git仓库,你可以将它推送到某个公共位置与他人分享(如果你想的话,只对公司内部公开),比如git.yourcompany.com。

然后,你可以创建一个可访问satis.company.com的satis composer仓库,并使用一个json文件初始化它,引用你的公共仓库。确保首先为每个模块创建composer.json文件,使它们可以通过composer进行安装。

接下来,使用每个应用程序的composer.json文件重新安装你的项目,它将获取所需版本的模块。它们将出现在%path%/sites/[framework]/application/vendor/中,并生成一个自动加载文件。

如果你的代码可以发布在github上,你可以跳过git+satis部分,直接将你的模块提交到packagist.org。

我可能误解了你的结构,但我希望你能理解这个思路。


谢谢这些信息,但我不认为它解决了我的问题,除非我漏掉了什么。我从 Github 拉取一个只读的框架仓库。我在 Bitbucket 上有一个正常的应用程序代码仓库,它是框架仓库的子文件夹。现在我希望将模块文件夹作为单独的仓库添加,它们是应用程序特定代码文件夹的子文件夹。这样我就可以保持框架的更新和分离,应用程序特定代码的更新和分离。我只是希望模块也能分开,但我觉得这可能是不可能的。 - Landjea
如果您可以在Bitbucket存储库中编写composer.json文件,那么您就可以从packagist.org或satis.yourcompany.com中拉取composer包。这些包可以是您的模块。 - greg0ire
谢谢你,greg0ire。我明白你的意思了。我一直在尝试想出如何将这些模块单独放在Github/Bitbucket上,并试图将你的答案与我的幻想过程结合起来。现在我明白你在说什么了。再次感谢! - Landjea
很高兴你解决了它,的确相当复杂! - greg0ire

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接