如何使用一个 github 存储库作为供应商库,并使用我自己的存储库中的文件覆盖
How to use one github repository as a vendor library, with file overrides from my own repository
我正在使用 Fuel PHP Marketing Cloud SDK,我想进行一些更改。由于我也在使用 Heroku,因此每次 git 推送时都会刷新存储库。
我需要修改一些文件,但由于每次推送都会刷新回购协议,我的更改将被覆盖。有没有办法将这些文件复制到我自己的仓库中,将其声明为依赖项 after 另一个仓库,并用我更新的文件覆盖主仓库中的文件?
例如我要更新的文件名为ET_Get.php。我可以直接更新它,但每次推送时它都会被覆盖。我想复制该文件,进行一些更改,并且我希望回购协议使用 that 文件,not 回购协议自己的文件。
我的composer.json看起来像这样
{
"require": {
"salesforce-mc/fuel-sdk-php": "1.3.0",
"guzzlehttp/guzzle": "~6.0",
"ext-soap": "*",
"php": "7.1.28",
"ext-mcrypt": "*",
"twig/twig": "^2.0",
"firebase/php-jwt":">=5.0.0"
},
"autoload": {
"psr-4": {
"FuelSdk\": "custom-classes",
"Pardot\": "custom-classes"
}
}
}
所以我想我可以在 salesforce-mc 存储库之后创建自己的存储库,然后让我的文件覆盖那些。
{
"require": {
"salesforce-mc/fuel-sdk-php": "1.3.0",
"salesforce-mc/custom": "1.0",
"guzzlehttp/guzzle": "~6.0",
"ext-soap": "*",
"php": "7.1.28",
"ext-mcrypt": "*",
"twig/twig": "^2.0",
"firebase/php-jwt":">=5.0.0"
},
"autoload": {
"psr-4": {
"FuelSdk\": "custom-classes",
"Pardot\": "custom-classes"
}
}
}
这可能吗?它不必是一个单独的回购协议。我可以简单地拥有自己的覆盖的任何方式都可以。
我知道我可以对 repo 进行分叉,并将我的分叉用作依赖项,但这似乎有点过分...
您可以使用 cURL
等库在服务器端进行调用
如果 API 以 json 或 xml 响应,那么它会工作正常。
如果他们的页面呈现类似 html 感谢页面的内容,您必须对其进行解析以确保它有效,然后呈现您自己的页面。
如果是这种情况,并且您正在对 ExactTargets 站点进行 GET 调用,那么您可能只需执行 header 重定向。
如果您确实需要 POST 数据,那么您还可以呈现一个新表单,它只是一个 "Submit" 按钮,其中包含隐藏字段中的所有数据。基本上和你一开始提交给他们是一样的。
希望对您有所帮助
这正是我所需要的。
https://mnapoli.fr/overriding-dependencies-with-composer/
我所要做的就是分叉原始回购,进行更改,然后在 composer.json 中使用我的回购,如下所示:
{
"require": {
"salesforce-mc/fuel-sdk-php": "1.3.0",
"guzzlehttp/guzzle": "~6.0",
"ext-soap": "*",
"php": "7.1.28",
"ext-mcrypt": "*",
"twig/twig": "^2.0",
"firebase/php-jwt":">=5.0.0"
},
"repositories":[
{
"type":"git",
"url": "https://github.com/user/forked-project.git"
}
],
"autoload": {
"psr-4": {
"FuelSdk\": "custom-classes",
"Pardot\": "custom-classes"
}
}
}
我正在使用 Fuel PHP Marketing Cloud SDK,我想进行一些更改。由于我也在使用 Heroku,因此每次 git 推送时都会刷新存储库。
我需要修改一些文件,但由于每次推送都会刷新回购协议,我的更改将被覆盖。有没有办法将这些文件复制到我自己的仓库中,将其声明为依赖项 after 另一个仓库,并用我更新的文件覆盖主仓库中的文件?
例如我要更新的文件名为ET_Get.php。我可以直接更新它,但每次推送时它都会被覆盖。我想复制该文件,进行一些更改,并且我希望回购协议使用 that 文件,not 回购协议自己的文件。
我的composer.json看起来像这样
{
"require": {
"salesforce-mc/fuel-sdk-php": "1.3.0",
"guzzlehttp/guzzle": "~6.0",
"ext-soap": "*",
"php": "7.1.28",
"ext-mcrypt": "*",
"twig/twig": "^2.0",
"firebase/php-jwt":">=5.0.0"
},
"autoload": {
"psr-4": {
"FuelSdk\": "custom-classes",
"Pardot\": "custom-classes"
}
}
}
所以我想我可以在 salesforce-mc 存储库之后创建自己的存储库,然后让我的文件覆盖那些。
{
"require": {
"salesforce-mc/fuel-sdk-php": "1.3.0",
"salesforce-mc/custom": "1.0",
"guzzlehttp/guzzle": "~6.0",
"ext-soap": "*",
"php": "7.1.28",
"ext-mcrypt": "*",
"twig/twig": "^2.0",
"firebase/php-jwt":">=5.0.0"
},
"autoload": {
"psr-4": {
"FuelSdk\": "custom-classes",
"Pardot\": "custom-classes"
}
}
}
这可能吗?它不必是一个单独的回购协议。我可以简单地拥有自己的覆盖的任何方式都可以。
我知道我可以对 repo 进行分叉,并将我的分叉用作依赖项,但这似乎有点过分...
您可以使用 cURL
等库在服务器端进行调用如果 API 以 json 或 xml 响应,那么它会工作正常。
如果他们的页面呈现类似 html 感谢页面的内容,您必须对其进行解析以确保它有效,然后呈现您自己的页面。
如果是这种情况,并且您正在对 ExactTargets 站点进行 GET 调用,那么您可能只需执行 header 重定向。
如果您确实需要 POST 数据,那么您还可以呈现一个新表单,它只是一个 "Submit" 按钮,其中包含隐藏字段中的所有数据。基本上和你一开始提交给他们是一样的。
希望对您有所帮助
这正是我所需要的。
https://mnapoli.fr/overriding-dependencies-with-composer/
我所要做的就是分叉原始回购,进行更改,然后在 composer.json 中使用我的回购,如下所示:
{
"require": {
"salesforce-mc/fuel-sdk-php": "1.3.0",
"guzzlehttp/guzzle": "~6.0",
"ext-soap": "*",
"php": "7.1.28",
"ext-mcrypt": "*",
"twig/twig": "^2.0",
"firebase/php-jwt":">=5.0.0"
},
"repositories":[
{
"type":"git",
"url": "https://github.com/user/forked-project.git"
}
],
"autoload": {
"psr-4": {
"FuelSdk\": "custom-classes",
"Pardot\": "custom-classes"
}
}
}