question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

[Feature] Reference a PR via URL to create Patch

See original GitHub issue

The list of outstanding PRs in react-native and the react community is long. It would be great, if we could add links to those PRs i.e. inside the package json, so the PR is applied automatically.

As an interface we could simply add them to the package.json

Proposal

By simply applying .patch or .diff to a github PR, a full fledge patch is provided. This would make patching much simpler.

Try it out: Pull Request: https://github.com/facebook/react-native/pull/12807 Pull Request as Patch: https://github.com/facebook/react-native/pull/12807.patch

To manage this centrally, we could just use the package.json:

// pacakge.json
{
  "name": "name",
  "version": "1.0.0",
  "dependencies": {
    "react": "16.0.0-alpha.12",
    "react-native": "^0.47.2",
    "react-native-scandit": "^1.1.7",
    "styled-components": "^2.1.2",
    "patch-package": "X.XX"
  },

// New Property for patch-package
  "patch-package": {
    "react-native": [
      {
        // Link to PR. Most cases, all what is needed.
        "pullRequest": "https://github.com/facebook/react-native/pull/12807",
        // Optional. Default is head. Leads to: https://github.com/facebook/react-native/pull/12807/commits/1a44b86e4af6dbb62819348cd963ffa6a443f32e
        "commit": "1a44b86e4af6dbb62819348cd963ffa6a443f32e", 
        // Optional. Restrict to specific package version or version range
        "version": "^0.47.2",
        // Optional. In case the package to be patched is in a subfolder of the repository
        "fromBaseFolder": ".", 
        // Optional. In case the folder we want to patch is called differently in the npm distribution, due to some build script
        "targetBaseFolder": ".", 
        // Optional. Restrict the scope of the applied patch
        "restrictChangesToPathFromBaseFolder": [
          "ReactAndroid/src/main/java/com/facebook/react/uimanager",
          "ReactAndroid/src/main/java/com/facebook/react/views/webview"
        ] 
      },
      // next patch in array for react-native
      {} 
    ]
  },
// End new Property

The patch file follows all the commits in the subject line. So to limit a patch up until a specific point, simply truncate it after the last wanted SHA. I.e. sometimes PRs are merged so late, that they are adapted to a new published version we not yet use.

screen shot 2017-09-11 at 10 45 09

Relevance

patch-package is necessary. The maintainers can just not follow up. However, this is an even stronger incentive to create private hacks because patches are difficult to share. By allowing a “simple” reference to a PR, the community is incentivised to make at least a PR to the upstream package and reference that PR them self as an easier way of patching until it is merged.

Btw: This approach has the nice side effect, that testing PRs becomes dump easy for novices. Up on problems, people will report back/complain to the PR, enforcing quality and bringing less garbage PRs inside a repo!

Prior to patch package, we applied a few patches with the vanilla bash commands via a post install script. Not ideal.

And I said it before. Love your sharp mind in all this.

Issue Analytics

  • State:closed
  • Created 6 years ago
  • Reactions:8
  • Comments:9 (3 by maintainers)

github_iconTop GitHub Comments

2reactions
devinrhode2commented, Nov 19, 2022

If that’s THE killer feature, the GOAT of package patching would make it so easy developers accidentally start contributing to open source projects

2reactions
ds300commented, Jan 27, 2019

I’m going to close this PR due to inactivity. Also I can’t see patch-package supporting this feature any time soon unfortunately. It’s just a bit too complicated and it’s not something I’ve ever personally needed. Would be happy to help out any contributors who want to give it a go though. Feel free to open a new issue.

Read more comments on GitHub >

github_iconTop Results From Across the Web

Creating a patch from GitHub pull request - Medium
But here is some amazing hidden feature to create a patch file from the GitHub. ... In the above screenshot, you can see...
Read more >
Link to a PR's raw patch from the UI | Bitbucket Cloud - Jira
Hi Nick,. Thanks for the suggestion. Funnily enough, we do generate raw patches for pull requests, but the URL for these patches is...
Read more >
Creating patch from merge request - git - Stack Overflow
If you have MR url like https://git.drupalcode.org/project/drupal/-/merge_requests/622/diffs you always can add just .patch to the end of MR link (like ...
Read more >
Applying a patch in a feature branch - Drupal
Prepare the local repository · Obtain and apply a patch file · Commit the patch · When you're done: Code cleanup · Composer...
Read more >
Create Patches - GitLab Docs
Create an issue if there's something you don't like about this feature. Propose functionality by submitting a feature request. Join First Look to...
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found