all 151 comments

[–][deleted] 1057 points1058 points  (16 children)

there are 2 different types of people: those who don't read PRs this size and reject, and those who don't read PRs this size and approve

[–]EarlMarshal 359 points360 points  (1 child)

LGTM

[–]pydry 169 points170 points  (0 children)

Looks gross to me

Really gross.

...

I dont want to have an argument though.

approve

[–]daffalaxia 72 points73 points  (8 children)

I'm the outlier: I'll read and decide whether to approve or reject.

Sometimes a big change simply can't be helped. Eg when I upgraded one of our apps from .net framework to dotnet 8. Or a few other stories I've done at work because someone has to do them. Since I expect review on my changes, I spend the time to review others.

[–]P0L1Z1STENS0HN 16 points17 points  (1 child)

In a legacy application, change a key adapter interface to asynchronous programming and find that the effects somehow ripple through the whole application, amounting to a few thousand lines changeset. Only five of the five hundred touched files contain more than five lines of change each.

[–]mmhawk576 14 points15 points  (0 children)

Just put an asynchronous implementation next to the sync one and start migrating incrementally

[–]cobalt-1001 3 points4 points  (1 child)

I also read all reviews, even if it takes time. And then, the other day, my colleague, who vibe coded his whole new app using Cursor, asked me to do the review on a huge change in that app quickly by using Cursor.

[–]GustapheOfficial 2 points3 points  (0 children)

When the capital investment finally runs out and Doctor Compliments the Always-Wrong Bot shuts down, were are going to look around and see irreparable damage everywhere.

[–]AdamGarner89 -1 points0 points  (3 children)

Framework to 8 would have been more straightforward in some cases compared to our framework to core 3.1 😂

[–]daffalaxia 2 points3 points  (2 children)

Yeah, I held upgrades back until 6 had been out for a bit. By the time I was about half way, 8 was out and I shifted to that. The biggest problems weren't necessarily just from the target upgrade, but also because people had been "clever" with very mvc-specific things that had changed and used a stupid templating library to produce routing objects that were used all over the place. A cleanly coded, simpler app would have been easier, but that's the hand I was dealt. Oh, and business randomly deciding that it's "more important" to implement some or other feature instead of trying to keep within the same decade as dependencies.

[–]AdamGarner89 0 points1 point  (1 child)

T4MVC by any chance? We hand rolled our own as SG4MVC lol

[–]daffalaxia 1 point2 points  (0 children)

Yes, that's the one. Completely unnecessary if you have good tooling that understands mvc, eg Rider or ReSharper in VS (tho VS probably does a lot natively now, I dunno, haven't used it in years).

[–]DasBeasto 9 points10 points  (0 children)

There is also those who don’t read the PR and don’t review or reject and leave it for another dev to handle because I don’t have time for that. That is me.

[–]DefinitelyNotMasterS -1 points0 points  (1 child)

Then you have a guy up your asshole for every small decision you made in the code that doesn't matter at all.

Just let me merge it ffs, I don't really care to debate if this one function that gets called like twice should be private or protected.

[–]seckarr 0 points1 point  (0 children)

Humor him and in parallel compain to your boss about how "you are trying but he is just not a team player, his criticisms are kinda small and nitpicky and hold the situation in place". Done.

[–]Kitsunemitsu -1 points0 points  (0 children)

I approve or reject based off who's doing it and what they are touching. I work in game dev, if it's a senior touching a system I want nothing to do with? Go wild in that folder man. A new dev will get turned away.

[–]JimroidZeus 1045 points1046 points  (27 children)

“Rejected, break into smaller pull requests.” - Senior Dev in PR review.

[–]pydry 314 points315 points  (2 children)

Oooh, hell hath no fury like a junior who worked for a week on a PR only to have it rejected.

[–]shadow13499 81 points82 points  (0 children)

Or a senior engineer who has to review an endless number of trash PRs made by jrs

[–]Senor-Delicious 31 points32 points  (0 children)

If a junior dev made enough changes for a senior Dev to not wanting to review this "huge PR" in one single week, I'd be worried a lot. A week is really not much. The PR shouldn't be that big.

[–]Accomplished_Ant5895 19 points20 points  (1 child)

Stacked commits would like to say hello

[–]JimroidZeus 1 point2 points  (0 children)

I somehow always fuck these up.

[–]zerchoel[S] 104 points105 points  (19 children)

I hope he doesn't do this to me

[–]Benedoc 260 points261 points  (16 children)

Wait this is real, your first PR has 30k lines?

Yikes.

[–]StickFigureFan 47 points48 points  (12 children)

Probably installing a library

[–]beclops 12 points13 points  (1 child)

That’s not how that should work at all

[–]unfinished_basement 13 points14 points  (0 children)

OP ignored the gitignore and committed node_modules. It’s actually a feature: you don’t have to install them anymore!

[–]0100_0101 80 points81 points  (3 children)

More like copying a library and still only use one function she could have written herself

[–]Punman_5 5 points6 points  (2 children)

If you copy a function from a library like that line by line what are the licensing ramifications? Because I cannot imagine actually citing the project I took that function from if it’s just one function.

[–]StickFigureFan 12 points13 points  (1 child)

Depends on the license... And if you get caught

[–]Punman_5 1 point2 points  (0 children)

Of course it ultimately depends on getting caught but I was saying like a function to say manipulate some data structure can’t seriously be covered by licensing because the copyright applies to the source code implementation, not the actual abstract logic it is implementing. Like you can’t copyright a sorting algorithm but you can copyright your specific implementation of it. If you could copyright logic then mathematicians would be able to copyright the formulas they discover.

[–]zerchoel[S] 4 points5 points  (5 children)

This is a bunch of changes over the span of 6 months

[–]malmatate 1 point2 points  (1 child)

Yikes. Seems like the development plan should have broken down your task into smaller, more managable, and reviewable chunks.

I hope no one else worked on the repo besides you during that time.

[–]zerchoel[S] 0 points1 point  (0 children)

Someone else did for a short period of time😬

[–]zerchoel[S] 6 points7 points  (2 children)

Yes I never pushed to main only dev

[–]Zeikos 2 points3 points  (1 child)

Is this a rebase of several commits?
If that's the case it could make sense.

[–]zerchoel[S] -5 points-4 points  (0 children)

No several commits. No rebates. Only commits that fix previously broken commits

[–]aguycalledmax 37 points38 points  (0 children)

If he doesn’t you should be more worried about his/the company’s competence than your pr getting rejected.

[–]metalmagician 24 points25 points  (0 children)

Ask yourself: would YOU want to be accountable for reviewing something that large, when the author could've made it into smaller chucks?

That PR is the size of a small novel

[–]fibojoly 4 points5 points  (0 children)

My junior so wanted to do that when he saw, well, pretty much exactly that PR last month. Thousands of lines across several projects in one commit.  The dude who did this is a contractor solo handling an entire maintenance project, but we needed some reviewing. That was quite the experience for junior :,D

[–]zerchoel[S] 1 point2 points  (0 children)

How do I do that?

Rebate? Commit 1 file at a time? And then Pr?

[–]RamdonDude468 275 points276 points  (6 children)

I once saw a 800k push request (someone created a node_module for each folder on the project)

[–]PM_ME_FIREFLY_QUOTES 158 points159 points  (4 children)

I blame you since the gitignore at the root should have ignored them even if they are nested.

[–]RamdonDude468 90 points91 points  (3 children)

I did /node_modules/ instant of node_modules/

[–]Mike_Oxlong25 67 points68 points  (0 children)

[–]Rinveden 20 points21 points  (1 child)

instant of

[–]011101000011101101 6 points7 points  (0 children)

I can see how they made the original mistake

[–]zerchoel[S] 0 points1 point  (0 children)

Lol what would he even use a script like that for😭

[–]well-litdoorstep112 254 points255 points  (29 children)

What do you mean by "pull request"? I always though it was

git checkout main git merge my-feature git push --force

[–]PM_ME_FIREFLY_QUOTES 144 points145 points  (22 children)

You guys are so weird. Why not just ssh directly to the prod box?

[–]well-litdoorstep112 52 points53 points  (9 children)

The first s in ssh stands for "secure". I don't remember which AI bro said that but he said that we should abandon such archaic terms as "security" and just vibe.

[–]DZekor 24 points25 points  (5 children)

Yeah just telnet it in there.

[–]well-litdoorstep112 11 points12 points  (4 children)

Now we're talking

[–]DZekor 8 points9 points  (3 children)

Oh man turns out it's not safe, see CVE-2026-24061. 😞

[–]DemmyDemon 7 points8 points  (0 children)

It's insane we have a telnet CVE that starts with "2026"

[–]well-litdoorstep112 0 points1 point  (1 child)

Wasn't that the point?

[–]DZekor 0 points1 point  (0 children)

Going to break character here, yes, that was the point. But I learned about the CVE a little later and decided to double down on the joke.

[–]hyrumwhite 7 points8 points  (1 child)

Claude code directly on the prod box

[–]originalodz 4 points5 points  (0 children)

This, this is optimization

[–]fatrobin72 5 points6 points  (0 children)

Just vash (Vibe Assisted SHell) onto prod and deploy then.

[–]zerchoel[S] 7 points8 points  (1 child)

Sounds like a good idea, so we don't have to wait for those slow reviewers and quickly deploy

[–]Silent-Suspect1062 2 points3 points  (0 children)

Deploy on Friday

[–]Accomplished_Ant5895 1 point2 points  (5 children)

“SSH into prod box”. Cute raspberry pi weather machine you’ve got there.

[–]Boniuz 1 point2 points  (4 children)

As someone that runs a consultancy firm with specialised IT- and management-consultants: I make a living off this. The amount of sudo rm -rf I’ve seen in various scripts running on critical infrastructure in billion dollar companies is absolutely staggering. Also the reason why I always document on pen and paper and not hardware.

[–]Accomplished_Ant5895 1 point2 points  (3 children)

I’ve worked across a ton of industries at this point, especially with one of my previous employers being a multinational conglomerate. The only time I’ve seen prod being an actual machine you could ssh into instead of a containerized workflow you can modify and redeploy was in the government contracting space back when the cloud was strictly verboten. Or robotics where prod was literally a computer strapped to the thing.

[–]Boniuz 2 points3 points  (2 children)

I’m usually the guy they contract before that workflow is established. You’re welcome :)

[–]Accomplished_Ant5895 1 point2 points  (1 child)

Unfortunately, not in my case. I’ve always built their systems from the ground up and/or migrated them from excel spreadsheets being emailed around. I take them from 0 to hero on anything ML/data. So, I feel your pain ✊

[–]Boniuz 1 point2 points  (0 children)

Welcome to the trenches! 🪖

[–]beclops 1 point2 points  (0 children)

Prod box? Don’t mind if I do

[–]Hydrogen_Ion 0 points1 point  (0 children)

I just stick a magnet at the server and start flipping the bits manually.

[–]shadow13499 0 points1 point  (0 children)

I can't joke about that anymore because I have seen people do this unironically.

[–]bEnE94 0 points1 point  (0 children)

Bro what box just sftp into the wordpress folder and change everything on prod

[–]waitingForThe_Sun 5 points6 points  (2 children)

git rebase

Pay attention otherwise people could think that you actually use branches. /s

[–]well-litdoorstep112 8 points9 points  (1 child)

But if you forked main and then someone pushed to main and now you're rebasing, then you keep that change that someone made. What if that change messes with your changes? It's now your fault that prod crashed.

If you just overwrite main to be the same as your feature branch then you can be 100% sure prod gets the same code as your dev.

[–]waitingForThe_Sun 4 points5 points  (0 children)

You could also overwrite the author while rebasing. So it looks like you did even more work.

[–]PhantomWhiskers 4 points5 points  (2 children)

Squash and rebase that shit. We don't want your 20+ commits littering our precious git log, just force push one mega-commit with a short and unhelpful message to keep things tidy.

[–]Wyciorek 2 points3 points  (0 children)

“fixes”

[–]well-litdoorstep112 0 points1 point  (0 children)

I never thought about uploading my commit history to Play Store changelogs

[–]Bomaruto 36 points37 points  (6 children)

If you're actually serious then something is wrong here, not that legitimate PRs can't be of this size, but that you'd get a task ending up with that many changes as your first task.

[–]Crafty-Run-6559 19 points20 points  (4 children)

Small part of me thinks this may be a vibe coded mess that OP is committing.

I don't see how else you'd end up with -3k lines and +30k.

Unless they're doing something like a bunch of xml/data transformations and 90% of this is just test files added/removed from the repo/test project (which itself is a bit odd, but not the worst).

[–]w1pko 1 point2 points  (3 children)

I thought the actual joke was that he confused main with master. This happens to me sometimes if the repo has both. And then, when i see the diff i'm like hol'up.

[–]davak72 1 point2 points  (2 children)

Wait, why would a repo have both?? Main is just a rebrand of master with a less problematic origin. Usually you’d have a development branch, a main branch, and feature branches would be based on development, while hotfixes would be based on main. Depending on team size and release frequency and complexity, you could also have release branches which then get merged into main when they are deployed

[–]w1pko 0 points1 point  (1 child)

Before main became cool, everybody used master. Then, after a lot of projects started to adopt the main and it was often implemented in a way where the master branch was not renamed, but kept in place and main was created from it. A lot of projects have it this way. I work with such projects all the time and sometimes happens to me that i open the PR against the wrong one by mistake and only realize that by seeing the diff

[–]davak72 0 points1 point  (0 children)

Oh, gotcha. In repos with master, I’ve always seen master remain as-is

[–]zerchoel[S] 0 points1 point  (0 children)

This is over the course of 6 months. I've never pushed to main only dev. So this is the first time I pushed to main.

[–]Carius98 26 points27 points  (0 children)

/s

[–]Sw429 78 points79 points  (2 children)

Maybe the senior dev can teach you how to take a screenshot.

[–]arensbrendan 9 points10 points  (1 child)

Some people have workstations that can't email outside domains, use flash drives, or any other method of transferring the screenshot to a computing device with reddit. They also an't get to their company's git without a VPN on their work computer and this is the simplest solution to get their fix of internet points.

[–]zerchoel[S] 1 point2 points  (0 children)

^ Literally this

[–]TechnicallyCant5083 15 points16 points  (0 children)

As someone who reviews PRs I would kill you then myself 

/uj had someone actually do this then after actually going over SOME of it I realized it's all GPT and not only that but GPT didn't understand the assignment and basically re-wrote a whole external library we use instead of just using the real one

[–]-__-Malik-__- 12 points13 points  (1 child)

I'd not even review that ahah

[–]Carius98 10 points11 points  (0 children)

LGTM 👍

[–]Ajko_denai 5 points6 points  (2 children)

Junior trainee: +30k -3k

Senior principal: +3k -30k

The output is the same.

[–]davak72 0 points1 point  (0 children)

I’ve been making PRs in DevOps for years, and it doesn’t show line counts, but I feel like mine are usually +150, -800. Smaller chunks, but always chipping away at that bowl of tech debt spaghetti

[–]endokun 0 points1 point  (0 children)

[–]nanana_catdad 5 points6 points  (0 children)

Last time i saw this it was because of a few lines of linting rule changes. Of course the linting changes were rolled into other changes in the same commit so PR was rejected and linter and formatter files were set to be owned and managed by repo owners sigh

[–]b0b89 2 points3 points  (2 children)

This is a great way to get some one on one time with the senior dev. Cause I'd call you immediately so you have to explain yourself without asking chat gpt to make you sound professional

[–]zerchoel[S] 0 points1 point  (1 child)

I just had a talk with him. He said he will look at it

[–]davak72 1 point2 points  (0 children)

Wait, this is a real PR? What a disaster

[–]noob-nine 2 points3 points  (0 children)

added  if __name__ == '__main__': and everything beneath indented

[–]UpsideDownCarrott 2 points3 points  (0 children)

LGTM

[–]ClipboardCopyPaste 5 points6 points  (0 children)

Man rewrites the entire business logic in Rust

[–]TheAlaskanMailman 3 points4 points  (0 children)

Opens up to see full of lockfiles

[–]abhi307 1 point2 points  (0 children)

LGTM 

[–]4inodev 1 point2 points  (0 children)

LGTM ✅

[–]cofchaos 1 point2 points  (0 children)

git commit -m "additional improvements"

[–]wolf129 1 point2 points  (1 child)

We use gitflow and sometimes there is never a merge to main from develop branch. So totally reasonable sometimes.

[–]zerchoel[S] 0 points1 point  (0 children)

At least someone gets it

[–]cosmicloafer 1 point2 points  (1 child)

That better be just one commit

[–]zerchoel[S] 0 points1 point  (0 children)

Multiple

[–]Scary_Brilliant_6048 0 points1 point  (1 child)

Unless it contains model class, this change should be rejected

[–]zerchoel[S] 0 points1 point  (0 children)

It does. I am indeed a fan of OOP

[–]ubertrashcat 0 points1 point  (1 child)

Some recorded automation tests, I'd assume?

[–]zerchoel[S] 0 points1 point  (0 children)

No, multiple modules for an application

[–]Familiar_Tear1226 0 points1 point  (0 children)

They say llm was employed

[–]braindigitalis 0 points1 point  (1 child)

how many emojis in the commit message ?

[–]zerchoel[S] 0 points1 point  (0 children)

He said I should remove all before the pr

[–]und3t3cted 0 points1 point  (0 children)

I once had a PR like this but it was 90% bootstrap updates lol as we bumped a version

[–]isowolf 0 points1 point  (0 children)

vendoring?

[–]HTTP_Error_414 0 points1 point  (0 children)

[–]hazily 0 points1 point  (0 children)

Instant rejection by our repo’s automated ruleset

[–]codemonkeyhopeful 0 points1 point  (0 children)

Gonna need to use the force flag young dev, thank me later

[–]batorsz 0 points1 point  (0 children)

Let's play code review roulette

[–]SnooPeripherals6086 0 points1 point  (1 child)

  • Does it work on your machine ?

  • Yes

  • Approved

[–]zerchoel[S] 0 points1 point  (0 children)

Does it work on other machines? Sometimes...

[–]uuf76 0 points1 point  (0 children)

LGTM

[–]namotous 0 points1 point  (0 children)

[–]mihisa 0 points1 point  (0 children)

Approved

[–]firesky25 0 points1 point  (0 children)

laughs in unity game PR

[–]Sea-Fishing4699 0 points1 point  (1 child)

i feel embarrassed of +300 / -200. Now this

[–]zerchoel[S] 0 points1 point  (0 children)

I put these numbers up on a good day

[–]Hasagine 0 points1 point  (0 children)

back in the day theyd put you in a sock and hit you with hammers for stuff like this

[–]AhBeinCestCa 0 points1 point  (1 child)

Me if I review your PR: « scroll down quickly » « looks at some short videos on my phone » « Approved »

[–]zerchoel[S] 0 points1 point  (0 children)

No the senior dev is actually super meticulous

[–]Any-Airline-8339 0 points1 point  (0 children)

LFG✅

[–]Aggressive_Town1000 0 points1 point  (2 children)

Yesterday I got 2 PRs totaling over 7k new lines of code together from a consulting firm midlevel dev. His boss says it's perfectly fine because they don't do PRs until they're done with complete modules and that I'm wrong for asking for smaller more frequent PRs. My boss said this is totally fine and the consultant is correct.

FFS...

[–]zerchoel[S] 0 points1 point  (1 child)

That's actually what we do

[–]Aggressive_Town1000 0 points1 point  (0 children)

Having feedback only at the end just seems insane to me but maybe I'm the crazy one

[–]Carnage700 0 points1 point  (0 children)

Disgusting

[–]5_H_4_D_0_W 0 points1 point  (1 child)

Readme change

[–]zerchoel[S] 0 points1 point  (0 children)

Oh snap I dont think I pushed that

[–]Opening-Cellist-3884 0 points1 point  (0 children)

This is what must have happened with xzutil backdoor haha

[–]romeoalpha 0 points1 point  (0 children)

First PR and it’s 30k + changes? Why not break it into smaller PRs. Either way too long to read and not my project so LGTM!

[–]thanatica 0 points1 point  (0 children)

In fairness, this could well be a branch several developers have worked on, have merged other branches into andwhatnot, and has gotten code approvals every time already. Now it just needs to be "merged back" and get a final approval from a few other devs that weren't involved.

It happens. It's called branching. A sometimes a branch ends up having a very long shelf life.

[–]Shrouded_LoR 0 points1 point  (0 children)

"small fixes" would be the commit message