<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Hacker News: seba_dos1</title><link>https://news.ycombinator.com/user?id=seba_dos1</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Fri, 10 Apr 2026 09:56:03 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=seba_dos1" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by seba_dos1 in "EU Migration to and from the UK (Since Brexit)"]]></title><description><![CDATA[
<p>> because they are the leading world power<p>Since this has now started to slowly change, it's probably not a very good idea to pay too much attention to what they're culturally pushing anymore.</p>
]]></description><pubDate>Thu, 09 Apr 2026 12:05:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=47702584</link><dc:creator>seba_dos1</dc:creator><comments>https://news.ycombinator.com/item?id=47702584</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47702584</guid></item><item><title><![CDATA[New comment by seba_dos1 in "Git commands I run before reading any code"]]></title><description><![CDATA[
<p>Unlike merge strategies, where squash-to-merge is almost always motivated by someone not knowing how to use the tools well, branching strategies can be very diverse and project-dependent for very good reasons. Some projects have to maintain multiple versions of the thing they produce simultaneously, others don't. Some projects effectively maintain a patchset on top of some external upstream project, some are the upstream that's being forked by others - and some are somewhere in-between. Sometimes you break half the world to slowly fix it afterwards in a long running refactor, often you don't. Often there's a single canonical repo where all work happens, sometimes there's not. There's no genuine one-size-fits-it-all, but fortunately, git is very flexible there.<p>Blame, bisect etc. work well with histories with lots of back-and-forth merging, as can be easily seen in Linux, so blaming is definitely not a reason not to do it this way if your project calls for it otherwise. Perhaps one issue with such workflow is that some popular review tools aren't exactly great at letting you review merge conflict resolutions.</p>
]]></description><pubDate>Thu, 09 Apr 2026 10:14:50 +0000</pubDate><link>https://news.ycombinator.com/item?id=47701624</link><dc:creator>seba_dos1</dc:creator><comments>https://news.ycombinator.com/item?id=47701624</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47701624</guid></item><item><title><![CDATA[New comment by seba_dos1 in "Git commands I run before reading any code"]]></title><description><![CDATA[
<p>The commit graph is a full-blown DAG that you can operate on and form in any way you like that helps you achieve your goals. When merging something in you get back pointers to (at least) two parents that let you see what came from which branch, and a merge commit has its own commit message that lets you describe overarching goals. Even when doing rebase-before-merge flow you can still group things by merge commits, which are often used to have PRs referenced in the repository while keeping the history effectively linear and easy to browse. This way you keep the one central unit of information management in Git representing what it's supposed to - the atomic unit of change that you can build upon and traverse in various ways depending on context, rather than force larger things to squeeze into it for no good reason.<p>(and if you hadn't squashed on merge, short-lived branches wouldn't even "disappear" in the first place as you would still see them decorated in "git log" on commits that were merged in)</p>
]]></description><pubDate>Thu, 09 Apr 2026 09:47:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=47701389</link><dc:creator>seba_dos1</dc:creator><comments>https://news.ycombinator.com/item?id=47701389</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47701389</guid></item><item><title><![CDATA[New comment by seba_dos1 in "Git commands I run before reading any code"]]></title><description><![CDATA[
<p>"Tell me you don't have to debug foreign codebases often without telling me" ;)<p>The primary value of commit history comes from blame, bisect and corresponding commit messages. There's no reason to "treat PRs as atomic changes to the code base", commits are already supposed to be that and PRs are groups of commits (sometimes groups of size 1, but often not).<p>> When I mean "squash on merge", I mean the commit history is fully present in the PR for full scrutiny.<p>And when you merge the set of commits prepared by the author for review in, you get both "summations" and individual commits stored in the commit graph (where their place is) and you get to choose which way you want to view them at retrieval time without having to dig up things outside of the repository. Sometimes it's useful to see the summations only ("--first-parent"), sometimes you only want the individual atomic changes ("--no-merges"), sometimes you want to see them all but visually grouped together for clarity ("--graph"). When you squash on merge, you just give all that flexibility away for no good reason.<p>It's a commit graph, not a commit linked list, so treat is as such.</p>
]]></description><pubDate>Thu, 09 Apr 2026 09:33:29 +0000</pubDate><link>https://news.ycombinator.com/item?id=47701306</link><dc:creator>seba_dos1</dc:creator><comments>https://news.ycombinator.com/item?id=47701306</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47701306</guid></item><item><title><![CDATA[New comment by seba_dos1 in "Git commands I run before reading any code"]]></title><description><![CDATA[
<p>No, but you have local reflogs of remote branches, and if you --force-with-lease you are guaranteed to have the old state stored there.<p>You can often also access equivalent functionality by platform APIs. For example, GitHub has event API which you can use to check what a ref has pointed to previously.</p>
]]></description><pubDate>Thu, 09 Apr 2026 09:21:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=47701192</link><dc:creator>seba_dos1</dc:creator><comments>https://news.ycombinator.com/item?id=47701192</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47701192</guid></item><item><title><![CDATA[New comment by seba_dos1 in "Git commands I run before reading any code"]]></title><description><![CDATA[
<p>Stacking is good for expressing dependencies, but isn't helpful when you need to make several distinct changes that aren't necessarily needed unless you take them all in. What's the value in having a separate PR that introduces a framework that you later use in another PR when you may not actually want to merge it if the latter one doesn't end up being merged as well?<p>A PR is a group of commits, just utilize that when you need it.</p>
]]></description><pubDate>Wed, 08 Apr 2026 13:25:16 +0000</pubDate><link>https://news.ycombinator.com/item?id=47689931</link><dc:creator>seba_dos1</dc:creator><comments>https://news.ycombinator.com/item?id=47689931</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47689931</guid></item><item><title><![CDATA[New comment by seba_dos1 in "Git commands I run before reading any code"]]></title><description><![CDATA[
<p>Git is a version control system. It does not care about what it versions.<p>When I work on something, I commit often and use the commit graph as a undo tool on steroids. I can see what I tried, I can cherry-pick or revert stuff while experimenting, I can leave promising but unfinished stuff to look at later, or I can just commit to have a simple way to send stuff to CI, or a remote backup synced between machines.<p>Once I'm done working on something, it's time to take a step back, look at the big picture, see how many changes my experiments have actually yielded, separate them, describe and decide whether they go to review together or split in some way, as sometimes working on a single thing requires multiple distinct changes (one PR with multiple commits), but sometimes working in a single session yields fixes for multiple unrelated issues (several PRs). Only then it gets presented to the reviewer.<p>It just happens that I can do both these distinct jobs with a single tool.</p>
]]></description><pubDate>Wed, 08 Apr 2026 13:05:39 +0000</pubDate><link>https://news.ycombinator.com/item?id=47689636</link><dc:creator>seba_dos1</dc:creator><comments>https://news.ycombinator.com/item?id=47689636</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47689636</guid></item><item><title><![CDATA[New comment by seba_dos1 in "Git commands I run before reading any code"]]></title><description><![CDATA[
<p>Why have PRs - groups of commits to pull - then if all you need is a single patch file?</p>
]]></description><pubDate>Wed, 08 Apr 2026 12:46:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=47689449</link><dc:creator>seba_dos1</dc:creator><comments>https://news.ycombinator.com/item?id=47689449</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47689449</guid></item><item><title><![CDATA[New comment by seba_dos1 in "Git commands I run before reading any code"]]></title><description><![CDATA[
<p>Yes, and in some projects 20 commits is not even a big PR, more like "regular sized". The LKML's first page is now full of PRs with around 20 commits, here's a random one as an example: <a href="https://lore.kernel.org/netdev/20260408121252.2249051-1-dhowells@redhat.com/T" rel="nofollow">https://lore.kernel.org/netdev/20260408121252.2249051-1-dhow...</a><p>And here's a slightly smaller one which isn't about "miscellaneous fixes": <a href="https://lore.kernel.org/netdev/20260408122027.80303-1-xuanzhuo@linux.alibaba.com/T/" rel="nofollow">https://lore.kernel.org/netdev/20260408122027.80303-1-xuanzh...</a><p>Some of these commits even get reviewed by different maintainers before being merged, which is common when a patchset touches several subsystems at once.</p>
]]></description><pubDate>Wed, 08 Apr 2026 12:35:27 +0000</pubDate><link>https://news.ycombinator.com/item?id=47689326</link><dc:creator>seba_dos1</dc:creator><comments>https://news.ycombinator.com/item?id=47689326</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47689326</guid></item><item><title><![CDATA[New comment by seba_dos1 in "Git commands I run before reading any code"]]></title><description><![CDATA[
<p>Commits don't show "how an engineer approaches a problem". Commits are the unit of change that are supposed to go into the final repository, purposefully prepared by the engineer and presented for review. The only thing you do by squashing on merge is to artificially limit the review unit to a single commit to optimize the workflow towards people who don't know how to use git. Personally I don't think it's a good thing to optimize for.</p>
]]></description><pubDate>Wed, 08 Apr 2026 12:30:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=47689271</link><dc:creator>seba_dos1</dc:creator><comments>https://news.ycombinator.com/item?id=47689271</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47689271</guid></item><item><title><![CDATA[New comment by seba_dos1 in "Git commands I run before reading any code"]]></title><description><![CDATA[
<p>Nothing is destroyed by a force push. It just overwrites a single pointer, and even keeps its old value in reflog.<p>Things that aren't referenced by anything anymore will eventually get garbage collected and actually destroyed, but you can just keep a reference somewhere to prevent that from happening if you need. Or even disable garbage collection completely.<p>Looks like people's fears about git come just from not knowing what it does.</p>
]]></description><pubDate>Wed, 08 Apr 2026 12:24:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=47689222</link><dc:creator>seba_dos1</dc:creator><comments>https://news.ycombinator.com/item?id=47689222</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47689222</guid></item><item><title><![CDATA[New comment by seba_dos1 in "Git commands I run before reading any code"]]></title><description><![CDATA[
<p>Because it's a useful abstraction. If you only look at PRs and don't ever care about commits, why are they even being sent to reviewer in the first place? Just send a diff file.<p>Having atomic commits lets you actually benefit from having them. Suddenly you don't have to perform weird dances with interconnected PRs with dependencies as "PR too big" is not such a problem anymore as long as commits are digestible; you can have things property bisectable; you can preserve shared authorship; you can range-diff and have a better view on what and how changed between review passes, and so on...<p>The unit of change is commit, and PRs group commits you want someone to pull. If you don't want or need any of that, you're just sending a patch file in a needlessly elaborate way.</p>
]]></description><pubDate>Wed, 08 Apr 2026 12:17:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=47689163</link><dc:creator>seba_dos1</dc:creator><comments>https://news.ycombinator.com/item?id=47689163</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47689163</guid></item><item><title><![CDATA[New comment by seba_dos1 in "Git commands I run before reading any code"]]></title><description><![CDATA[
<p>Having the commit graph easy to filter means exactly that you don't have to sift through hundreds of commits for no reason. What else did you think it would mean?</p>
]]></description><pubDate>Wed, 08 Apr 2026 11:26:11 +0000</pubDate><link>https://news.ycombinator.com/item?id=47688717</link><dc:creator>seba_dos1</dc:creator><comments>https://news.ycombinator.com/item?id=47688717</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47688717</guid></item><item><title><![CDATA[New comment by seba_dos1 in "Git commands I run before reading any code"]]></title><description><![CDATA[
<p>> If someone uses git commits like the save function of their editor<p>I use it like that too and yet the reviewers don't get to see these commits. Git has very powerful tools for manipulating the commit graph that many people just don't bother to learn. Imagine if I sent a patchset to the Linux Kernel Mailing List containing such "fix typo", "please work now", "wtf" patches - my shamelessness has its limits!</p>
]]></description><pubDate>Wed, 08 Apr 2026 11:15:35 +0000</pubDate><link>https://news.ycombinator.com/item?id=47688618</link><dc:creator>seba_dos1</dc:creator><comments>https://news.ycombinator.com/item?id=47688618</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47688618</guid></item><item><title><![CDATA[New comment by seba_dos1 in "Git commands I run before reading any code"]]></title><description><![CDATA[
<p>I have no troubles working on big FLOSS projects where reviews usually happen at the commit level :)</p>
]]></description><pubDate>Wed, 08 Apr 2026 11:04:22 +0000</pubDate><link>https://news.ycombinator.com/item?id=47688518</link><dc:creator>seba_dos1</dc:creator><comments>https://news.ycombinator.com/item?id=47688518</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47688518</guid></item><item><title><![CDATA[New comment by seba_dos1 in "Git commands I run before reading any code"]]></title><description><![CDATA[
<p>You can do whatever you want with stuff nobody else looks at. I do too.<p>I meant "shared place" as an open review request or a shared branch rather than shared underlying infrastructure. Shared by people's minds.</p>
]]></description><pubDate>Wed, 08 Apr 2026 10:59:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=47688469</link><dc:creator>seba_dos1</dc:creator><comments>https://news.ycombinator.com/item?id=47688469</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47688469</guid></item><item><title><![CDATA[New comment by seba_dos1 in "Git commands I run before reading any code"]]></title><description><![CDATA[
<p>I don't think there's much nuance in the "I don't know --first-parent exists" workflow. Yes, you may sometimes squash-merge a contribution coming from someone who can't use git well when you realize that it will just be simpler for everyone to do that than to demand them to clean their stuff up, but that's pretty much the only time you actually have a good reason to do that.</p>
]]></description><pubDate>Wed, 08 Apr 2026 10:58:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=47688448</link><dc:creator>seba_dos1</dc:creator><comments>https://news.ycombinator.com/item?id=47688448</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47688448</guid></item><item><title><![CDATA[New comment by seba_dos1 in "Git commands I run before reading any code"]]></title><description><![CDATA[
<p>These commits reaching the reviewer are a sign of either not knowing how to use git or not respecting their time. You clean things up and split into logical chunks when you get ready to push into a shared place.</p>
]]></description><pubDate>Wed, 08 Apr 2026 10:51:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=47688355</link><dc:creator>seba_dos1</dc:creator><comments>https://news.ycombinator.com/item?id=47688355</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47688355</guid></item><item><title><![CDATA[New comment by seba_dos1 in "How to get better at guitar"]]></title><description><![CDATA[
<p>There's plenty of good stuff that's hard to play, but there's also so much good stuff that's relatively easy.<p>It's also obvious to me that at this point I'm never going to reach the virtuoso level even if I really wanted to, but so what? I suck, but whenever I manage to play something that I couldn't before it brings me joy.</p>
]]></description><pubDate>Wed, 08 Apr 2026 10:46:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=47688298</link><dc:creator>seba_dos1</dc:creator><comments>https://news.ycombinator.com/item?id=47688298</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47688298</guid></item><item><title><![CDATA[New comment by seba_dos1 in "Git commands I run before reading any code"]]></title><description><![CDATA[
<p>> If the team squashes every PR into a single commit, this output reflects who merged, not who wrote.<p>Squash-merge workflows are stupid (you lose information without gaining anything in return as it was easily filterable at retrieval anyway) and only useful as a workaround for people not knowing how to use git, but git stores the author and committer names separately, so it doesn't matter who merged, but rather whether the squashed patchset consisted of commits with multiple authors (and even then you could store it with Co-authored-by trailers, but that's harder to use in such oneliners).</p>
]]></description><pubDate>Wed, 08 Apr 2026 10:32:18 +0000</pubDate><link>https://news.ycombinator.com/item?id=47688176</link><dc:creator>seba_dos1</dc:creator><comments>https://news.ycombinator.com/item?id=47688176</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47688176</guid></item></channel></rss>