|
| ▲ | chrishill89 2 days ago | parent | next [-] |
| Not all software is developed by one software organization. Programs to manage “stacks of patches” go back decades. That might be hundreds that have accumulated over years which are all rebased on the upstream repository. The upstream repository might be someone you barely know, or someone you haven’t managed to get a response from. But you have your changes in your fork and you need to maintain it yourself until upstream accepts it (if they ever call back). I’m pretty sure that the Git For Windows project is managed as patches on top of Git. And I’ve seen the maintainer post patches to the Git mailing list saying something like, okay we’ve been using this for months now and I think it’s time that it is incorporated in Git.[1] I’ve seen patches posted to the Git mailing list where they talk about how this new thing (like a command) was originally developed by someone on GitHub (say) but now someone on GitLab (say) took it over and wants to upstream it. Maybe years after it was started. Almost all changes to the Git project need to incubate for a week in an integration branch called `next` before it is merged to `master`.[1] Beyond slow testing for Git project itself, this means that downstream projects can use `next` in their automated testing to catch regressions before they hit `master`. † 1: Which is kind of a like a “megamerge” |
| |
| ▲ | SOLAR_FIELDS 2 days ago | parent | next [-] | | Makes total sense! But what you described is like less than 5% of the use case here. Right tool for the right job and all that, what doesn't make sense is having this insanity in a "normal" software engineering setup where a single company owns and maintains the codebase, which is the vast majority of use cases. | |
| ▲ | chrishill89 2 days ago | parent | prev | next [-] | | > incorporated in Git.[1] Dangling footnote. I decided against adding one and forgot to remove it. | | | |
| ▲ | 2 days ago | parent | prev [-] | | [deleted] |
|
|
| ▲ | surajrmal 2 days ago | parent | prev | next [-] |
| It depends. We have pretty good review culture (usually same day rarely more than 24H), but some changes may need multiple rounds of review or might be have flaky tests that uncovers after a few hours. Also some work is experimental and not ready for pushing out for review. Sometimes I create a very large number of commits as part of a migration DND I can't get them all reviewed in parallel. It can be a lot of things. Maybe it happens more with monorepos. |
| |
| ▲ | SOLAR_FIELDS 2 days ago | parent [-] | | All fair points, indeed I face each of the challenges you listed periodically myself. But it's never been often enough to feel like I need to seek out an entirely different toolchain and approach to manage them. | | |
| ▲ | dwb 2 days ago | parent [-] | | Well, fortunately Jujutsu isn’t an entirely different toolchain and/or approach. It’s one tool that’s git-compatible and is quite similar to it. But where it’s different, it’s (for me) better. | | |
| ▲ | seba_dos1 2 days ago | parent [-] | | Yeah, I've never used Jujutsu, but from what I've seen so far everything it does can be done with Git itself, just perhaps in a (sometimes significantly) less convenient way. | | |
| ▲ | dwb 2 days ago | parent [-] | | Sure, true, I would say "often significantly" though, to the extent that you would never bother doing half the things with git that you can do with Jujutsu because it's such a pain. |
|
|
|
|
|
| ▲ | mi_lk 2 days ago | parent | prev | next [-] |
| I'd really like to hear your argument about when single large PR is better than stacked PRs from both PR author and reviewers' perspectives |
| |
| ▲ | SOLAR_FIELDS 2 days ago | parent [-] | | Why frame this as either/or? Those aren't the only two options. There are different types of "large" PR's. If I'm doing a 10,000 LOC refactor that's changing a method signature, that's a "large" PR, but who cares? It's the same thing being done over and over, I get a gist of the approach, do some sampling and sanity checks, check sensitive areas, and done. If I'm doing something more complex and storied to the point it requires stacks with dependencies, then I'm questioning why I haven't split and chunked the thing into smaller PR's in the first place and having those reviewed. Ultimately the code still has to get reviewed, so often it's about reframing the mindset more than anything else. If it organizationally slows me down to the point that chunking the PR into smaller components is worse than a stacked-pr like approach, I'm not questioning the PR structure, I'm questioning why I'm being slowed down organizationally. Are my reviews not picked up fast enough? Is the automated testing situation not good enough? The answer always seems to come back to the process and not the tooling in these scenarios. What problem does the stacked PR solve? It's so I can continue working downstream while someone else reviews my unmainlined upstream code that it depends on. If my upstream code gets mainlined at a reasonable rate, why is this even a problem to be solved? It also implies that you're only managing 1-3 major workstreams if you're getting blocked on the feature downstream which also begs the question, why am I waterfalling all of my work like this? Fundamentally, I still have to manage the dependency issue with upstream PR's, even when I'm using stacked PR's. Let's say that an upstream reviewer in my stacked PR chain needs me to change something significant - a fairly normal operation in the course of review. I still have to walk down that chain and update my code accordingly. Having tools to slightly make that easier is nice, but the cost benefit of being on a different opt in toolchain that requires its own learning curve is questionable. | | |
| ▲ | mi_lk a day ago | parent [-] | | > If I'm doing something more complex and storied to the point it requires stacks with dependencies, then I'm questioning why I haven't split and chunked the thing into smaller PR's in the first place and having those reviewed. It looks like you see stack PR as an inherent complex construct, but IMO splitting the implementation into smaller, more digestable and self-contained PRs is what stack PR is about So if you agree that is a better engineering practice, then jj is only a tool that helps you do that without thinking too much about the tool itself |
|
|
|
| ▲ | baq 2 days ago | parent | prev | next [-] |
| Why would you like git and not jj is beyond me, this must be something like two electric charges being the same and repelling themselves. It’s the same underlying data structure with a bit different axioms (conflicts allowed to be committed vs not; working tree is a commit vs isn’t). Turns out these two differences combined with tracking change identity over multiple snapshots (git shas) allow for ergonomic workflows which were possible in git, just very cumbersome. The workflows that git makes easy jj also keeps easy. You can stop yelling at clouds and sleep soundly knowing that there is a tool to reach for when you need it and you’ll know when you need it. |
|
| ▲ | lucianbr 2 days ago | parent | prev | next [-] |
| > you don't have a culture where Yeah, and? Not everyone is in control of the culture of the organization they work in. I suspect most people are not. Is everyone on HN CEOs and CTOs? |
| |
| ▲ | hilariously 2 days ago | parent | next [-] | | No, but there are a lot of them, and principal and staff engineers, and solo folks who would get to set the culture if they ever succeed. A lot of people's taste making comes from reading the online discussions of the engineering literati so I think we need old folks yelling at clouds to keep us grounded. | |
| ▲ | nvader 2 days ago | parent | prev [-] | | Temporarily embarrassed CEOs and CTOs |
|
|
| ▲ | dwroberts 2 days ago | parent | prev [-] |
| I think the unspoken part is that the mess of commits is being produced by agents not people. That’s why it’s always the same confusing hype when it’s discussed, because it’s AI/LLM hype effectively |
| |
| ▲ | surajrmal 2 days ago | parent [-] | | I was in this situation long before llms came along. They may have exacerbated it a bit, but they are not the root cause. |
|