php - 修改 Symfony Composer 供应商并使用它们直到他们的 PR 被 merge

标签 php git symfony github composer-php

我想创建一个针对 Github repo 的 PR在 merge 完成之前,它被用作 Symfony 项目中的供应商。假设将来会完成并且不会被拒绝。该存储库不是使用 git pull 的,而是使用 Composer 安装的。

我做了什么:

  1. fork 原始存储库
  2. 创建了分支“keepmessages”
  3. 编辑了composer.json:
  "repositories": [
        {
            "type": "vcs",
            "url": "https://github.com/clytemnestra/JMSTranslationBundle"
        }
    ],
   "require": {    
         ....  
        "jms/translation-bundle": "dev-keepmessages",
         ....
    },
  • Composer 更新
  • 现在,这用我自己的 fork 项目分支替换了供应商中的包。我想编辑一些文件,提交它们,当我准备好时,PR 到原始存储库。

    我怎样才能做到这一点?

    我尝试先将一些更改推送到我自己的存储库,但我得到以下信息:

    Permission denied (publickey).
    fatal: Could not read from remote repository.
    
    Please make sure you have the correct access rights
    and the repository exists.
    

    这是用composer下载的存储库,所以这可能是问题所在。如果我自己 pull 它,它很可能会起作用,但我想让它与 composter 下载的存储库一起工作,因为我想在工作项目上测试它们。

    最佳答案

    首先,您必须设置要推送到的存储库的远程位置。
    实际上,您只想在 fork 中进行更改,因此进入包的根目录(例如 vendor/package/name/)并运行:

    git remote add origin https://github.com/clytemnestra/JMSTranslationBundle
    

    然后,只需进行更改并在完成后推送即可。

    当您想要创建 PR 时,只需进入您的存储库(或原始存储库)并点击“创建 pull 请求”即可。
    它会自动建议您将您自己的分支与原始存储库之一进行比较。
    选择好的分支并提交PR。
    尽量清楚地说明您的 PR 原因,如果存在相关问题,只需在 PR 消息中引用即可。

    参见Creating pull requests

    注意:要发出干净的 pull 请求,请将更改保留在一次提交中。
    为此,see git rebase and squashing

    注释 2:仅提交您对与您正在处理的错误或功能相对应的文件所做的更改。所有其他文件都应该完好无损,即使测试套件没有通过,您也不必修复它们。

    编辑

    如果您收到类似 origin remote haslaise 的错误,请运行以下命令:

    git remote set-url origin https://github.com/clytemnestra/JMSTranslationBundle
    

    关于php - 修改 Symfony Composer 供应商并使用它们直到他们的 PR 被 merge ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35271250/

    相关文章:

    symfony - 如何在 Easy Admin 包 Symfony 中显示逗号分隔值

    Symfony2 bundle 具有相同的路由

    php - 如何在结果前显示php搜索引擎执行时间和结果数

    php - 支付宝成功返回网址

    php - Facebook 访问 token 过早过期

    php 到 htaccess 重写 - 如果没有 $_POST 数据则重定向

    git - 如何同步 bitbucket 问题和 JIRA 问题

    git - 清理工作树时出现 checkout 错误

    symfony - Symfony2中ObjectManager和EntityManager的区别?

    git - SSH 主机真实性检查期间 "[fingerprint]"选项的目的是什么?