NixOS / nix

Nix, the purely functional package manager
https://nixos.org/
GNU Lesser General Public License v2.1
12.18k stars 1.47k forks source link

`fetchTree`/`github:`: add `merge` argument #11160

Open roberth opened 1 month ago

roberth commented 1 month ago

Is your feature request related to a problem? Please describe.

It's often useful to build or run something from a PR, especially when reviewing. Let's make this easier.

Describe the solution you'd like

Step 1: CLI only

GitHub already supports a magic ref, like github:NixOS/nix?ref=refs/pull/11159/merge We could provide a shorthand for this, like github:NixOS/nix?merge=11159

These merge commits, as well as commits in the PR tend to disappear, so it's doesn't make sense to lock this by rev sha.

Print a little notice when the PR has been merged, to let the user remove the merge parameter.

Step 2: Locking

Store the diff in the lock file or a location relative to it. This would make it viable for use in pure-eval mode and real locking.

Step 3: Multiple

Multiple PRs could be merged in a single fetching. GitHub doesn't do this for us, so this would need the logic of Step 2, which needs to implement its own patching anyway.

Describe alternatives you've considered

Additional context

Priorities

Add :+1: to issues you find important.

Aleksanaa commented 1 month ago

Yeah, QoL feature 👍

emilazy commented 1 month ago

You can just write github:NixOS/nix/pull/11159/merge (or /head), which is pretty ergonomic already. I do this all the time. Not sure if the juice is worth the squeeze? But I’m not opposed either.

Aleksanaa commented 1 month ago

You can just write github:NixOS/nix/pull/11159/merge (or /head), which is pretty ergonomic already. I do this all the time. Not sure if the juice is worth the squeeze? But I’m not opposed either.

Maybe for a flake that contains more configs (such as flake for NixOS), it will be helpful to directly merge multiple PRs in inputs.

emilazy commented 1 month ago

Does GitHub support that?

Aleksanaa commented 1 month ago

Does GitHub support that?

No, so

Step 3: Multiple

Multiple PRs could be merged in a single fetching. GitHub doesn't do this for us, so this would need the logic of Step 2, which needs to implement its own patching anyway.

emilazy commented 1 month ago

Sorry for the noise, should have skimmed less…

Aleksanaa commented 1 month ago

Also it should be possible to merge into a branch, say github:nixos/nixpkgs/nixos-unstable?merge=11159. Not sure if GitHub magic ref can do that...