我正在尝试登上 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”中的一个单独文件夹)。由于我使用两个独立的 repo 机制,我可以随时更新该特定站点的框架,而不会真正损害我的应用程序,反之亦然。
由于包作为“应用程序”文件夹的子文件夹包含(因此我可以创建和测试它们),我如何将这些文件夹“包装”为包作为单独的存储库,以便我可以将它们作为独立的 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 嵌套存储库似乎没有按照我预期的方式工作。
我的工作流程是否存在严重缺陷,或者我是否需要更多 Git 知识才能完成此工作?有没有更简单/更好的方法?如果我可以将 Framework/SiteApplicationCode/Packages 保留为单独的存储库,并带有我缺少的某些机制/逻辑,我将很乐意重建我的结构/工作流程。
在此先感谢您的帮助。
最佳答案
%path%/sites/[framework]/application/[module] 应该是一个 git 存储库,你可以通过将其推送到某个公共(public)位置(仅在你需要时对你的公司公开)来与他人共享,比如 git.yourcompany .com.
然后,您可以创建一个可在 satis.company.com 访问的 satis composer 存储库,您将使用引用您的公共(public)存储库的 json 文件对其进行初始化。确保首先为每个模块创建一个 composer.json 文件,使它们可被 Composer 安装。
然后,使用每个应用程序的 composer.json 文件重新安装您的项目,这将获取所需版本的所需模块。 它们将出现在 %path%/sites/[framework]/application/vendor/中,并且将生成一个自动加载文件。
如果你的代码可以发布到github上,你可以跳过git+satis部分,将你的模块提交到packagist.org
我可能误解了你的结构,但我希望你明白这一点
关于混帐/ Mercurial : Separate repos in structure,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12975563/