From 87e7fade29b6aaf4e1bf80826dce6e036121dd0e Mon Sep 17 00:00:00 2001 From: Anirudh Oppiliappan Date: Wed, 16 Apr 2025 09:38:26 +0300 Subject: [PATCH] more --- pages/blog/pulls.md | 114 +++++++++++++++++++------------------- static/img/merge-base.png | Bin 0 -> 56926 bytes 2 files changed, 58 insertions(+), 56 deletions(-) create mode 100644 static/img/merge-base.png diff --git a/pages/blog/pulls.md b/pages/blog/pulls.md index 6dfb610..24032ec 100644 --- a/pages/blog/pulls.md +++ b/pages/blog/pulls.md @@ -15,14 +15,8 @@ authors: draft: true --- -We're having great fun building pull requests -- so far you can create a -PR on Tangled using one of three ways: - -- paste a diff in the UI -- compare two local branches within the same repository -- compare across forks - -[!!!reword this] +We've been having great fun building pull requests. It's a feature we sort of +take for granted We figured it would be fun to write about the engineering that went into building this, especially because Tangled is federated and Git repos @@ -36,10 +30,10 @@ Now, on with the show! Creating a PR in Tangled starts with heading to `/pulls/new` in your target repository. Once there, you're presented with three options: -- paste a patch in the UI -- compare two local branches (you'll see this only if you're a +- Paste a patch +- Compare two local branches (you'll see this only if you're a collaborator on the repo) -- compare across forks +- Compare across forks Whatever you choose, at the core of every PR is the patch. You either supply it and make everyone's lives easier, or we generate it ourselves @@ -47,14 +41,14 @@ by comparing branches (we'll talk more about this in a bit, it's very cool actually). We'll skip explaining the part where you click around on the UI to create a new PR -- instead, let's talk about what comes after. -We call it "rounds". Each round consists of a code review, and updating -the patch results in a new round. Rounds are -- obviously -- 0-indexed. -Here's an example. +We call it "rounds". Each round consists of a code review: your patch recieves +scrutiny, and updating the patch in response, results in a new round. Rounds are +obviously 0-indexed. Here's an example.
A new pull request with a couple -rounds of reviews.
+rounds of reviews. Thanks Jay!
Rounds are a far superior to standard branch-based @@ -72,22 +66,36 @@ approaches: - It is possible to "interdiff" and observe changes made across submissions (this is coming very soon to Tangled!) -This [post](https://mitchellh.com/writing/github-changesets) -by Mitchell Hashimoto goes into further detail on what can -be achieved with round-based-review. +This [post by Mitchell +Hashimoto](https://mitchellh.com/writing/github-changesets) goes into further +detail on what can be achieved with round-based reviews. ## fine, we'll make a patch ourselves +Remember our patch from earlier? Yeah, let's get into how comparing branches works. + +[you gotta talk about] +- merge and merge check? +- merge base thing +- sh.tangled.repo.patch lexicon +- nice segue into the fork section +
+ +
Merge base caption here! [!!!change this!]
+
+ +[!!!do we want this? use it to explain the patch merge/check process maybe]
- -
Simplified pull request flow.
+ +
Simplified pull request flow.
-## what's in a fork? + +## quick detour: what's in a fork? Forks are just "clones" of another repository. They aren't your typical clones from `git clone` however, since we're operating on top of [bare @@ -116,49 +124,43 @@ repository: [repo-record]: https://pdsls.dev/at://did:plc:hwevmowznbiukdf6uk5dwrrq/sh.tangled.repo/3lmrm7gu5dh22 -Great, we've got a fork on your knot now. You can now work on your -change safely here -- but how do you now propose a pull request from -your fork? +Great, we've got a fork on your knot now. You can now work on your change safely +here -- but let's get back to how we generate a patch across forks. ### ref comparisons across forks -Great, so we now understand the anatomy of a PR and how comparing -branches (or more generally, refs) works. Astute readers would've -realised that so far, this only works *within* the same repository -- -and not across forks, which is another git repository entirely. - -We'll admit: we ... omitted some sneaky bits about forks earlier. The -idea is simple: we already have all the pieces needed to compare two -local refs, so why not just "localize" the remote ref? - -That's where our hidden tracking refs come in. When you create a pull -request from a fork, we create a refspec that tracks the remote branch, -which we then use to produce a diff. A refspec is a rule that tells Git -how to map references between a remote and your local repository during -fetch or push. - -Let's say your fork has a feature branch called `feature-1`, and you're -making a pull request into the `main` branch of the original repository. -We fetch the remote `main` into a local hidden ref using a refspec like -this: - -``` -+refs/heads/main:refs/hidden/feature-1/main -``` - -And since we already have a remote (`origin`, by default) towards the -original repo (we just cloned it, rememeber?), we're able to `fetch` -this refspec and bring the remote `main` to our local hidden ref. Each -PR gets its own little hidden ref and hence the -`refs/hidden/:localRef/:remoteRef` format. We keep this ref up to date -whenever you push new commits to your feature branch, ensuring that the -comparison -- and any potential merge conflicts -- are always based on -the latest target branch state. +We'll admit: we ... skipped some sneaky bits about forks earlier. Here's the +concept: since we already have all the necessary components to compare two local +refs, why not simply "localize" the remote ref? +In simpler terms, we instruct Git to fetch the target branch from the original +repository and store it in your fork under a special name. This approach allows +us to compare your changes against the most current version of the branch you're +trying to contribute to, all while remaining within your fork.
Hidden tracking ref.
+We call this a "hidden tracking ref." When you create a pull request from a +fork, we establish a refspec that tracks the remote branch, which we then use to +generate a diff. A refspec is essentially a rule that tells Git how to map +references between a remote and your local repository during fetch or push +operations. + +For example, if your fork has a feature branch called `feature-1`, and you want +to make a pull request to the `main` branch of the original repository, we fetch +the remote `main` into a local hidden ref using a refspec like this: + +``` ++refs/heads/main:refs/hidden/feature-1/main +``` +Since we already have a remote connection (`origin`, by default) to the original +repository (remember, we cloned it earlier), we can use `fetch` with this +refspec to bring the remote `main` branch into our local hidden ref. Each pull +request gets its own hidden ref, hence the `refs/hidden/:localRef/:remoteRef` +format. We keep this ref updated whenever you push new commits to your feature +branch, ensuring that comparisons -- and any potential merge conflicts -- are always +based on the latest state of the target branch. diff --git a/static/img/merge-base.png b/static/img/merge-base.png new file mode 100644 index 0000000000000000000000000000000000000000..74acc7f96eacb9462cd3a26b6d6af4b63f233cab GIT binary patch literal 56926 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