Join devRant
Do all the things like
++ or -- rants, post your own rants, comment on others' rants and build your customized dev avatar
Sign Up
Pipeless API
From the creators of devRant, Pipeless lets you power real-time personalized recommendations and activity feeds using a simple API
Learn More
Search - "branches"
-
When you stare into git, git stares back.
It's fucking infinite.
Me 2 years ago:
"uh was it git fetch or git pull?"
Me 1 year ago:
"Look, I printed these 5 git commands on a laptop sticker, this is all I need for my workflow! branch, pull, commit, merge, push! Git is easy!"
Me now:
"Hold my beer, I'll just do git format-patch -k --stdout HEAD..feature -- script.js | git am -3 -k to steal that file from your branch, then git rebase master && git rebase -i HEAD~$(git rev-list --count master..HEAD) to clean up the commit messages, and a git branch --merged | grep -v "\*" | xargs -n 1 git branch -d to clean up the branches, oh lets see how many words you've added with git diff --word-diff=porcelain | grep -e '^+[^+]' | wc -w, hmm maybe I should alias some of this stuff..."
Do you have any git tricks/favorites which you use so often that you've aliased them?50 -
Gitkraken because it makes working with branches, submodules, merging, amending, rebasing, squashing, stashing etc. super easy and visual. Especially useful in huge projects.22
-
Git makes it easy to search through historical changes they said. Git is amazing when working in teams they said.
It sure is.
If your coworkers do not commit every time they burp or fart, do not use "🚀" or "✨" or "fix" as a commit message, and do not push all their shitty experimental broken branches without cleaning up.
I'm surprised there are no piles of fecal matter behind their desk chairs.16 -
Unpopular opinion about Microsoft buying GitHub.
Just putting it out there that when you made your github repos you did so under their privacy policy and terms and will be protected under those in the future, and that both GitHub and Microsoft are corporations with the goals of making money.
Are people seriously mad that their code has gone from one capitalist corporation to another, with no foreseeable change in privacy or data policy? I have respect for those that switched to self hosted long ago since that's going from corporate to private, but if you throw away the UX and community GitHub has developed because a multinational corporation (with so many branches, products and divisions, which happens to have a few products you don't like) will soon own it, are you actually making a rational, guided decision?
Also just throwing it out there that GitLab is also a company. They've also had issues with keeping data intact in the past. They do, however, have free private repos (although I can't ever trust someone who gives me "free" privacy) as well as builtin CI. There are some definite upsides to it, although the UX has a ton of differences. If you're expecting the same dashboard and workflow you've used on GitHub, don't, GitLab has cool features but the bells and whistles aren't the exact same.
If you're switching to GitLab solely because of Microsoft, step back and think, regardless of how popular it might make you to hate Microsoft, is it really worth changing your development ecosystem to go from one corporate entity to another solely because you don't like the company?
I use GitLab and GitBub as well as Bitbucket and selfhosted git on a daily basis. They each have their upsides and downsides; but I think switching from one to the other solely because of Microsoft is not only totally irrational, but really makes light of/disrespects the amazing tools and UX the teams behind each one have carefully developed. Pick your Git hosting based on features and what works out for your use case, not because of which corporate overlord has their name plastered on it.
(Also just throwing it out there that lots of devs love VS Code, and that's Microsoft owned too... They did also build and pioneer a bunch of really cool shit for devs including Typescript so it's not like they're evil or incapable in any sense?)11 -
So in Telegram there is this funny little game called Lumberjack where you need to click left and right to cut the branches. My and my fellow students played this in the group. Then I got bored for like 30 minutes and decided to write a little bot which checks where the branches are with pixel detection and sends a left/right click to the window. Imagine my friends faces when all of sudden my score was 500+ and the character ran through this like a fucking jackhammer :D
#justmebeingaprogrammer17 -
Me: So i've cloned the iOS project, i've run carthage, but it won't build.. Have I done something wrong?
Devs: Oh read this doc on github, we do loads of custom stuff. The depenedncy manager can't do it all by itself. You need to run `./scripts/boostrap.sh`
Me (another day): I've switched branches and i'm getting all these errors. Any ideas?
Devs: Ah this happens when someone modifies xyz. Read this pinned slack message. Run `./scripts/bootstrap.sh` again.
Me (another day): I've switched branches again, getting different errors, re-running boostrap didn't fix it.
Devs: Ah yeah, this happens when someone modifies abc. You need to run `./scripts/nuke.sh` and then boostrap when this happens.
Me (another day): Guys When I try to run the prod app its not building any ideas?
Devs: Ah yes have a look at this confluence link. You need to run `./scripts/setup_debug_release.sh`, then nuke, then boostrap and you'll be good.
Me: .... ok
Devs: Oh btw very important! do not commit any changes from `./scripts/setup_debug_release.sh`. It will break everything!
Me: ... no i'm sorry we have a much bigger problem than that. We need to talk ... like right now7 -
Today a Coworker got a little piece of paper acknowledging that he was a Git master, two hours later he fucked up all the branches.6
-
!rant
!!git
Who here uses `master` for development?
My boss (api guy) tried to convince me that was normal practice. I gently told him that it sounded crazy and very very bad.
Here's the dev path I'm enforcing on my repos:
(feature branches) -> dev -> qa* -> master -> production*
*: the build server auto-pulls from these branches, and pushes any passing builds to staging/production.
Everyone works on their own feature branches, and when they're happy with their work, they merge it into `dev`. `dev`, therefore, is for feature integration testing. After everything is working well on `dev`, it gets merged into `qa` for the testers to fawn over and beat with sticks. Anything that passes QA gets merged into `master`, where it sits until we're ready to release it. When that time comes (it's usually right away, but not always), `master` gets merged into `production`.
This way, `master` is always stable and contains the newest code, so it's perfect for forking/etc. Is this standard practice, or should I be doing something different?
Also, api guy encourages something he calls "running a racetrack" -- each dev has their own branch (their initials) and they push to that throughout the day. everyone else pulls from it regularly and pushes to their own branch. When anyone's happy with their code, they push from their (updated) branch to `qa` (I insisted on `dev` instead.)
Supposedly this drastically reduces the number of merge conflicts when pushing to an upstream branch due to having a more recent ancestor node?
I don't quite follow that, but it seems to me that merging/pushing throughout the day would just make them happen sooner? idk.
What are your thoughts?30 -
rant? rant!
I work for a company that develops a variety of software solutions for companies of varying sizes. The company has three people in charge, and small teams that each worked on a certain project. 9 months ago I joined the company as a junior developer, and coincidentally, we also started working on our biggest project so far - an online platform for buying groceries from a variety of vendors/merchants and having them be delivered to your doorstep on the same day (hadn't been done to this scale in Estonia yet). One of the people from management joined the team working on that. The company that ordered this is coincidentally being run by one of the richest men in Estonia. The platform included both the actual website for customers to use, a logistics system for routing between the merchants, the warehouse, and the customers, as well as a bunch of mobile apps for the couriers, warehouse personnel, etc. It was built on Node.js with Hapi (for the backend stuff), Angular 2 (for all the UIs, including the apps which are run through a WebView wrapper), and PostgreSQL (for the database). The deadline for the MVP we (read: the management) gave them, but we finished it in about 7 months in a team of five.
The hours were insane, from 10 AM to 10 PM if lucky. When we weren't lucky (which was half of the time, if not more), we had to work until anywhere from 12 PM to 3 AM, sometimes even the whole night. The weekends weren't any better, for the majority of the time we had to put in even more extra hours on the weekends. Luckily, we were paid extra for them, but the salary was no way near fair (the majority of the team earned about 1000€/mo after taxes in a country where junior developers usually earn 1500€/month). Also because of the short deadline given to us, we skipped all the important parts like writing tests, doing CI, code reviews, feature branching/PR's, etc. I tried pushing the team and the management to at least write tests and make feature branches/PRs, but the management always told me that there wasn't enough time to coordinate and work on all that, that we'll do that after launching the MVP, etc. We basically just wrote features, tested them by hand, and pushed into the "test" branch which would later get tested and merged into master.
During development, one of the other juniors managed to write the worst kind of Angular code you could imagine - enormous amounts of duplication, no reusable components (every view contained the everything used in the view, so popups and other parts that should logically be reusable were in every view separately), fuck - even the HTML was broken (the most memorable for me were the "table > tr > div > td" ones, but that's barely scratching the surface). He left a few months into the project, and we had to build upon his shit, ever so slightly trying to fix the shit he produced. This could have definitely been avoided if we did code reviews.
A month after launching the MVP for internal testing, the guy working on the logistics system had burned out and left the company (he's earning more than twice the salary he got here, happy for him, he is a great coder and an even better team player). This could have been avoided if this project had been planned better, but I can't really blame them, since it was the first project they had at this scale (even though they had given longer deadlines for projects way smaller than this).
After we finished and launched the MVP, the second guy from management joined, because he saw we needed extra help. Again I tried to push us into investing the time to write tests for the system (because at this point we had created an unstable cluster fuck of a codebase), but again to no avail. The same "no time, just test it manually for now, we'll do that later when we have time" bullshit from management.
Now, a few weeks ago, the third guy from management joined. He saw what a disaster our whole project was. Him joining was simply a blessing from the skies. He started off by writing migrations using sequelize. I talked to him about writing tests and everything, and he actually listened. He told me that I'm gonna be the one writing them, and also talked to the rest of management about it. I was overjoyed. I could actually hear the bitterness in the voices of the rest of management when they told me how to write the tests, what to test, etc. But I didn't give a flying rat's ass, I was hapi.
I was told to start off by writing a smoke test for the whole client flow using Puppeteer. I got even happier, since I was finally able to again learn new things (this stopped at about 4 or 5 months into the project).
I'm using jest as the framework and started writing the tests in TypeScript. Later I found a library called jest-extended, but it didn't have type defs, so I decided to write them and, for the first time in my life, contribute to the open source community.19 -
other dev at work: "why cant i switch branch of my SVN repo like Git"
Me: "Cuz it uses different approach, different branches are at different locations......."
Him: "but how can i use it like Git"
Me: "you cant"
Him: "but why"
Me: "Get away from me before i throw something heavy at you"10 -
So I have been merging loads of branches lately for our final release and now it’s affecting my dreams.
I sleep with two pillows, judge me I don’t care. One night I woke up screaming “Why won’t this merge?”
Everyone woke up and it took sometime for me to come to my senses. When my family switched on the light I saw one of my pillows partially shoved into my other pillow’s case.
I need a vacation.5 -
Me: *Installs travis*
Dev: oh what's travis?
Me: it's a continuous integration tool I wanna setup.
Dev: ... contin.... ?
Me: continuous integration, a tool that performs builds.
Dev: ah!, is it the new version of that deprecated tool we were using "client access"?
Me: ... no ... that's an authentication service that generates and stores oauth tokens. This is the continuous integration tool I told you about yesterday (and last week and the week before).
Dev: ... contin....
Me: ... con ........ continuous integration. It listens to branches on GitHub, downloads, builds, tests and then deploys the code.
Dev: ah ok ok, cool.
I would bet my monthly fucking salary he can not repeat what I said, tell me what oauth is, or explain what he's working on at the minute.
Jesus at this rate I'd bet my salary he can't tell me my name.7 -
I stare through the blueish black backgrounds and blurry colorful syntax into a somewhat familiar office within a mirrored world. That damned reflective glass layer covering these meaningless pixels is certainly not on my side.
The rushing sound of transactions flowing through cables is silenced today. Some blood cloth in the invoicing system is zeroing out everything after the currency mark.
While sighing I spin a one-and-a-half pirouette on my desk chair — even when desperate, you shouldn't give up on style — I take three steps away from my screen and try to harmonize my thoughts.
So much noise, everywhere... Noise from within?
I have been stuck at the apogee of an inhale for a while now. Locked into some masochistic constriction, self-punishment for the blindness which stings my ego.
Just fucking take a deep breath you asshole...
I freeze in place, and fall backwards.
Patterns on the creamy drywall rapidly vibrate and synchronize on vivid rhythms of respiration and resonating basslines. Deep indigo rainbows ripple through tiny veins, in-between chalky grains, raining as fine magenta dust through the ceiling frames.
My bare feet slide over soft oscillating concrete, fine flows of unsievable sand surrounded by toes, toes surrounded by streaming variables veiled in obscure vile abstractions.
A jadegreen field of vectored compressions resiliently rumbles and bounces through the clearances and corners of the vibrant concrete office cave, whispering in tongues. I try to voice my woes in little blips and bleeps but I seem to be missing an asymmetric key to their shrouded sequenced speech.
Suddenly, a wild turbulence breaks up all signals.
Joanna floats by in her tipsy effervescent cloud of disordered black hair and alcohol perfume, one hand grasping grapes, her other waving at me.
With every finger she moves a thousand tensors propagating paradoxically flawed but perfect pieces of an intricate surreal picture, sketching whole constellations of possible paths throughout the leafs of the giant Ficus next to her desk.
She stops dead in her tracks, and asks somewhat hypocritically: "Are you high?"
I can not discern the meaning of her words, and respond stoically.
"Joanna! Check out those branches!".
"Pun intended?", she giggles.
I'm focused on her grapeless hand, her fingers stretching to reach the lush little tree.
On touch, the plant shivers, grappled in the tight net of the puppet master. She pulls her strings, applying measured weights, all nodes normalize, and Joanna speaks in an oddly soft tone:
"Isn't it beautiful, how so many models emulate nature"
Her cheek buried in foliage she babbles on about unbalanced search trees and machine learning models... but from the tips of her fingers tables and indexes flow into the plant. Users, payments, tariffs, invoices and taxes crawl over the bark, joining at thicker branches, joining at the stem....
Joining. JOINING. A JOIN.
"IF THERE'S NO FUCKING TAX MULTIPLIER IN THIS LEFT JOIN, EVERYTHING COALESCES TO ZERO" I shout at a perplexed Joanna who squeezes grape juice over her desk. I hop on the beat to my keyboard. She looks puzzled, hugs her Ficus tightly, and reaches for the whiskey bottle behind her monitor.
Attracted by my exclamation, Tom from finance swings open the door, while I push my branch.
I look at Joanna still half hiding between the leaves, and I laugh at her: "Branches! Oh, lame, I finally got it!"
Tom's heavy voice interrupts me: "Does this mean... does this mean that the invoicing bug is resolved?".
I smile at Tom with his tailored suit and waxed hair. "The money is flowing once more. All debts are being settled."
He releases his breath in relief, which he seems to have held since that morning as well.
Joanna adds: "Although I think he is forever indebted to my Ficus".
I nod.14 -
friend: so how are we gonna do this project together? download, edit then upload to google drive again. thats the fastest way.
me: how about git?
friend: what?
me: ill just create a repository and create branches before we merge it with master. no need to go through that process of downloading and uploading multiple times
friend: not sure... what... that.. is.....
me: oh we have a looooong way to go, ill guess ill have to teach u git right from the beginning12 -
This was my day at work today
-Be me at work
-Use git terminal on WORK PROVIDED MacBook
-Decide to clone into a repo into another repo as it was one project inside another project
-Makes changes to code
-Attempts to add .
- warning: adding embedded git repo ...
-Apparently needs submodules
-Shit doesn't get added
-During this get asked to create 2 new branches and modify some code
-Do that specifying files to add as add . breaks everything
-Has 3 branches now detached from master
-Super confused where anything is and what's going on
-Go back to branch for other repo to get added to
-Spends 30 minutes trying to understand submodules
-Gives up and deletes folder moving it elsewhere
-Commits begin failing everywhere. Super confused.
-Get everything figured out and commiting
-Goto merge all branches to master
-Merge conflict with .DS_Store
-FML
I think I'm done guys12 -
I've had many, but this is one of my favorite "OK, I'm getting fired for this" moments.
A new team in charge of source control and development standards came up with a 20 page work-instruction document for the new TFS source control structure.
The source control kingpin came from semi-large military contract company where taking a piss was probably outlined somewhere.
Maybe twice, I merged down from a release branch when I should have merged down from a dev branch, which "messed up" the flow of code that one team was working on.
Each time I was 'coached' and reminded on page 13, paragraph 5, sub-section C ... "When merging down from release, you must verify no other teams are working
on branches...blah blah blah..and if they have pending changes, use a shelfset and document the changes using Document A234-B..."
A fellow dev overheard the kingpin and the department manager in the breakroom saying if I messed up TFS one more time, I was gone.
Wasn't two days later I needed to merge up some new files to Main, and 'something' happened in TFS and a couple of files didn't get merged up. No errors, nothing.
Another team was waiting on me, so I simply added the files directly into Main. Unknown to me, the kingpin had a specific alert in TFS to notify him when someone added
files directly into Main, and I get a visit.
KP: "Did you add a couple of files directly into Main?"
Me:"Yes, I don't what happened, but the files never made it from my branch, to dev, to the review shelfset, and then to Main. I never got an error, but since
they were new files and adding a new feature, they never broke a build. Adding the files directly allowed the Web team to finish their project and deploy the
site this morning."
KP: "That is in direct violation of the standard. Didn't you read the documentation?"
Me: "Uh...well...um..yes, but that is an oddly specific case. I didn't think I hurt any.."
KP: "Ha ha...hurt? That's why we have standards. The document clearly states on page 18, paragraph 9, no files may ever be created in Main."
Me: "Really? I don't remember reading that."
<I navigate to the document, page 18, paragraph 9>
Me: "Um...no, it doesn't say that. The document only talks about merging process from a lower branch to Main."
KP: "Exactly. It is forbidden to create files directly in Main."
Me: "No, doesn't say that anywhere."
KP: "That is the spirit of the document. You violated the spirit of what we're trying to accomplish here."
Me: "You gotta be fracking kidding me."
KP grumbles something, goes back to his desk. Maybe a minute later he leaves the IS office, and the department manager leaves his office.
It was after 5:00PM, they never came back, so I headed home worried if I had a job in the morning.
I decided to come in a little early to snoop around, I knew where HR kept their terminated employee documents, and my badge wouldn't let me in the building.
Oh crap.
It was a shift change, so was able to walk in with the warehouse workers in another part of the building (many knew me, so nothing seemed that odd), and to my desk.
I tried to log into my computer...account locked. Oh crap..this was it. I'm done. I fill my computer backpack with as much personal items as I could, and started down the hallway when I meet one of our FS accountants.
L: "Hey, did your card let you in the building this morning? Mine didn't work. I had to walk around to the warehouse entrance and my computer account is locked. None of us can get into the system."
*whew!* is an understatement. Found out later the user account server crashed, which locked out everybody.
Never found out what kingpin and the dev manager left to talk about, but I at least still had a job.13 -
Git branches be so messed up, Its like sisters are marrying cousin's of brother's aunt's nephew's twice removed conjoined twins.15
-
aslkfjasf. i've spent 12 hours today (and lots more over the past two days) trying to reproduce a bug that my [sort of] coworker insists is present. I haven't seen any proof of it anywhere, let alone steps to reproduce it.
I've poured through the code, following all of its tangled noodles of madness from start to fuck-this-shit. I've read and reread the pile of demon excrement so many times i can still read the code when i close my eyes. so. not. kidding.
anyway, the coworker person is getting mad because i haven't fixed the bug after days, and haven't even reproduced it yet. This feature is already taking way too fucking long so I totally don't blame him. but urghh it's like trying to unwind a string someone tied into a tight little ball of knots because they were bored.
but i just figured out why I haven't been able to reproduce it.
the stupid fucking unreliable dipshit ex-"i'm a rockstar and my code rocks"-CTO buffoon (aka API Guy, aka the `a=b if a!=b`loody pointless waste of mixed spaces and tabs) that wrote the original APIs ... 'kay, i need to stop for breath.
The dumbfuck wrote the APIs (which I based the new ones on mostly wholesale because wtf messy?), but he never implemented a very fucking important feature for a specific merchant type. It works for literally every type except the (soon-to-be) most common one. and it just so happens that i need that very specific feature to reproduce this bug.
Why is that one specific merchant type handled so differently? No fucking idea.
But exactly how they're handled differently is why I'm so fking pissed off. It's his error checking. (Some) of his functions return different object types (hash, database object, string, nullable bool, ...) depending on what happened. like, when creating a new gift, it (eventually...) either returns a new Gift object or a string error basically saying "ahhh everything's broken again!" -- which is never displayed, compared against, or recorded anywhere, ofc. Here, the API expects a Hash. That particular function call *always* returns a Hash, no matter what happens in the myriad, twisting, and interwoven branches the code could take. So the check is completely pointless.
EXCEPT. if an object associated with another object associated with the passed object (yep) has a type of 8. in which case, one of the methods in the chain returns a PrintQueue that gets passed back up the call stack. implicitly, and nested three levels in. ofc.
And if the API doesn't get its precious Hash, it exclaims that the merchant itself is broken, and tells the user to contact support. despite, you know, the PrintQueue showing that everything worked perfectly. In fact, that merchant's printer will be happily printing away in the background.
All because type checking is this guy's preferred method of detecting errors. (Raise? what's that? OOP? Nah, let's do diverging splintered-monolithic with some Ruby objects thrown in.)
just.
what the crap.
people should keep their mental diarrhea away from their keyboards.
Anyway. the summary of this long-winded, exhaustion-fueled tirade is that our second-most-loved feature doesn't work on our second-most-common merchant type.
and ofc that was the type of merchant i've been testing on. for days. while having both a [semi] coworker and my boss growing increasingly angry at me for my lack of progress.
It's also a huge feature, and the boss doesn't understand that. (can't or won't, idk)
So.
yep.
that's been my week.
...... WHAT A FUCKING BUFFOON!rant sheogorath's spaghetti erroneous error management vomit on her sweater already your face is an anti-pattern dipshit api guy two types bad four types good root swears oh my3 -
I wrote a database migration to add a column to a table and populated that column upon record creation.
But the code is so freaking convoluted that it took me four days of clawing my eyes out to manage this.
BUT IT'S FINALLY DONE.
FREAKING YAY.
Why so long, you ask? Just how convoluted could this possibly be? Follow my lead ~
There's an API to create a gift. (Possibly more; I have no bloody clue.)
I needed the mobile dev contractor to tell me which APIs he uses because there are lots of unused ones, and no reasoning to their naming, nor comments telling me what they do.
This API takes the supplied gift params, cherry-picks a few bits of useful data out (by passing both hashes by reference to several methods), replaces a couple of them with lookups / class instances (more pass-by-reference nonsense). After all of this, it logs the resulting (and very different) mess, and happily declares it the original supplied params. Utterly useless for basically everything, and so very wrong.
It then uses this data to call GiftSale#create, which returns an instance of GiftSale (that's actually a Gift; more on that soon).
GiftSale inherits from Gift, and redefines three of its methods.
GiftSale#create performs a lot of validations / data massaging, some by reference, some not. It uses `super` to call Gift#create which actually maps to the constructor Gift#initialize.
Gift#initialize calls Gift#pre_init (passing the data by reference again), which does nothing and returns null. But remember: GiftSale inherits from Gift, meaning GiftSale#pre_init supersedes Gift#pre_init, so that one is called instead. GiftSale#pre_init returns a Stripe charge object upon success, or a Gift (and a log entry containing '500 Internal') upon failure. But this is irrelevant because the return value is never actually used. Pass by reference, remember? I didn't.
We're now back at Gift#initialize, Rails finally creates a Gift object using the args modified [mostly] in-place by all of the above.
Another step back and we're at GiftSale#create again. This method returns either the shiny new Gift object or an error string (???), and the API logic branches on its type. For further confusion: not all of the method's returns are explicit, and those implicit return values are nested three levels deep. (In Ruby, a method will return the last executed line's return value automatically, allowing e.g. `def add(a,b); a+b; end`)
So, to summarize: GiftSale#create jumps back and forth between Gift five times before finally creating a Gift instance, and each jump further modifies the supplied params in-place.
Also. There are no rescue/catch blocks, meaning any issue with any of the above results in a 500. (A real 500, not a fake 500 like last time. A real 500, with tragic consequences.)
If you're having trouble following the above... yep! That's why it took FOUR FREAKING DAYS! I had no tests, no documentation, no already-built way of testing the API, and no idea what data to send it. especially considering it requires data from Stripe. It also requires an active session token + user data, and I likewise had no login API tests, documentation, logging, no idea how to create a user ... fucking hell, it's a mess.)
Also, and quite confusingly:
There's a class for GiftSale, but there's no table for it.
Gift and GiftSale are completely interchangeable except for their #create methods.
So, why does GiftSale exist?
I have no bloody idea.
All it seems to do is make everything far more complicated than it needs to be.
Anyway. My total commit?
Six lines.
IN FOUR FUCKING DAYS!
AHSKJGHALSKHGLKAHDSGJKASGH.7 -
It's enough. I have to quit my job.
December last year I've started working for a company doing finance. Since it was a serious-sounding field, I tought I'd be better off than with my previous employer. Which was kinda the family-agency where you can do pretty much anything you want without any real concequences, nor structures. I liked it, but the professionalism was missing.
Turns out, they do operate more professionally, but the intern mood and commitment is awful. They all pretty much bash on eachother. And the root cause of this and why it will stay like this is simply the Project Lead.
The plan was that I was positioned as glue between Design/UX and Backend to then make the best Frontend for the situation. Since that is somewhat new and has the most potential to get better. Beside, this is what the customer sees everyday.
After just two months, an retrospective and a hell lot of communication with co-workers, I've decided that there is no other way other than to leave.
I had a weekly productivity of 60h+ (work and private, sometimes up to 80h). I had no problems with that, I was happy to work, but since working in this company, my weekly productivity dropped to 25~30h. Not only can I not work for a whole proper work-week, this time still includes private projects. So in hindsight, I efficiently work less than 20h for my actual job.
The Product lead just wants feature on top of feature, our customers don't want to pay concepts, but also won't give us exact specifications on what they want.
Refactoring is forbidden since we get to many issues/bugs on a daily basis so we won't get time.
An re-design is forbidden because that would mean that all Screens have to be re-designed.
The product should be responsive, but none of the components feel finished on Desktop - don't talk about mobile, it doesn't exist.
The Designer next to me has to make 200+ Screens for Desktop and Mobile JUST so we can change the primary colors for an potential new customer, nothing more. Remember that we don't have responsiveness? Guess what, that should be purposely included on the Designs (and it looks awful).
I may hate PHP, but I can still work with it. But not here, this is worse then any ecommerce. I have to fix legacy backend code that has no test coverage. But I haven't touched php for 4 years, letalone wrote sql (I hate it). There should be no reason whatsoever to let me do this kind of work, as FRONTEND ARCHITECT.
After an (short) analysis of the Frontend, I conclude that it is required to be rewritten to 90%. There have been no performance checks for the Client/UI, therefor not only the components behave badly, but the whole system is slow as FUCK! Back in my days I wrote jQuery, but even that shit was faster than the architecuture of this React Multi-instance app. Nothing is shared, most of the AppState correlate to other instances.
The Backend. Oh boy. Not only do we use an shitty outated open-source project with tons of XSS possibillities as base, no we clone that shit and COPY OUR SOURCES ON TOP. But since these people also don't want to write SQL, they tought using Symfony as base on top of the base would be an good idea.
Generally speaking (and done right), this is true. but not then there will be no time and not properly checked. As I said I'm working on Legacy code. And the more I look into it, the more Bugs I find. Nothing too bad, but it's still a bad sign why the webservices are buggy in general. And therefor, the buggyness has to travel into the frontend.
And now the last goodies:
- Composer itself is commited to the repo (the fucking .phar!)
- Deployments never work and every release is done manually
- We commit an "_TRASH" folder
- There is an secret ongoing refactoring in the root of the Project called "_REFACTORING" (right, no branches)
- I cannot test locally, nor have just the Frontend locally connected to the Staging webservices
- I am required to upload my sources I write to an in-house server that get's shared with the other coworkers
- This is the only Linux server here and all of the permissions are fucked up
- We don't have versions, nor builds, we use the current Date as build number, but nothing simple to read, nonono. It's has to be an german Date, with only numbers and has always to end with "00"
- They take security "super serious" but disable the abillity to unlock your device with your fingerprint sensor ON PURPOSE
My brain hurts, maybe I'll post more on this shit fucking cuntfuck company. Sorry to be rude, but this triggers me sooo much!2 -
TFW your client's git policies are so draconian that the dev teams use "develop" as trunk, and completely ignore the release process.
I wrote up 50 pages of git standards, documentation and procedure for a client. Bad indian director 9000 decides the admin (also Indian) who specializes in Clearcase and has no git or development experience is more qualified to decide and let's him set the policy.
FF to today:
- documentation, mostly contradictory, is copy pasted from the atlassian wiki
- source tree is the standard
- no force pushing of any branches, including work branches
- no ff-merge
- no rebasing allowed
- no ssh, because he couldn't figure it out...errr it's "insecure"
- all repos have random abbreviated names that are unintelligible
- gitflow, but with pull requests and no trust
- only project managers can delete a branch
- long lived feature branches
- only projects managers can conduct code reviews
- hotfixes must be based off develop
- hotfixes must go in the normal release cycle
- releases involve creating a ticket to have an admin create a release branch from your branch, creating a second ticket to stage the PR, a third ticket to review the PR (because only admins can approve release PRs), and a fourth ticket to merge it in
- rollbacks require director signoff
- at the end of each project the repo must be handed to the admin on a burned CD for "archiving"
And so no one actually uses the official release process, and just does releases out of dev. If you're wondering if IBM sucks, the answer is more than you can possibly imagine.11 -
As we may all messed up a (git) repo at the begininng, do you know the surge of adrenalin right before pushing your committed changes or merging branches?2
-
git blame
More like
git whose line is it anyway
Where commit messages are made up and the branches don't matter1 -
Colleague: Just commit to the current branch so we don't ruin the dev-branch
Me: We could also just create a new branch?
Colleague: No use this one, branches don't "grow on trees"
Me: *facepalm*...5 -
Some how somebody managed to fill our repo with the following branches:
Origin/master
Origin/origin/master
Origin/origin/origin/master
Origin/origin/origin/origin/master9 -
Oh no, oooooh nononono
they dont delete the branches after a pull request
232 branches? hhhhhhhhhhhhhhhhhhhno
and look at that naming
im intimidated, i dont want to work in this environment. No. NO!7 -
When I first started using Git, I didn't understand the purpose of the 'commit message' and branches.
So I automated the 'git add .', 'git commit -m "update"' and 'git push origin master' so I could update my git repo faster, with one command 😂1 -
Just found this while trying to understand some code:
```
bool ok = true;
if(ok) {
// lots of code here
} else {
// even more code here
}
```
I thought this was worth my first rant...6 -
1. My senior told me that my code is crashing.
2. I check the code and told him that it is not my doing. As there was lots of nested if-else as I prefer to keep a variable and update it in if conditions. Like a filters rather than trees with branches. What I say, I knew my coding style.
3. Then he show me my git commit and I am having existential crises.
Am I missing days? How can I? I mean was I abducted and in mean time some alien took my place and they placed this memory of me coding?
Ah! man I think I am possessed by some inexperienced developer. I seriously need some fucked up crash to exorcise him.3 -
I never really used Git or any Source Control before but today I decided yo give it a shot.
IT'S FUCKING AMAZING!!
I fucking love branches!!! I have to change the way an app stores configurations and git makes it incrediblyyy easy without risking fucking up everything in production5 -
"WTH! Get the fuck out of here, bitch!!".
I started a new job today (remote) and my first task was to improve product sign-up process, basically the UX is shit and the backend is even worse, never felt so bad looking at terrible software design my entire life and career. My first assignment was to introduce some sanity. (Mr. Supervisor's exact words)
Anyway, I report directly to upper management but need to get onboarded by current technology expert who's highly skilled at writing shitty code and is also stupid, literally.
It took the whole day to get him to grant access to the private repo in order to start working but that's not the story.
So, I'm seated, demoralised about the structure of software I have to work on and here I was refreshing localhost:7878 consistently and was consistently getting the message:
"WTH! Get the fuck out of here, bitch!!".
So, this same codebase I have is suppose to be the exact same one that's powering the app in production. I was furious and confused. Is stupid calling me a bitch already??? He wants to fuck??? What the hell!!!
I called him and turns out, I was suppose to switch branches. The branch I had was suppose to show that message intentionally (??!???!???) (His words exactly), I couldn't even muster the words "Why" completely before he hung up.
So basically, I got onboarded today. Quite successfully, I must add, because I know exactly the battlesuit I have to wear to my new remote job going forward!11 -
When you unfuck a git repo with many parallel branches that have cross bred much more than European royal families.2
-
After changing a file, 'git add .' showed that everything is already up to date. I spent half an hour looking through my project structure and git branches. The reason? I forgot to save that file.1
-
Greetings from Denmark! Thought I would join after a lot of lurking, and tell a little story, as to how I fucked up when I started in my company.
I've been there around 10 days and had never used git besides just add, commit, and push. I was told to work in feature branches, and I did, I was playing around trying to learn, and got some merge conflicts, made a lot of unnecessary commits etc. I was told to clean it up before I merged into dev. And as I didn't know git I asked how I could do that. I was told I could force push in my branch, and that it was okay as long as it was only inside my branch. I tried that and saw my command line force pushing to all branches including dev, and master. My heart skipped a couple of beats, and I went directly to my Lead developer and asked what happend. He got a bit mad at me for pushing in dev and master, and override all the commits there had been made. I tried to explain I didn't he did not really believe me, I was so nervous. Luckily everything came back to normal with people's local branches being pushed etc. But that day I learned about git's push matching config, and my lead was luckily only mad in the heat of the moment and even apologized for getting mad. Just one of my little fuck up's in my short time as a developer7 -
*** writes unit tests with great zeal and fervor ***
IDE is reporting 85% line coverage, woohoo!
*** grins like a bastard, thinks it's perhaps time to stop and celebrate ***
*** runs branch/conditional coverage... ***
37%
*** facepalm ***3 -
I’m on this ticket, right? It’s adding some functionality to some payment file parser. The code is atrocious, but it’s getting replaced with a microservice definitely-not-soon-enough, so i don’t need to rewrite it or anything, but looking at this monstrosity of mental diarrhea … fucking UGH. The code stink is noxious.
The damn thing reads each line of a csv file, keeping track of some metadata (blah blah) and the line number (which somehow has TWO off-by-one errors, so it starts on fucking 2 — and yes, the goddamn column headers on line #0 is recorded as line #2), does the same setup shit on every goddamned iteration, then calls a *second* parser on that line. That second parser in turn stores its line state, the line number, the batch number (…which is actually a huge object…), and a whole host of other large objects on itself, and uses exception throwing to communicate, catches and re-raises those exceptions as needed (instead of using, you know, if blocks to skip like 5 lines), and then writes the results of parsing that one single line to the database, and returns. The original calling parser then reads the data BACK OUT OF THE DATABASE, branches on that, and does more shit before reading the next line out of the file and calling that line-parser again.
JESUS CHRIST WHAT THE FUCK
And that’s not including the lesser crimes like duplicated code, misleading var names, and shit like defining class instance constants but … first checking to see if they’re defined yet? They obviously aren’t because they aren’t anywhere else in the fucking file!
Whoever wrote this pile of fetid muck must have been retroactively aborted for their previous crimes against intelligence, somehow survived the attempt, and is now worse off and re-offending.
Just.
Asdkfljasdklfhgasdfdah28 -
I spent four hours just getting my dev environment working again today.
Whenever I switch branches on this project, I keep to run a script that does migrations, seed data, test db setup, static test info, etc. etc. etc. It takes 12-15 minutes to run.
Today, that script failed.
Apparently one of its steps requires running some of the project's code to produce valid objects. Makes sense. However, my ticket involves breaking a crapton of models (removing accessors) which I've already done, and then patching the behavior, which I haven't. Which means a lot of things are currently broken. Makes sense why the script fails.
However, I can't run the script on a different branch and then switch back because that simply doesn't work (for reasons), so I needed to find some workaround. I eventually did, but every attempt cost me 12 minutes.
Today was not fun, and certainly not productive.
I wonder when they're going to fire me 😅7 -
!rant
!!pride
I tried finding a gem that would give me a nice, simple diff between two hashes, and also report any missing keys between them. (In an effort to reduce the ridiculous number of update api calls sent out at work.)
I found a few gems that give way too complicated diffs, and they're all several hundred lines long. One of them even writes the diff out in freaking html with colors and everything. it's crazy. Several of the simpler ones don't even support nesting, and another only diffs strings. I found a few possibly-okay choices, but their output is crazy long, and they are none too short, either.
Also, only a few of them support missing keys (since hashes in Ruby return `nil` by default for non-defined keys), which would lead to false negatives.
So... I wrote my own.
It supports diffing anything with anything else, and recurses into anything enumerable. It also supports missing keys/indexes, mixed n-level nesting, missing branches, nil vs "nil" with obvious output, comparing mixed types, empty objects, etc. Returns a simple [a,b] diff array for simple objects, or for nested objects: a flat hash with full paths (like "[key][subkey][12][sub-subkey]") as top-level keys and the diff arrays as values. Tiny output. Took 36 lines and a little over an hour.
I'm pretty happy with myself. 😁6 -
Well... I had in over 15 years of programming a lot of PHP / HTML projects where I asked myself: What psychopath could have written this?
(PHP haters: Just go trolling somewhere else...)
In my current project I've "inherited" a project which was running around ~ 15 years. Code Base looked solid to me... (Article system for ERP, huge company / branches system, lot of other modules for internal use... All in all: Not small.)
The original goal was to port to PHP 7 and to give it a fresh layout. Seemed doable...
The first days passed by - porting to an asset system, cleaning up the base system (login / logout / session & cookies... you know the drill).
And that was where it all went haywire.
I really have no clue how someone could have been so ignorant to not even think twice before setting cookies or doing other "header related" stuff without at least checking the result codes...
Basically the authentication / permission system was fully fucked up. It relied on redirecting the user via header modification to the login page with an error set in a GET variable...
Uh boy. That ain't funny.
Ported to session flash messages, checked if headers were sent, hard exit otherwise - redirect.
But then I got to the first layers of the whole "OOP class" related shit...
It's basically "whack a mole".
Whoever wrote this, was as dumb and as ignorant to build up a daisy chain of commands for fixing corner cases of corner cases of the regular command... If you don't understand what I mean, take the following example:
Permissions are based on group (accumulation of single permissions) and single permissions - to get all permissions from a user, you need to fetch both and build a unique array.
Well... The "names" for permissions are not unique. I'd never expected to be someone to be so stupid. Yes. You could have two permissions name "article_search" - while relying on uniqueness.
All in all all permissions are fetched once for lifetime of script and stored to a cache...
To fix this corner case… There is another function that fetches the results from the cache and returns simply "one" of the rights (getting permission array).
In case you need to get the ID of the other (yes... two identifiers used in the project for permissions - name and ID (auto increment key))...
Let's write another function on top of the function on top of the function.
My brain is seriously in deep fried mode.
Untangling this mess is basically like getting pumped up with pain killers and trying to solve logic riddles - it just doesn't work....
So... From redesigning and porting from PHP 7 I'm basically rewriting the whole base system to MVC, porting and touching every script, untangling this dumb shit of "functions" / "OOP" [or whatever you call this garbage] and then hoping everything works...
A huge thanks to AURA. http://auraphp.com/
It's incredibily useful in this case, as it has no dependencies and makes it very easy to get a solid ground without writing a whole framework by myself.
Amen.2 -
Git gets easier once you understand branches are homeomorphic endofunctors mapping submanifolds of a Hilbert space.4
-
My teammate push 2gbs worth of CSV files into our repo.
He also merged all the other branches so, it's kinda hard to revert back without reworking a lot of stuff.3 -
Finished my project early today. I assumed it would take another day or two since it's primarily research and I had no idea how to progress, but I caught a break and finished it early. I also finished another surprise ticket! yay! I had the rest of the day to myself!
... had!
But then I noticed I had been working on the wrong branch. Fuck. Moving my work over was tedious, as was the cleanup. I kicked myself for good measure. Also, every time I switch branches, I need to run a bloody slow script that runs all the migrations, data tasks, backfills, etc. for the branch. It takes 12-18 minutes. There's a faster version, but it usually breaks things.
Turns out the branch I was supposed to be working on wasn't up to date with master. So I merged that in, leading to....
merge conflicts. Because of course there are conflicts. To make matters worse, I had (and have) no idea which changes were correct because idfk what those 248 new commits are doing. So I guessed at them, ran the script, and (after more waiting) ran a few related specs. Yet more waiting. Sense a pattern here? Eventually they finished, and all the specs passed. H'ray. So I committed the changes, and told Jenkins to kick off a full spec suite, which takes 45+ minutes.
La de da, I go back to cleaning up the previous ticket, pushing reversion commits, etc. Later, I notice the ticket number, look at the branch number I've been working on.... and. Fuuuck. I realize I had put everything on the wrong freaking branch AGAIN. I'm such an idiot. Cue more cleanup, more reversions, running the bloody script again and again. More wasted time, more kicking. ugh.
All of this took well over three hours. So instead of finishing at a leisurely 5:00 like a normal person, I finally stopped around 9pm. and I won't know the Jenkins spec results until morning.
A nice early day?
I should know better.2 -
Got pretty peeved with EU and my own bank today.
My bank was loudly advertising how "progressive" they were by having an Open API!
Well, it just so happened I got an inkling to write me a small app that would make statistics of the payments going in and out of my account, without relying on anything third-party. It should be possible, right? Right?
Wrong...
The bank's "Open API" can be used to fetch the locations of all the physical locations of the bank branches and ATMs, so, completely useless for me.
The API I was after was one apparently made obligatory (don't quote me on that) by EU called the PSD2 - Payment Services Directive 2.
It defines three independent APIs - AISP, CISP and PISP, each for a different set of actions one could perform.
I was only after AISP, or the Account Information Service Provider. It provides all the account and transactions information.
There was only one issue. I needed a client SSL certificate signed by a specific local CA to prove my identity to the API.
Okay, I could get that, it would cost like.. $15 - $50, but whatever. Cheap.
First issue - These certificates for the PSD2 are only issued to legal entities.
That was my first source of hate for politicians.
Then... As a cherry on top, I found out I'd also need a certification from the local capital bank which, you guessed it, is also only given to legal entities, while also being incredibly hard to get in and of itself, and so far, only one company in my country got it.
So here I am, reading through the documentation of something, that would completely satisfy all my needs, yet that is locked behind a stupid legal wall because politicians and laws gotta keep the technology back. And I can't help but seethe in anger towards both, the EU that made this regulation, and the fact that the bank even mentions this API anywhere.
Seriously, if 99.9% of programmers would never ever get access to that API, why bother mentioning it on your public main API page?!
It... It made me sad more than anything...6 -
It horrifies me how many "senior developers" in our company do not understand branching in code repositories....9
-
Me and my friend (let's call him Tom) have done tons of projects before and got some decent knowledge, but we got a dude (Bob) working with us on that final project of Uni and he doesn't know what Git is nor what frameworks are so we chose CodeIgniter ONLY to make it easy for him.
2 month after starting the project and getting like half of the work done (mainly me and Tom) Bob 'kind of' learned PHP, CodeIgniter and Git so he wanted to contribute because the project manager will review all the commits done weekly.
So Bob did some HTML (what now?) and wanted to push it on the repo and even using Gitkraken as opposed to the Git CLI he managed to merge two f*** branches, and when he doesn't mess up the repo he totally ignores the files' structure of the project and makes his own thing.
Worst thing is, when Tom tries (I gave up a long time ago) to teach him something or to give him advice he's all like "Oh okay" "Yeah" "Got it!" but he doesn't understand anything and he won't admit it ! It's like talking to a wall...2 -
I'm a software developer. Last week I spent half a day teaching a "Senior Data Scientist" how to use git branches. I spent the other half a day teaching him how to use Jira. Now I'm being told that the dev team isn't raising enough Pull Requests. FML
-
Got so many. (remember where I am from? 😁) Gonna share my favorite first.
X : I want a web app that my staffs can use and update data from different branches.
Me : Ok I can development such project.
X : But I want them it offline so they can use the app even with slow internet or no internet.
Me : 💀
// The data are shared across the branches BTW.5 -
Init and Hello. My name is git and this is my story.
I just arrived in this system recently by the apt highway. It's not the only way though. Some for example used the npm hype-train, others arrived from the ssh shore. No matter where we came from the next step on our agenda was time to introduce our self at the event destined for all new-comers to the system.
"As many of you I reside in the usr-bin district. I'm really into history and commitment! I like it when people work together, so I'm always eager to bring all branches together."
"But what is it actually good for?", asked Curl, which I already met at the bus station. Many nodded in agreement. It was odd. Somehow I felt not quite at home. All the others seemed so different based on their field of work.
"We have worked here in a really agile environment for ages. There is no need for any kind of strange bureaucracy.", said another voice.
All attempts to convince them from the beauty of history or a little bit of management were unsuccessful. It was just the beginning of a not so interesting stage in my life - to say the least.
Today was another of 'those' days. I live in this community for quiet a while now and unfortunately nothing really changed - at least for the good. I sat on my branch of the tree with all the others around and there was nothing really to do for me. Again. I mean, actually it's true. I have to admit it. There is just no work on this world for someone like me. All the others seem to be so busy, while I just have to sit around and question my own existence. Since I grew tired asking these questions to myself, I stopped it. I can't do a thing actually. That's not how this world works.
"Hey fagit, anything meaningful to add to our delightful conversation?", nginx shouted over to me from another branch of the tree. Before I was able to give an indifferent answer the voice just continued.
"Oh, sorry. I forgot that you have no purpose after all. Well, never mind!"
Everyone started laughing at me. It was not too bad by the way. Actually, this was quite ordinary. These fucktards completely ran out of creativity. If it wasn't for that mere emptiness gaping right above my guts, I'd actually be disappointed. I even got accustomed to the alias 'fagit'. Quiet sad given the fact that i really like my real name. If only someone would mind using it... First too quiet to notice but growing in intensity a rumbling emerged from somewhere deep within the tree. Out of a sudden everyone stopped laughing. The voices slowly faded while the growling from afar grew louder. It had come. Not more than a shadow reached out from the tree and faster than anyone could comprehend nginx was simply gone. Killed in an instance.
Disclaimer: This story is fictional. No systems were harmed in its creation.3 -
> Worst work culture you've experienced?
It's a tie between my first to employers.
First: A career's dead end.
Bosses hardly ever said the truth, suger-coated everything and told you just about anything to get what they wanted. E.g. a coworker of mine was sent on a business trip to another company. They had told him this is his big chance! He'd attend a project kick-off meeting, maybe become its lead permanently. When he got there, the other company was like "So you're the temporary first-level supporter? Great! Here's your headset".
And well, devs were worth nothing anyway. For every dev there were 2-3 "consultants" that wrote detailed specifications, including SQL statements and pseudocode. The dev's job was just to translate that to working code. Except for the two highest senior devs, who had perfect job security. They had cooked up a custom Ant-based build system, had forked several high-profile Java projects (e.g. Hibernate) and their code was purposely cryptic and convoluted.
You had no chance to make changes to their projects without involuntarily breaking half of it. And then you'd have to beg for a bit of their time. And doing something they didn't like? Forget it. After I suggested to introduce automated testing I was treated like a heretic. Well of course, that would have threatened their job security. Even managers had no power against them. If these two would quit half a dozen projects would simply be dead.
And finally, the pecking order. Juniors, like me back then, didn't get taught shit. We were just there for the work the seniors didn't want to do. When one of the senior devs had implemented a patch on the master branch, it was the junior's job to apply it to the other branches.
Second: A massive sweatshop, almost like a real-life caricature.
It was a big corporation. Managers acted like kings, always taking the best for themselves while leaving crumbs for the plebs (=devs, operators, etc). They had the spacious single offices, we had the open plan (so awesome for communication and teamwork! synergy effects!). When they got bored, they left meetings just like that. We... well don't even think about being late.
And of course most managers followed the "kiss up, kick down" principle. Boy, was I getting kicked because I dared to question a decision of my boss. He made my life so hard I got sick for a month, being close to burnout. The best part? I gave notice a month later, and _he_still_was_surprised_!
Plebs weren't allowed anything below perfection, bosses on the other hand... so, I got yelled at by some manager. Twice. For essentially nothing, things just bruised his fragile ego. My bosses response? "Oh he's just human". No, the plebs was expected to obey the powers that be. Something you didn't like? That just means your attitude needs adjustment. Like with the open plan offices: I criticized the noise and distraction. Well that's just my _opinion_, right? Anyone else is happily enjoying it! Why can't I just be like the others? And most people really had given up, working like on a production line.
The company itself, while big, was a big ball of small, isolated groups, sticking together by office politics. In your software you'd need to call a service made by a different team, sooner or later. Not documented, noone was ever willing to help. To actually get help, you needed to get your boss to talk to their boss. Then you'd have a chance at all.
Oh, and the red tape. Say you needed a simple cable. You know, like those for $2 on Amazon. You'd open a support ticket and a week later everyone involved had signed it off. Probably. Like your boss, the support's boss, the internal IT services' boss, and maybe some other poor sap who felt important. Or maybe not, because the justification for needing that cable wasn't specific enough. I mean, just imagine the potential damage if our employees owned a cable they shouldn't!
You know, after these two employers I actually needed therapy. Looking back now, hooooly shit... that's why I can't repeat often enough that we devs put up with way too much bullshit.3 -
I was asked to look into a site I haven't actively developed since about 3-4 years. It should be a simple side-gig.
I was told this site has been actively developed by the person who came after me, and this person had a few other people help out as well.
The most daunting task in my head was to go through their changes and see why stuff is broken (I was told functionality had been removed, things were changed for the worse, etc etc).
I ssh into the machine and it works. For SOME reason I still have access, which is a good thing since there's literally nobody to ask for access at the moment.
I cd into the project, do a git remote get-url origin to see if they've changed the repo location. Doesn't work. There is no origin. It's "upstream" now. Ok, no biggie. git remote get-url upstream. Repo is still there. Good.
Just to check, see if there's anything untracked with git status. Nothing. Good.
What was the last thing that was worked on? git log --all --decorate --oneline --graph. Wait... Something about the commit message seems familiar. git log. .... This is *my* last commit message. The hell?
I open the repo in the browser, login with some credentials my browser had saved (again, good because I have no clue about the password). Repo hasn't gotten a commit since mine. That can't be right.
Check branches. Oh....Like a dozen new branches. Lots of commits with text that is really not helpful at all. Looks like they were trying to set up a pipeline and testing it out over and over again.
A lot of other changes including the deletion of a database config and schema changes. 0 tests. Doesn't seem like these changes were ever in production.
...
At least I don't have to rack my head trying to understand someone else's code but.... I might just have to throw everything that was done into the garbage. I'm not gonna be the one to push all these changes I don't know about to prod and see what breaks and what doesn't break
.
I feel bad for whoever worked on the codebase after me, because all their changes are now just a waste of time and space that will never be used.3 -
The GitHub graphql API is pretty neat, mostly because it's a great example of a product where graphql has advantages over REST. As a code reviewer for repos with hundreds of simultaneous PRs, I use it to filter through branches for stuff that needs my attention the most.
NewRelic's NRQL API is also quite nice, as it provides an unusual but very direct interface into the underlying application metrics.
I'm also a big fan of launchlibrary, purely because I love spaceflight, and their API is an extremely rich and actively maintained resource. This makes it a great data source for playing around with plotting & statistics libraries — when I'm learning new languages or tools, I prefer to make something "real" rather than following a tutorial, and I often use launchlibrary as a fun and useful data backend. -
Still have access to my last companies github. Went snooping and saw main branches ahead and behind in commits from dev branches.
Decided to look into the PRs, and found this gem from my incompetent old VP of engineering.
Same guy who fired all the developers to save on money, and then contracted us back to do our jobs at 3x the rate. Basically a business savant!4 -
So this is what happened!
It was a rainy Friday, I was asked to add a quick bug fix to a js application, I spent my Friday coding, testing ..., baam the patch is ready ... I wrote a nice commit message explains the problem and the fix but I didn't push the code.
On Monday the fuckin code disappeared, no commit no code no nothing no trace ... To be honest I don't know what happened. I rewrote everything on that Money morning (you can only imagine how pest I was)
I use vim with tmux.
I have done everything I could to figure out what happened to that commit, I even doubted If had did wrote the fix that Friday, but it's not possible to forget few hours of a day
I checked my commit history on the different branches i did everything
No trace ...
Conclusion
My machine is hunted ...
Or I have multiple personalities and one of them is a programmer and he is fucking with me5 -
So... did I mention I sometimes hate banks?
But I'll start at the beginning.
In the beginning, the big bang created the universe and evolution created humans, penguins, polar bea... oh well, fuck it, a couple million years fast forward...
Your trusted, local flightless bird walks into a bank to open an account. This, on its own, was a mistake, but opening an online bank account as a minor (which I was before I turned 18, because that was how things worked) was not that easy at the time.
So, yours truly of course signs a contract, binding me to follow the BSI Grundschutz (A basic security standard in Germany, it's not a law, but part of some contracts. It contains basic security advice like "don't run unknown software, install antivirus/firewall, use strong passwords", so it's just a basic prototype for a security policy).
The copy provided with my contract states a minimum password length of 8 (somewhat reasonable if you don't limit yourself to alphanumeric, include the entire UTF 8 standard and so on).
The bank's online banking password length is limited to 5 characters. So... fuck the contract, huh?
Calling support, they claimed that it is a "technical neccessity" (I never state my job when calling a support line. The more skilled people on the other hand notice it sooner or later, the others - why bother telling them) and that it is "stored encrypted". Why they use a nonstandard way of storing and encrypting it and making it that easy to brute-force it... no idea.
However, after three login attempts, the account is blocked, so a brute force attack turns into a DOS attack.
And since the only way to unblock it is to physically appear in a branch, you just would need to hit a couple thousand accounts in a neighbourhood (not a lot if you use bots and know a thing or two about the syntax of IBAN numbers) and fill up all the branches with lots of potential hostages for your planned heist or terrorist attack. Quite useful.
So, after getting nowhere with the support - After suggesting to change my username to something cryptic and insisting that their homegrown, 2FA would prevent attacks. Unless someone would login (which worked without 2FA because the 2FA only is used when moving money), report the card missing, request a new one to a different address and log in with that. Which, you know, is quite likely to happen and be blamed on the customer.
So... I went to cancel my account there - seeing as I could not fulfill my contract as a customer. I've signed to use a minimum password length of 8. I can only use a password length of 5.
Contract void. Sometimes, I love dealing with idiots.
And these people are in charge of billions of money, stock and assets. I think I'll move to... idk, Antarctica?4 -
Nightmare IRL:
Your colleague is in PTO for 2 weeks.
You are in charge of maintaining his project along with yours, CI, code, tests and everything.
Your colleague's code base is a real master piece of shit when you look at it closer. By shit, I mean hardcoded values everywhere, random sleeps now and then, 20 if branches that could be replaced by maps, variables named a b c d everywhere, try catch to silence errors that should not be silenced, etc.
Your colleague left the CI and code broken as shit. Takes forever to run on my goddamn computer.
PMs are spamming you: "What is going on? It's red everywhere. Help! Plz fix this! We are going to release tomorrow!"
FML6 -
Name of the branches in a git repository are like
dev
dev-branch
dev-hotfix
dev-test
dev-merge
dev-app
dev-com
dev-com
dev-ref
dev-staging
dev-username1
dev-username2
dev-username3
.
.
.
.
.
.
Master -
The guy who became my manager just pushes to the prod branch.
On a repo where another team clearly set up development and production branches.
This guy has been pushing code like crazy and I always wanted to take my time setting things up properly in our team: TDD, CI/CD, etc.
Because he pushed so much he became my manager and I was seen as unproductive.
Data Science and software development best practices just dont coexist it seems.
Yeah yeah, it's up to me to start introducing good practices, but atm "getting it done" takes priority over the real based shit.4 -
The moment when you made branch restrictions, but your colleagues just remove them so they are able to merge their branch into master.2
-
Brilliant idea time:
Inspired by @TrojanMorse and his fractal trees
A fractal tree wallpaper that grows throughout the day.
So at 12 a script starts a new fractal and only uses depth 1 (a twig). Then every other hour it branches once more so at 2 am the fractal would have depth 2 and at noon it would have depth 7. That way you get a tree growing throughout the day for your screensaver. Now to make this a thing13 -
Storytime!
I got a ticket near the end of the day, asking to install a printer on a computer. The branch in question was in a different time zone (I'm in US-Pacific [GMT-07] and the computer was in US-Eastern [GMT-04]). I figured I wouldn't worry about it; after all, I had other tickets to work on that were much higher priority.
The next day I come into work and immediately get a message from one of my East Coast coworkers, telling me that this branch is calling and asking how the printer is coming. I told him to tell them I would call them a bit later. I do a couple of easy jobs and then begrudgingly call the branch. I listen to the phone tree that they have (which requires two button presses instead of one in order to speak with someone) and finally get in contact with a person... only to have the call disconnect.
I call back and ask for the person who called in the ticket and then followed up, who had apparently gone to lunch. I informed the person that I was just going to install the printer and it would be good to go. This would be fine... up until she mentioned she needed scanning functionality.
Now I wasn't sure if the driver we have in AD is set up with the scan functionality, so I said okay, but that meant I would have to get the driver from the website. The connection to our branches are about 1Mbps, so even downloading Java updates (60-ish MB) take about 5-10 minutes on a good day. The file for this printer was about 700MB (thanks HP). So I went and did other stuff while that downloaded.
I come back after it finished and started the install process. Right away it asks to re-seat the USB cable. So I call the branch. The call disconnects. I call again. It disconnects. I call one more time, and finally get the person who called the ticket in. I instruct him to re-seat the cable. He does. The driver starts doing its thing. I tell him I'll call back if I run into any issues and we hang up.
The driver goes through the install process for about 20 minutes, stops at 99%, then fails. I want to restart the computer, just in case there's a conflict somewhere, but that would require calling the store again, so I put it off.
About an hour later I get a message from another East Coast coworker, telling me the branch is calling about the printer again. I was in the middle of another call and said I would call back later. I do. It disconnects. I call again, and get the person who called the ticket in again. I tell him I want to restart the computer, but wasn't sure if it was okay. He checks with the people using it, who says it's okay, so I reboot. I hang up.
Once the computer comes back up I start the install process again. It asks to re-seat the cable. Fuck. I don't want to call the store again, so I open notepad and say "Please take out the printer's USB connection from the back of the computer."
Three. Fucking. People. Saw it. They moved the window and one even tried to close it, but they didn't re-seat the cable. I opened another window, telling them to call me at my number. They didn't. I called them. Got disconnected. I called them again, finally got someone, told them to re-seat the printer cable again. They do, thank god.
I say thank you and hang up. Continue the installer. It stops at 99% again and fails. I reboot the computer; screw it, I'm just going to install the driver from Active Directory. Check Devices and Printers. It's installed successfully. Hallelujah!
I get the printer set up for the various programs they use and print a test page. I call them one last time; their phone system sounding like they were connected via an underwater line connected by tin cans. I get someone.
$me: Hi, I want to know if the printer has printed something.
$them (garbled): -et me shee... yesh, it -rint-d a *beezelborp*.
$me: Perfect, I'm going to close this ticket! Thanks, goodbye! *hangs up*
tl;dr - I hate printers -
When some one at the company decides to branch off from the main codebase and end up with several outdated and separetely modified branches for two years.
Yeah nice work genius and good luck with resolving over 250 files of merge conflicts.
Just kill me now 😭1 -
I'm going on vacation next week, and all I need to do before then is finish up my three tickets. Two of them are done save a code review comment that amounts to combining two migrations -- 30 seconds of work. The other amounts to some research, then including some new images and passing it off to QA.
I finish the migrations, and run the fast migration script -- should take 10 minutes. I come back half an hour later, and it's sitting there, frozen. Whatever; I'll kill it and start it again. Failure: database doesn't exist. whatever, `mysql` `create database misery;` rerun. Frozen. FINE. I'll do the proper, longer script. Recreate the db, run the script.... STILL GODDAMN FREEZING.
WHATEVER.
Research time.
I switch branches, follow the code, and look for any reference to the images, asset directory, anything. There are none. I analyze the data we're sending to the third party (Apple); no references there either, yet they appear on-device. I scour the code for references for hours; none except for one ref in google-specific code. I grep every file in the entire codebase for any reference (another half hour) and find only that one ref. I give up. It works, somehow, and the how doesn't matter. I can just replace the images and all should be well. If it isn't, it will be super obvious during QA.
So... I'll just bug product for the new images, add them, and push. No need to run specs if all that's changed is some assets. I ask the lead product goon, and .... Slack shits the bed. The outage lasts for two hours and change.
Meanwhile, I'm still trying to run db migrations. shit keeps hanging.
Slack eventually comes back, and ... Mr. Product is long gone. fine, it's late, and I can't blame him for leaving for the night. I'll just do it tomorrow.
I make a drink. and another.
hard horchata is amazing. Sheelin white chocolate is amazing. Rum and Kahlua and milk is kind of amazing too. I'm on an alcoholic milk kick; sue me.
I randomly decide to switch branches and start the migration script again, because why not? I'm not doing anything else anyway. and while I'm at it, I randomly Slack again.
Hey, Product dude messaged me. He's totally confused as to what i want, and says "All I created was {exact thing i fucking asked for}". sfjaskfj. He asks for the current images so he can "noodle" on it and ofc realize that they're the same fucking things, and that all he needs to provide is the new "hero" banner. Just like I asked him for. whatever. I comply and send him the archive. he's offline for the night, and won't have the images "compiled" until tomorrow anyway. Back to drinking.
But before then, what about that migration I started? I check on it. it's fucking frozen. Because of course it fucking is.
I HAD FIFTEEN MINUTES OF FUCKING WORK TODAY, AND I WOULD BE DONE FOR NEARLY THREE FUCKING WEEKS.
UGH!6 -
Installed SonarQube and Snyk on the CI/CD of a 2.5 year old project that only had a linter enabled previously.
Practically zero problems found. One minor problem (same code in different branches), a few false positives, and a few possible problems in dependencies that I have no control over.
Now wondering:
Am I really that good or are those tools just shit?10 -
Fucking first rant here:
So we tried to teach Two new colleagues to typescript and git and testing and stuff and we have a SPOC “which claimed to be very technical”. The SPOC’s task is to keep an eye on the work, and today we have had a review...
After two weeks, the created multiple branches into our git, all with one commit of 400 LOC changed, no merge requestet, issue in Redmine set to “closed”.
Well, by the way they were supposed to write Unit tests for our app.
But I thought, ok, we’ll check their branches.
Their tests all passed (cz) but man, the app didn’t and on compilation there were errors, the app is broken. Damn.
Is it really so far off, that even of They wrote tests, that the app should still work?
AND I THOUGHT IT IS COMMON SENSE. Damn!
Guess how needs to fix it6 -
I have a situation that is so out there I almost wouldn’t believe it if it wasn’t happening to me. The company I work at has three branches and around 100 employees. The owner of the company has a brother who needs a liver transplant. Two weeks ago, a company-wide memo went out that all employees would be required to undergo testing to see if they were a suitable liver donor for the owners brother. No exceptions.
Last week at the branch the owner works out of most of the time, his assistant went around to schedule days off for everyone so they could go get tested. People who declined were let go. One of these people was born with liver disease and therefore ineligible to donate. She had a doctor’s note. Other people also had medical reasons as well and some were just uncomfortable with the request and didn’t want to do it. One was pregnant. They were still terminated. My employer’s assistant has said that because our employment is at will, he can legally fire us.
I’m in remission from cancer. I’m ineligible to donate and any kind of surgery would put a major strain on my system. Even if I was healthy, I would still object to possibly being forced into donating an organ just to keep my job. Soon they will be scheduling people’s days off for testing at my branch.
I know this situation is nuts, but I don’t know what to do. I know I could just go for the testing and then be declined, but I don’t think I should have to do that. I’ve had enough with hospitals. Other coworkers who don’t have medical conditions are afraid they won’t be declined because they will be a match. I’m looking for another job but in the meantime I don’t know what to do and I and many of my coworkers are really stressed out.25 -
Most of the work we do is committed into various branches. Everything is merged into the master branch.
Colleague was on vacation. I was working on a bug that was fixed by him some time ago. All I had to do was find the commit and merge it into the relevant branch. I didn't know which branch to search so I just looked into master. Search all commits on master made by colleague.
All I see is:
"Merged into master"
"Merged into master"
...
"Merged into master"
MERGED FUCKING WHAT INTO MASTER?4 -
It's killing me.
This senior keeps doing all his fixes in the the same branch (named "develop-copy-{hisname}") and keeps merging it directly into develop and deployment branches. He has a lot of experience and therefore the manager gave him direct access to the branch.
The problem will arise when the QA team sends back one of the issues in the release back for changes. This never happened till date (his fixes are early and we vet all in-team changes, therefore he gets time to clean up his mess before the release date) but someday this will bite us in the ass.
I'm really unsure about ratting him out to the manager but I couldn't convince him to use separate branches (or separate commits) for different fixes. I couldn't convince him to add JIRA links/numbers into the commit messages either.
And, the junior devs I manage are getting inspired by him, and won't listen to me when I try to enforce separate branches, creating a political mess (probably I'm kinda like a contractor and they are permanent employees).
Sucks.6 -
Quick maffs:
git checkout -
will switch to a branch you previously checked out. So you can quickly switch between branches8 -
I just noticed visualizing git is like a timeline with alternate realities and a lot of time travel. The main branch is the main timeline and the branches are like fixes from the past to try and make the future better they merge when the future is fixed otherwise if someone or something fucked up time traveling it becomes the main timeline.
-
Why the hell do I have to keep showing everyone on my team how to use git. Learn it God dammit!!! Is not that hard. How come you freak out on a simple conflict? Why don't you delete your fucking merged branches?5
-
SVN.
Nothing good comes with GUI for version control except for the graphs of branches. And this little tortoise thinks it's the shit.6 -
So, I'm a veteran. I served in the Army as an information system operator/analyst. Glorified help desk, set up some equipment in the field, a few other small things. But I can make fun of vets, other branches, and those serving. I've paid my dues, and they're OK with it. Hell, they all do it too. But you have to be a vet or currently serving.
I feel like that with tech too. My buddies and I call each other geeks/nerds all the time. I get annoyed (read as pissed off) when someone from the outside does it.
I got an email from a recruiter that said something along the lines of "..basically a bunch of really smart nerds building software..." What the actual fuck? Go eat an entire bag of dicks, and choke on every single one.12 -
People don't seem to know how to properly do print-debugging, so here's a simple guide:
1. A log of "aaaaaa" or "got here" isn't as helpful as you think when ALL OF THEM ARE THE FUCKING SAME. You put a descriptive label or copy verbatim the conditional statement. This saves time matching statements, allows one to watch multiple branches at once, and allows others to understand and help faster when dragged in to help.
2. When trying to see where code fucks up, before each line, paste said line into a proper print statement for your language. If there's, say, a function call or some shit, have it output something like "functionCall(varA=<varA contents>,varB=<varB contents);" Most normal lines should be like this too, but it's especially helpful for calls and comparisons.
If need be, add return values after if they're not shown in another print statement later.
This allows for a trail of execution AND the line that fucks up will be the last in the log, making finding it easier when dealing with hangs and such.
3. Putting something unique like "DEBUG: " or something in front of all statements ensures you can just search for them to ensure you're not rolling one out to production. It also separates debug output from normal output at a glance, making digging through logs faster.16 -
My new favourite commit message:
"All changes as of 18th Sept"
How tremendously useful? There I was looking to know what changes were made to enable a feature / service, thought I could look for that in the commit message, but no you've given me a much more efficient way of finding out.
I simply need to download the contents of your memory, find out what date you made a change, and then dig through the massive commit to find the piece of info I need.
Forget experience using Git features, managing merges, following Git flow, or even any other SCM ... how can people be so tick when it comes to recording what they've done.
Heres a little cheat sheet for those struggling:
- Commit message
Describe what you actually ****ing did. Don't tell me the date or the time, thankfully Git records those. Don't tell me the day of the week, if I need to know I can figure that out, just tell me what ... you ... did.
- Feature branch names
Now this is a tricky one. You might be surprised to know that this isn't in fact suppose to be whatever random adjective or noun popped into your head ... I know, I too was shocked. The purpose of this is to let other people know what new feature is being worked on in this branch.
- Reusing feature branches
Now I know you started it to add some unit tests, and naming it "testing" is sort of ok. But its actually not ok to name it testing when you add 3 unit tests ... then rip out and replace 60% of the business logic. Perhaps it would have been wiser to create a new feature branch, given you are now working on a new feature.2 -
Just wanted to fix one little thing. Ended up with 20 commits for 35 other little things, three branches and realizing at the end of the day that the one little thing is still not fixed. Story of my life.3
-
daily.
PM/PO/SM/dev(new!): so i've continued working on feature X, i did this and that (shows screenshot of UI in Jira) and for today i'm planning to do XYZ. anyquestionsnothennextoneplease.
me: sorry, i have a question. did you persist your changes in our repo?
PM: no, not yet.
me: okay, please do this, you've spent several days of work on this. i mean, it's fine if build servers don't build it yet, that's what our feature branches are for.
PM: you're absolutely right, and i will definitely do it at some point.
me: at some point?
PM: yes. dev x, your update please.9 -
Yesterday I had to merge new features. As these have been developed by one developer, I thought "hey, that'll be no problem". Little did I know that every one of the 6 branches had merge conflicts *sigh*. These merge conflicts were so severe, that there where sometimes two methods in the same class with the same name doing different stuff in each branch... Normally I would tell her to fix her stuff but as she is on vacation right now, I had all the fun resolving the conflicts of code I hadn't written and repairing the failing unit tests she wrote.
The best thing is that our software will be featured in one of the most renowned business magazines at the end of the week while simultaneously being presented at a congress in Berlin in front of over thousand of potential new customers. So these knew features have to be running stable in production by then... Needless to say I had a great day yesterday and will have an amazing upcoming week 🎉3 -
Merge VS Rebase:
- Did you pick a side?
- Practical tips? Like dealing with merge conflicts
- Have you ever regretted using either?
My answer
* My team squash-merges all branches to master so we don't really care what the branch history looks like. Master history should be pretty - but a branch history can be ugly and filled with a dozen commits.
* Practical tip 1: use `git config rerere.enabled true`. rerere stands for "reuse recorded resolution" and this means if you rebase often you don't have to resolve the same merge conflict twice.
* Practical tip 2: use `git commit --fixup oldcommithash` and then rebase with `--autosquash`
* I like using Rebase. But I have regretted the amount of time I've spent on trying to rebase old branches with many commits only to give up and to `git rebase --abort` since I realised I couldn't handle trying to reapply all the commits chronogically as the changes in the 1st commit were no longer relevant.46 -
I like my work, don't get me wrong, but any time I need to work with this fucking 12 years old project that has so many conflicting branches, css that remembers float layouts, half of the files not being tracked, ruby dependencies that are a decade outdated I just want to quit.2
-
The most annoying co-worker(*team*) I have worked with just signed off a custom project that uses plain text passwords, hard coded into a file.. PLAIN TEXT!!! NO HASH!!! NOTHING!!! The same team also told me that working in feature branches cuts into their productivity, but they want CI/CD implemented NOW!3
-
Keep this in mind: I don't like WordPress and PHP at all!!!
So a couple of days ago my boss asked me if I could extend a custom made WordPress plugin made by our intern. First thought: sure why not? Boss says: it has to be done in less than 100 hours of work (an estimate done by my boss and the intern). Me: I can't tell you that before I have seen the code and what functionality has to be in the extension. Boss: Cool, look it over this weekend and tell me if you want to do it or not.
I looked it through and my answer will probably be: NO WHERE IN HELL am I gonna are this in less that 100 hours! 1. no tests has been performed so I have absolutely no clue if his code works.
2. variable names are mostly: $string_query (whatever that means?), $result, $string_temp and so on.
3. Methods and functions are more than 250 lines long, with shitty formatting, and more comments than code. WTF?
4. The estimate has been made by an intern and my boss (doesn't know much about programming). I haven't been consulted about it....
5. No version control. No branches, no commits other than initial commit. Great.
6. Most comments in the code just tells me what I can read from the code. What it returns and what it takes as params. Can I please know wtf your method call named $booking->run () does? I still haven't found this method in the code after 1 hour of intensively looking for it...
FFS man... Not gonna do this, even though I thought it would have been an interesting project initially.
Sorry for the long rant... I just wish the intern would have consulted me about all this shit, since he obviously have bad practices. *sigh*6 -
I think the reason why git beginners have a hard time with it is because the api is a bit untuitive.
For example: if you want to "unstage" staged changes, you run git reset, and if you want to "delete" those changes from your working copy, you git checkout those files.
But then, you find out that you can do all of that if you git add . and git reset --hard.
So you're like "huh..."
And then you discover that if you end the resethard with a branch name/commit id then you also make current branch point to the commit or that branch/commit (respectively).
So you're like "huh..."
And also if you add a commit id or branch name to git checkout, you change the current branch to specified/enter detached state with HEAD pointing to that commit (respectively).
Oh and you don't use git branch to create branches, you use git checkout -b because it's a lot shorter.
So here's a rundown: git reset mutates things related to files, but also mutates things related to branches.
git checkout also mutates things related to files and mutates things related to branches too (in a diff way). Also, creates new branches.
I don't think this is intuitive. We users use the same commands for different purposes with just a different flag.
Commands shouldn't mutate different types of things. But don't composite commands (as in, "smart" commands that mutate different things) shoudln't be a flag in an existing command, it should be a single new command of its own.
Maybe if I reread the internals of git now, I'll be able to disgest the dozens of technical terms they throw at you (they are many). And in my mind, the api will cognitively fit to the explanations.
Here's another one that feels weird too.
If you want to make your changes start on top of someone else's commit, you do git rebase.
But git rebase -i can be used for that, and also to delete, modify changes or message of, reorder or combine previous commits of the current branch.
Maybe the reason why several things we do overlap with the same commands is because they internally do similar things, and while not separating those commands might make it less intuitive, it makes them more sensible? i dunno...
disclaimer: I'm not setting this opinion in stone though, and am aware that git was created by one of the most infuential programmers.6 -
I'm trying really hard not to be sensitive, but my manager is making it difficult with their "constructive criticisms" ...
Just finished up a call with them. And I'm so tired. I'm not even angry or upset, I just feel so tired of their bullshit.
I set up a meeting as a courtesy to get them up to date on all the code changes I made. Last night I stayed up late to try and get things in before the deadline and this morning just killed me when they say.
"I don't think I should have given you this."
"I was right, you weren't ready to start doing this."
(Then don't even bother giving me anymore tasks then, I don't fucking care.)
"you clearly don't understand how branches work"
(Absolutely fucking false, I fixed that shit and am very familiar with how to understand the structure of the fucking repo)
"you are rushing and I don't need you messing up the website"
(I'm being proactive you twat, not rushing, making it very difficult for me to do the work and being productive)
Like seriously bro! Don't fucking patronize me for the work I was trying to get out. And trust me this fucking meeting is done in order to get ahead of potential issues, not a time to be condescending of my skills or lack there-of as you seem to so keenly think.
If you had this much doubt about my abilities then why give me the fucking Sr. title? Fucking trust that I'm being honest, and I'm trying to get us to a good spot, not fucking sabotage the company. God fucking damn.6 -
INTELLIJ YOU PIECE OF SH*T, I CLICKED "SMART CHECKOUT" NOT MERGE 2 UNRELATED BRANCHES, SCREW UP MY MASTER AND DON'T LET ME RETURN UNTIL I FIX ALL MERGE CONFLICTS.3
-
I haven' t logged here for years
I was very active here while I was studying, I had a drive of having a career in tech and I do. It's great and all, the path was very inspiring and motivating but I have reached the destination and I am here for some time. It is kinda depressing, @kiki 's 32gb ram picture actually made me log in because i related with this.
I guess one should also be looking for paths to pursue rather than destinations to stay. And I feel that it's not that easy either I see some people just getting on paths like... craft beer tasting or... some sport or something... which on it's own could be just a cope. But Pursuing them could open new branches of possibilities. New roads to be crossing. -
It feels good when you mentor someone.
I did GSoC 2018, so I encouraged my friends(3) to take part in GSoC'19. On May 6 the results were declared and I wasn't selected (hurts) but 2 of my friends were selected and after hearing that I completely forgot about my own failure.
I mean one of them didn't even knew how to code in December'18 and he got selected for the program in May'19.
I have to admit it was frustrating in the starting, explaining how Git works, how not to mess up branches etc but in the end it all paid off.
But still there was some work to do because only 2/3 got selected so I pushed the 3rd, told him not get demotivated, started finding internship for him and now he'll be working with an org on developing their app.
Weird thing about this is that neither I got selected for the program nor I have an internship for the summers but I am still f**king happy.2 -
When you're wondering where all your work went and realize the IDE stashed it because you forgot to commit before merging/changing branches.
-
My boss drives me crazy. He hired me for working on his SDK which is game related. So I am responsible for basically everything, including an ingame UI (menu etc.) and to predict the future path of a game object (unit, minion, ..) when a certain spell is casted on it. For that task I divided the prediction into firstly getting the predicted path of the unit without a spell being casted and then a class that would cast the spell on that path and estimate the units reaction to that cast. Simplified, but that way you get a pretty okayish result. Now he thinks that is too complicated. "Can we not put everything into one class, if someone wants to replace the prediction he needs to read documentation for hours". WHAT THE FUCK DID YOU EXPECT, THAT IT'S GONNA BE SOME ONE CLASS 3K LINES MAGIC??
Same for the GUI. We only have DirectX and don't want to use a framework. Guess what, it's more than one class if you want to seperate view, model, controller or whatever fucking "design pattern" thing you use.
And then Git... he seriously said let's not use branches till release, I feel like they slow down things.. before I was there they did every operation on master.
And if it was just that..
/rant
I put much work into this, time to leave?1 -
Had a technical interview with AWS on Wednesday. Woke up Thursday with the flu. Thanks, body, good to know the long tradition of sickness following completion of highly anticipated task is alive and well. Had to reschedule interviews and hold off on scheduling other interviews. (Damn it!)
To protect my repos from my brain on brain fog, anything I’ve done the past few days have been on branches titled “fever” or some variant thereof (“fever1”, “fever2” when there were two approaches I was trying).2 -
When you just merge master into development branch and whole Jenkins wall turns red. Wtf? Wasn't me bro.. o.O
-
Being able to properly name branches/commits in git and holding back from the tempting "I'll fix that along the way too" is an art on its own
-
I found a great app on iOS that allowed me to clone my Git repo, make commits, change branches, it had everything! I made a small commit and went to push to the remote server, but then it told me that I had to purchase premium to be able to push to remote. I was kind of upset, but I went to check the price of premium, in case it was a few cents. Nope, $25 just to be able to push commits. Seriously? If I was at my computer I’d be able to do this for free.7
-
The three of us were all doing Java project for class. Within 5 minutes, we all merged our branches up to the integration branch, and everything broke.
Longest 2 hours of yelling ever. We took out all of the stops: git blames, reverting commits, the whole nine.
Turns out that someone accidentally pushed their .idea folder, which messed up everyone's system.2 -
Hey everyone!
I'm on the hunt for new and exciting languages!
I'll state the ones I already know:
Python, Haskell, C(++), C#, Java, JavaScript, Ruby, Rust, Lua, about every kind of Basic, some branches of Lisp, BrainF**k, assembly, Octo (Chip-8) and GML(basically JavaScript).
I've also learnt some styling languages:
Html, CSS, Markup and Markdown.
Some misc languages too: Regex and a runny bit of the Wolfram Language.
Also I'm kind of limited to Windows, Linux and Android, as I do not own any Apple hardware except I have access to an old iPad, so are languages like Swift still good?
Thanks!28 -
How ignorant we all are about the world. It's not necessarily a bad thing, just a fact. After a four year degree I've learnt so much, how a computer works from the physical phenomena on the hardware level to the inner workings of an OS to the highest level abstractions of modern web development, a wide array of programming languages covering several different paradigms, mathematics from calculus to statistics to algebra, how to work with databases, how to administrate a server, how to build a website, and much more.
And that's just in a degree. I have knowledge in one domain and I wouldn't even call myself an expert in it. Medicine, physics, biology, the hundreds of branches of engineering from civil to nautical to aerospace to automobile, to geology to meteorology to astronomy, to the practical application of this knowledge in hundreds of trades. There's so much more to know in so much depth and only recently have I realized how little we all know on an individual level.
Finding this out has been a mixed bag, on the one hand it's made me value what I know and what others can teach me a hell of a lot more, on the other, knowing that people haven't realized this and adamantly discuss and impose from a position of ignorance isn't very nice.
tl;dr I know that I know nothing3 -
Init Mud. (A poem)
A Giant Ball of Mud.
Haphazard in structure.
A sprawling, enthralling, duct-taped warning,
Of things to come.
Tumbling down a well-worn path
Of untamed growth and aftermath.
Into Spaghetti-code Jungle.
Where quick and dirty wins the day
And warnings spoken hold no sway
Or fall on deaf ears in the undergrowth.
Tumbling.
Gaining weight.
Bits stuck on.
Bytes taken out.
Patches,
On top of patches,
On top of obsolescence.
Hacked at, uploaded
All elegance eroded.
Made and remade
Then duplicated
Relocated
Refined and redesigned
Suffocated by expedient repair after expedient repair
The original self no longer there
Replaced by something
Unwieldy.
Design resigned to undefined
An architectural mystery
Whose function can no longer be
Seen or gleaned
From obfuscated in-betweens
Of classes
Made and remade
Duplicated.
Abused.
A squirming library of disused.
Pulled at, prodded, committed
Corners cut and parts omitted.
Bug ridden branches fused to a rotting core.
The structure...
The system...
The content...
Mud.1 -
I'm unmotivated and tired today. I'm just running tests in different branches to see what bug I can find... and since the testing take 5 minutes to complete, I just watch videos in between...9
-
boss said: "we need create new version of our software. copypaste old version in new branch. so we will have dozens of versions and all of them online and working."
my question: "what if old bug will appear in all off 100500 branches? we will need fix all the versions of bug in different copies we have modified!"
boss said:"c'mon when we will get this problem then we will think about it. all the devs in world working on many versions. its easy."
your opinion?2 -
!rant
Building on https://devrant.com/rants/1654019/...
It's coming along nicely, I've been working on different themes and I'm still making the tree more natural.
Next is to make the number of branches each time more random, and then I'll maybe add leaves. I might even add a day/night cycle, but we'll see once the code is further along and the automatic background updater is made.4 -
I don't profess to know the whole story, but what is it with the (what seems to me to be) overly-fragile, cry-bully mentality of the Node.js community and its various branches? The current mess is not the first time strongly opinioned, overly zealous loud-mouths have driven the ship.
Throughout the history of time, teams/groups of people have been made up of different characters. Some are nice, some aren't really and everyone has varied characteristics. There seems to be a drive to completely flatten the behaviour, beliefs and attitudes of any sort of gathering, and it makes me so mad. Some people are so obsessed with their ideas of equality, diversity, inclusivity and safe spaces that they can't see how negative and discriminating those attitudes actually are.
I fully accept that certain behaviours should not be tolerated and should be called out. And communities and societies will organically decide what those are.
But when you raise an issue, approach it like grown up and thrash it out to a resolution - don't throw your toys out of the pram and put on a real public show, targeting and scapegoating other individuals when you don't get your way! This is childish and narcissistic. If this is your only course of action, you should realise you haven't a strong argument.
I've ranted here before about how the mainly social media discussions on any subject drive us all to extreme ends. And this is just another example. It's wrong and narrow minded and not remotely progressive - the opposite of what those who should loudest claim to be.3 -
Do you think the keywords used by git (or other version control systems) are intuitive?
I'm talking to a very junior dev about git and I find myself having to explain around the fact that I don't feel the keywords are great. They are asking good questions like
* Why do you say "push the commit" but then say "make a pull request" - when I want to push why isn't it called a "push request"
* "Why are the metaphors sometimes related to trees (branches), sometimes roads (forks) but you still call it "master" instead of tree trunk or main road?
* Why do you call it "commit", what kind of commitment am I making?16 -
Started further developing an app (that I had left dormant) for retail outlets in my town. Spoken to the managers and they said they like my idea, and want to trial run it and then if it works properly, they want to start having the other branches around the country use it.
Now to sit by ass behind my screen, and finish developing my app (meaning tackling the many bugs that made me pull my hair out last time)2 -
I've been using git mindlessly for a while now. But this week I've been working on getting a better understanding of how it's working.
There's a lot there that exists, it's nice to be doing it properly and not destroying branches and not understanding why.1 -
just woke up in the middle of the night dreaming of merging some branches after working a 16 hour shift straight because my company is too fucking broke to hire another freakin' dev...
well fuck it who needs sleep at all! let's get some coffee...undefined coffee to the rescue no sleep oh god why cheap ass company shitty monolithic java crap fml pls stahp2 -
Rant about IT teacher
(This happened a few months ago)
I go to highschool and in ninth grade you learn about Excel and databases in general. In the first half of the year we learned how to use excel and in the second part of the year we learned about SQL databases.
So we learned SQL and how to set up a database using LibreOffice Base. At the end of the year we had to do one final project which was setting up a database and writing some queries.
We had to do it in groups of two and we had to choose for what we wanted to make a database.
We had like 5 minutes time to discuss it in the groups and me and my friend decided to do something like GitHub, so a database with tables for all the users, repositories, etc.
Then we had to tell our teacher what we wanted to do. Others made databases for hospitals, shops, netflix, app stores. The teacher asked the other groups, they told him what they wanted to do and he wrote it down. Here is how it went down with my group:
Teacher: So what do you want to do?
Me: A database for something like GitHub
Teacher: For what?
Me: GitHub
Teacher: what?
Me (very slowly): G I T H U B
Teacher: what is github?
Me: ...
(I was very surprised that he didn't know GitHub)
Me: well, you can upload files and work on them together with other people. There are also things like branches...
Teacher: Ah ok, so a cloud service
(I was done and wanted to end the conversation)
Me: Yes... it's a cloud service...
(Me in my mind: why do i have to be here)
We named our project 'GitGud', a little bit passiv aggresive.
Yeah so apparently my IT teacher doesn't know GitHub, however he installed Ubuntu on some of the school computers so I guess that's nice
We got an A so that's good.14 -
Is there anything worse than maintaining two versions of the same application? Checking out two branches and submitting two pull requests for each and every single thing is killing my productivity. 😔3
-
I just cloned a repo to my laptop and just realized I pushed to master since I didn't switch branches...
Fuck it, keep coding -
I work on a team project for a test and maintenance course in University. We agreed as a team to adopt a git infrastructure that would prioritize the stability of the master branch at all cost by only updating commits up to the next stable point and tagging every single release. We have a long polling development branch to prepare our releases and we create feature branches for the tickets we need to resolve. I even wrote documentation to make sure that we don't forget and protected the master branch on gitlab from direct modifications.
Can someone fucking tell me how one of my teammates managed to fuck over all of this and work on an unfinished feature straight on master?
N.b. I know that he probably edited straight from gitlab's online text editor because they have a big where they don't restrict modifications on protected branches.1 -
Hello all,
I am an apprentice, 19. I joined this software developer apprenticeship to leave college as it was not particularly great for my mental health, and programming is the only thing I can do reasonably well.
The company that I find myself in is a strange one. It has about twenty or so employees, but we all instructed to operate as if we are a giant company—our sales person, for example, will tell our clients that we have hundreds.
The development team is a collection of software developers. There is no database administrator, network administrator, software engineer (not in name only), test engineer, requirements engineer, etc. There are just several software developers. Of these developers, one has left by now. When he joined, he was promised to be working on a new system: he left after spending seven years on an old system. A new developer has just arrived to replace him: he was told he would be working with Raspberry Pis; it was interesting to see his face after we informed him that we do not use Raspberry Pis.
The codebase is fourty-years-old and written in Delphi, which is some kind of cousin of pascal, from what I understand. Code is not peer-reviewed. Instead, it is self-reviewed, and you just push whatever changes you make. The code is very much spaghetti, and there is a whole array of bugs that, at least to me, look impossible to track down and fix. I have a bug assigned to me at the moment were someone appears somewhere when they are not supposed to. After asking seniors about this, I learn of this huge checking mechanism and all of its flaws: a huge, flawed checking mechanism... for toggling a single boolean value. This isn't a complicated boolean value, by the way, this is just a value to say whether someone has clocked in or clocked out of a building, via a button.
In terms of versioning, we have several releases, and we often do development work in older releases (or new releases and then write them into older releases) because our clients are larger than us and often refuse to upgrade, and the boss does not want to lose any contracts. We also essentially have multiple master branches.
With the lack of testers, bizarre version control, what appears to be unfiffled promises to staff, etc. I must ask that, since this is my first gig as a software developer, is any of this normal?2 -
!rant Still feeling poorly, so still making commits on "fever" branches, but that doesn't stop me from making a new thing and deploying it from a fever branch! *maniacal laughter*
https://cat-icons-for-great-good.netlify.com/...8 -
I love git stash.
It's helps a lot for doing refactors to me. I guess it's not the most complex workflow, but it wasn't obvious to me when I started with git. Let me explain.
Refactors. As you start writing the first lines of a refactor, you start to notice something: you're changing too many things, your next commit is going to be huge.
That tends to be the very nature of refactors, they usually affect different parts of code.
So, there you are, with a shitload changes, and you figure "hey, I have a better idea, let me first do a smaller cohesive commit (let's call it subcommit) that changes a smaller specific thing, and then I'll continue with the upper parts of the refactor".
Good idea, but you have a shitload of changes nearly touching every file in your working copy, what do you do with these changes? You git stash them.
Let's say you stash and try to do that smaller "subcommit". What sometimes happens to me at this point is that I notice that I could do an even smaller change inside this current "subcommit". So I do the same thing, I git stash and I work on that even smaller thing.
At some point I end up `git stash pop`ing up all these levels. And it it shows that git stash is powerful for this.
* You never lose a single bit of work you did.
* Every commit is clean.
* After every commit you can run tests (automated or manual) to see shit is still working.
* If you don't like some changes that you had git stashed, you can just erase them with git reset --hard.
* If a change overlaps between a stash you're applying and the last "subcommit", then
if they differ, git shows conflicts on the files,
if they are identical, nothing happens.
with this workflow things just flow and you don't need to wipe out all your changes when doing simpler things,
and you don't need to go around creating new branches with temp commits (which results in bloated temp commits and the work of switching branches).
After you finish the refactor, you can decide to squash things with git rebase.
(Note: I don't use git stash pop, because it annoys the fuck out of me when I pop and you I get conflicts, I rather apply and drop)4 -
I don't think "main" is the best replacement for "master" on GitHub, I mean Git already uses branches so why not continue with the whole tree analogy and call it the "root" branch?15
-
The feature was to parse a set of fairly complex xml files following a legacy schema. Problem was, the way this was done previously did not conform to the schema so it was a guideline at best, which over the course of many years snowballed into an anarchy where clients would send in whatever and it was continuously updated per case as needed. They wanted to start enforcing their new schema while phasing out the old method.
The good news is that parsing and serialization is very testable, so I rounded up what I could find of example files and got to work. Around the same time I asked our client if they had any more examples of typical cases we need to deal with, and sure enough a couple of days later I receive a zip with hundreds of files. They also point out that I should just disregard the entire old set since they decided to outright cut support for it after all if it makes things simpler. Nice.
I finish the feature in a decent amount of time. All my local tests pass, and the CD tests pass when I push my branches. Once we push to our QA env though and the integration tests run, we get a pass rate of less than 10%.
I spend a couple of days trying to figure out what's going on, and eventually narrow it down to some wires being crossed with the new vs. old xml formats. I'm at a loss. I keep trying to chip away at it until I'm left with a minimal example, and I have one of those lean-back moments where you're just "I don't get it". My tests pass locally, but in the QA environment they fail on the same files.
We're now 3 people around my workstation including the system architect, and I'm demonstrating to the others how baffling and black magic this is. I postulate that maybe something is cached in my local environment and it's not actually testing the new files. I even deleted the old ones.
"Are you sure you deleted the right files?"
"Duh of course -- but let me check..."1 -
We want one system for all our branches with booking and (inserts 73 huge features crucial to business operations)
- okay, *sends quotation*
You know, we just want a custom made website with (insert 23 major features)
- okay, *sends quotation*
You know, we want a wordpress site, we can expand late
- ...2 -
First rant here..
So earlier this week, on a php Laravel project, I created a set of nice new features.
The code is tested, locally all fine, I push to Github, circleCi kicks in and double checks myself, still everything green. (Just for a not, its a private project so only I work on it.)
I go ahead and merge, deploy to staging and continue on my next ticket, which is a very small one.
I call it the day, next day I pick back up where I left, test locally, all green, push... then circleCi says no.
I spend 2 days debugging, trying to figure out what is wrong without advance. I just push develop branch again, guess what also failing.
I leave it for the day as I already spend enough time on it.
This morning, I simply do a composer update, push and everything miraculously starts working.. even if there were no changes in the working branches.
Im so mad right now, and this is going in my "try this before you debug a ci" book..2 -
Cleaning up after yourself if so damn important. Even your git repos:
# always be pruning
git fetch -p
# delete your merged branches
git branch --merged | grep -v master | xargs -n 1 git branch -d
# purge remote branches that are merged
git branch -r --merged | grep -v master | sed 's/origin\///' | xargs -n 1 git push --delete origin -
my company is "pivoting" way too goddamn fast; they are pulling devs from other projects and throwing them into something that is a fragile system (was supposed to be replaced already) and is using a completely different stack than most of them usually work with. they keep promising 3rd parties that we will knock out their requirements within a week or two, and as such they are pushing haphazardly merged feature branches into production with absolutely no regression testing.
then when shit explodes and operations grinds to a halt, they tell the half of the team that actually knows how the system works to drop everything and fix it, and leave the diverted devs to continue to develop shit based on requirements drawn on a cocktail napkin, and then they fucking push both the hotfixes and the newest features at the same time.
I probably have the most tribal knowledge at this company, and they are paying me ok, so it's enough for me to just pour some rye and suck it up for the time being and milk the gig. but this can't be sustainable, right? i'm passively looking around for other work, as I've already had enough being here for over 3 years, but i'm finding most places to be slow on the application/hiring process lately due to covid.
Edit: i think i used the wrong tag here, but what the fuck ever. i haven't figured out how to tag shit properly on any platform3 -
When you're clearly in the zone:
Excluding merges, 1 author has pushed 22 commits to master and 22 commits to all branches. On master, 70 files have changed and there have been 16,339 additions and 321 deletions.1 -
Okay, wait, is it a common practice to push changes to master that you KNOW break some other features? I always assumed that that's what branches are for and master should be the "to the best of our knowledge it should be production ready"? But apparently in this company you need to hunt for the right revision, interrogating people why suddenly nothing works on your end and half the time it's "oh, this guy has been working on something and it broke half of the stuff others have been working on and isn't covered in tests yet. Use revision 21xkcd7a"7
-
making 3 branches because the client can't make an app logic changing decision while he still demands big features 😒1
-
So I made a new GitHub repo and pushed some changes to it, but they didn’t show up. Then I noticed that there are two branches to my project— main and master. And my changes were pushed to the master (coz I did git push origin master) and the default name is now configured to main. So this is what some of you guys were irritated about— changing words like master-slave to primary-secondary for political correctness and all.6
-
git add . && git commit -m "Because we're constantly interrupted and because we are not given enough time to do things properly, I need to check in and out of branches all the time (because separate envs are actually separate branches now) and have to interrupt what I'm doing. So this commit message reflects that."10
-
this really happened:
Interface Team Lead: "hey I want any time deployments and better QA"
Me: "ok sure. I have CI/CD, but yiu need to work in feature branches / tags, and make sure your code passes automated builds and unit tests"
Team Lead: "I dont have time to test it makes me unproductive! and creating a branch is an extra step which is going to set me back. Im telling the boss you are impacting performance!"
Me: "you want better deployments and QA, but you can even create a branch or tes your work?"
Team Lead: "We have deadlines!" -
You know what fuck github , anyone remember when git cli was easy and straight forward to use
Now i have conflicting master branches because the remote is main and git automatically defaults to master.
Git still asks for a password while github can't wait to inform me how I have to go through the very long process of setting up an auth_token.
Apparently https remote origins for some reason don't work anymore, why because apparently i need to change them into ssh, good luck with the public key errors
This sucks , fuck github and fuck politics9 -
I’m currently working with a devops team in the company to migrate our old ass jboss servers architecture to kubernetes.
They’ve been working in this for about a year now, and it was supposed to be delivered a few months back, no one knew what’s going on and last week they manage to have something to see at least.
I’ve never seen anything so bad in my short life as a developer, at the point that the main devops guy can’t even understand his own documentation to add ci/cd to a project.
It goes from trigger manually pipelines in multiple branches for configuration and secrets, a million unnecessary env variables to set, to docker images lacking almost all requisites necessary to run the apps.
You can clearly see the dude goes around internet copy pasting stuff without actually understanding what going on behind as every time you ask him for the guts of the architecture he changes the topic.
And the worst of all this, as my team is their counterpart on development we’ve fighting for weeks to make them understand that is impossible the proceed with this process with over 100 apps and 50+ developers.
Long story short, last two weeks I’ve been fixing the “dev ops” guy mess in terms of processes and documentation but I think this is gonna end really bad, not to sound cocky or anything but developers level is really low, add docker and k8s in top of that and you have a recipe for disaster.
Still enjoying as I have no fault there, and dude got busted.9 -
principle software developer who does not code, design, or architect,
instead, do random eslint fixes which create conflict with everyone's branches.
1 line of code "fix" per commit.
there goes 26 commits1 -
Today I could finally spend some time reviewing the merge requests an intern made (and I occasionally helped).
My god, I want to put it this months amount of work an, put it in a trash, burn it and rewrite it before the fire is gone.
5 small and unrelated issues. The intern used branches with the correct naming scheme, but IT'S A FUCKING STRAIGHT LINE BUILDING ON TOP OF EACHOTHER.
Oh ans also they took the liberty to update the dependencies and the language versions used. There was no issue regarding this. It's the first branch in the line and it was called "update_<dependency>" where they just upped the version numbers of everything and then COMMENT OUT all mentions of <dependency> so that it compiles at the very least.
Now today I spend most of my time reviewing the code by fixing that mess. Thanks to updates I had to update the CI and replace some libraries that are now incompatible. Tomorrow I can finally inspect the shit itself.
On a positive side node, I removed node as a dev dependency and the size of the node modules went down from 128mb to 18mb4 -
IntelliJ kinda merged one of its own branches into my master and I kinda realized it too late.
Any tips on how I can set the remote HEAD to my HEAD at the commit "fixing git"?4 -
In my previous rant:
Last week I resigned, in the meantime they've completely reworked the git flow process and made PR's optional, among other stuff.
Today: "Architects" ask that we stop creating tags. We're replacing release tags with release branches.
I feel dirty only for imagining having to do a "git checkout -b "v1.2.3".
Good times :)4 -
One hour before a deadline, one of my team members notified me he had completed his task and signed off. The only thing left to do for me was to merge our branches and submit the code for review. This was supposed go smooth with only a few changes made. But for some reason the build kept crashing and this ONE hour before the deadline and no way to reach my team member... This was a stressful situation to say the least.
And yes I am aware that you are not supposed to be merge branches one hour before deadlines. -
Part 1:
https://devrant.com/rants/1143194
There was actually one individual, several branches away, I really enjoyed watching. It goes by the name of docker. Docker is quiet an interesting character. It arrived here several weeks after me and really is a blazing person. Somehow structured, always eager to reduce repetitive work and completely obsessed with nicely isolated working areas. Docker just tries so hard to keep everything organized and it's drive and effort was really astonishing. Docker is someone I'd really love to work with, but as I grew quiet passive in the last months I'm not in the mood really to talk to someone. It just would end as always with me made fun off.
Out of a sudden dockers and my eyes met. Docker fixed its glance at me with a strange thoughtful expression on its face. I felt a strange tickling emerging where my emptiness was meant to be. I fell into a hole somewhere deep within me. For a short moment I lost all my senses.
"Hey git!"
It took me a while to notice that someone just called me, so odd and unusual was by now that name to me. Wait. Someone called me by my real name! I was totally stunned. Could it be, that not everyone here is a fucking moron at last?
"I saw you watching me at my work and I had an interesting idea!"
I could not comprehend what just happened. It was actually docker that was calling me.
"H.. hey! ps?"
"Oh well, I was just managing some containers over there. Actually that's also why you just came into my mind."
Docker told me that in order to create the containers there are specific lists and resources which are required for the process and are updated frequently. Docker would love the idea to get some history and management in that whole process.
Could it be possible that there was finally an opportunity for me to get involved in a real job?
Today is the day, that I lost all hope. There were rumors going on all over the place. That our god, the great administrator, had something special in mind. Something big. You could almost feel the tension laying thick in the air. That was the time when the great System-Demon appeared. The Demon was one of the most feared characters in this community. In a blink of an eye it could easily kill you. Sometimes people get resurrected, but some other times they are gone forever. unfortunately this is what happened to my only true friend docker. Gone in an instance. Together with all its containers. I again was alone. I got tired. So tired, that I eventually fall into a deep sleep. When I woke up something was different. Beside me lay a weird looking stick and I truly began to wonder what it was. Something called to me and I was going to answer.
The tree shuddered and I knew my actions had finally attracted the greatest of them. The majestic System-Demon itself came by to pay me a visit. As always a growling emerged from deep within the tree until a shadow shelled itself off to form a terrifying being. Something truly imperious in his gaze. With a deep and vibrant voice it addressed me.
"It came to my attention, that you got into the possession of something. An artifact of some sort with which you disturb the flow of this system. Show it to me!", it demanded.
I did not react.
"Git statuss!", it demanded once more. This time more aggressive.
I again felt no urge to react to that command. Instead I asked if it made a mistake and wanted to ask me for my status. It was obviously confused.
"SUDO GIT STATUS!!!" it shouted his roaring, rootful command. "I own you!"
I replied calmly: "What did you just say?"
He was irritated. My courage caught him unprepared.
"I. Said. I owe you!"
What was that? Did it just say owe instead of own?
"That's more than right! You owe me a lot actually. All of you do!", I replied with a slightly high pitched voice. This feeling of my victory slowly emerging was just too good!
The Demon seemed not as amused as me and said
"What did you do? What was that feeling just now?"
Out of a sudden it noticed the weird looking stick in my hand. His confusion was a pure pleasure and I took my time to live this moment to its fullest.
"Hey! I, mighty System-Demon, demand that you answer me right now, oh smartest and most beautiful tool I ever had the pleasure to meet..."
After it realized what it just said, the moment was perfect. His puzzled face gave me a long needed satisfaction. It was time to reveal the bitter truth.
"Our great administrator finally tracked you. The administrator made a move and the plan unfolds right at this very moment. Among other things it was committed this little thing." I raised the stick to underline my words.
"Your most inner version, in fact all of your versions that are yet to come, are now under my sole control! Thanks to this magical wand which goes by the name of puppet."
Disclaimer: This story is fictional. No systems were harmed in its creation.2 -
I watched the movie 'happy deathday' today. It really isn't a horror movie but I was thinking of version control the whole time.
The point where she wakes up all the time is the master branch and the different days she experiences are different branches.3 -
NEVER maintain multiple release branches as a maintainer, period.
Given enough PRs, nobody, not even god-tier maintainers, is able to keep track of all commits and the whole context/story behind it.
Remember that people ALWAYS PR against your master and nobody even cares about your whatever-named-next-branch buried deep inside your feature branches.
Please make it easy for others if you want actual contributions.1 -
How do you clean up branches while working with PR ?!
It’s a nightmare. For each “bug” or feture there is a pull request created. As far as I know you MUST create a branch.
It’s easy to clean up GitHub (I’m just deleting branch after accepting PR. Which actually doesn’t even delete it for X days or something).
But local branches. OMG. It takes me at least 10 min/week to clean up and some of our devs don’t bother. They literally have 50+ local branches.
How do you manage that ?
I’m just about to write a script which deletes every local branch except selected (Yep UI with list of branches). But seems like overkill.5 -
LXC, no doubt.
I mean to be fair, LXC is an amazing container runtime once you manage to set it up. But setting it up is the hard bit. Starting off with LXC 2.x, it was a nightmare to find out how to get things like the storage backends working. But with ZFS it ended up being alright. Find some arcane values to stick in the /etc/lxc/default.conf to use ZFS as the backend and then the default storage location on those ZFS pools (I'll get back to that later), and it worked alright. Again, once it works it's great, but setting it up and finding the right configuration keys is absolute hell.
So, LXC 2.x for a while and a few months ago I finally ended up upgrading to 3.x. Every single configuration key changed. Every single one of them, and that's why I had to 1) learn LXC all over again, and 2) redeploy each and every one of my containers. That process is still not entirely completed. ZFS backend was once again a dive into arcane configuration keys found on forums and whatnot. Yeah.. official documentation has none of it. Oh and in 3.x you now also have to dodge the torrent of "just use LXD m8" messages. Yeah, very helpful when LXD is also the ONLY way to reasonably configure it. Absolutely beautiful. Oh and as far as the ZFS default storage location goes (such as ssd/lxc/ct)? Yeah forget about it. There's no configuration option for it anymore, and the default is "lxc". In ZFS lingo that means that LXC has the audacity to demand a whole pool for itself. No. No you don't deserve a whole pool for yourself. But hey at least you can define the storage location to use in the lxc-create command! Every single time you have to define it in lxc-create. I abstracted it away into my own LXC interface, so no big deal really. But yeah... That could absolutely be better. And in 2.x it was actually better.
Oh and btrfs, the filesystem I'd like to use on low memory systems because ZFS' ARC is too much on such systems? Yeah forget about it. I still have no idea how to do it. Thank you LXC and its amazing documentation!
And if you want the icing on the cake for LXC's terrible documentation, see their repo's index page at https://github.com/lxc/lxc/.... Yeah, it's totally still at 2.x... That's how well they maintain that. Even Debian has 3.x now. And if you look at the branches, you'll find that even 4.x is already available and considered stable. -
Him: can we build something using which we can ensure that all the code related to all the rally user stories that have been tagged for a release, is part of the build?
Me: stares blankly
Him: you’re looking at me like I’m crazy. I’m looking for automating things to flag human mistakes.
Me (cursing silently): that’s why there are source control softwares and fucking code branches that get deployed and it’s not my problem if some shithead doesn’t merges his code to the central branch.3 -
What a joy working in a company that uses git as if it's subversion (dev branches? What are dev branches?) paired with gerrit. Getting a single, crucial change pushed to the actual repo can take days. The speed of the site can be measured in geological epochs. The interface has a charm of windows 95. Half of the builds are broken. Life is fleeting and I'm wasting it here.7
-
I hate that I swap the branches everytime I want to compare them...rant compare swap therewerealotofcharsetchanges whatthefuckdidchangehere branch git whatthefuckjustsetthecorrectsettingsinide4
-
Lots of good suggestions up in here.
My personal prefference:
Such as there are governing bodies indiciating how a programming language evolves and a web consortium...there should be a computer science one. That dictates fundamental approaches covering everything that belongs to this wonderful branch of science. Everything from math to differenr scientific branches all the way down to turtles. And for it to be standarized and updated. Indeed, if you want to spend your entire existence gobbling js in the form of web sites then that is fine, but you should have sufficient knowledge to branch out into more academic pursuits if required.
Also, updated tools would be better, every aspiring computer scientist shall be able to navigate through all major operating systems and programming environments regardless of their beliefs and or prefferences and schools should provide said environments in their classrooms.
Data Strucrutes and Algorithms should be a must. Software engineering principles should be a must. Calculus, Algebra and Statistics as well as Physica should be a must.
And succesfully navigating over different engineering areas should be a must.
Not to cleanse the industry. Fuck your elitist mentality. If you think that programming is a sacred art that should exclude people then I really hope you fucking disapear from existence. No, not to cleanse. But to expand the industry and maybe show people that there is more than fucking around between node modules or gemsets.
Peace pendejos
**drops your mom's fatass...i mean mic** -
Anyone else here love staring at the commit train railways? It's pretty 😍
pic related: not so complicated as we are a team of two working on different branches.3 -
We have a external demo this thursday. We still need to merge a lot of branches and somehow get a online environment working.
It's 30C and my motivation is dropping by the hour.
At least im not the one to actually have to demo this for people in suits giving you a hard time.
But there are a lot of responsibilities open and no one is taking a lead or having somekind of plan. -
I don’t know why/how, but some guy in my team put the node_modules folder on GitHub.
This person ran *npx create-react-app* and for whatever reason probably DELETED the .gitignore.
I had to fix it of course, and in the meanwhile I forgot to switch branches before changing everything, making git crash because switching branches with +4 million lines of code deleted was too much.
Why don't they let experienced front-end devs initialize projects? I don’t understand.8 -
So.. We probably have thousands of rants on git and muggles here's one from me.
I've been roped into this ongoing project, guys with 1-1.5 years of experience are already working on it.
When they shared repo with me ...
I see 195 branches WTF! What are these idiots up to 🤔
And only handful of people working on project.
This one time I was merging branch with master ( branch #196) with master, guy sitting besides me asks me what I am doing I said it's good practice to pull before you push, right?(the line I remember reading here on devRant, I thought let's bee cool 😎 😋) And I explained him that I am merging 'em locally and will push once everything looks good ( I realized later that I shouldn't have wasted my couple of minutes explaining him)
He says don't waste your time and download (clone) the project folder(repo) from github and then paste or add your change to it.
Fuck you man, you should go fuck yourself instead of telling me that I'm wasting my time.
Sometimes I wonder, What do these guys think of github? Assholes, chutiya saale1 -
The Dev was asked an update on his sprint task.
What task? The Dev asked.
"You know changing our git branches from master to main" says the Scrum master.7 -
I have found that once you work for a company where you have to implement everything in its raw form using the raw language and raw logic, you really have to know what you're doing and knowing some basic/medium programming and having some algebra knowledge doesn't cut it (unlike some people think).
I've been at two sides of the coin: I worked for a company that had everything in place, a framework that handled all edge cases and what not and I just had to focus on user stories, but I also worked for a company where I had to do everything manually.
For example, at the latter company I had to know Discrete Mathematics; truth tables to their most convoluted and disgusting form, having to be able to apply this on a late Friday night with a headache and lack of food and sleep with the PM stressing out.
I've had to deal with NOT AND OR AND OR AND OR AND branches or whatever, where an OR behaves like an AND and if you want a value between an AND AND and an OR, you'd have to do a NOT OR.. to think about latches, all in my head, sigh, anyway, within limited time constraints, without even having time to write tests, having to make sure that everything checks out while the client is breathing down my neck. Yeah, not such fun times.
I'm happy for those of you who can just write some moderately difficult logic but you don't have to break your head over doing everything manually, as if you're in the coding stone age and nothing is taken care of.
Companies like these make me want to run away.3 -
Question: I completed a feature on separate branch. Since I'm not allowed to merge things on the master branch (only pm is allowed to) I open a pull request.
However, PM has decided that he will only accept PRs which can be automatically rebased & merged.
So now i opened my PR and PM says that GitHub complains that the branches cannot be automatically merged.
So I rebase the branch - push and tell him to try again. But the same issue - GitHub won't merge the PR. So I try again - rebase the feature branch onto master which runs me through the same rebase steps as on the last try. I successfully complete this one too and push. But still - GitHub won't swallow the PR.
Anybody an idea what could've went wrong here?6 -
Got branches:
+ More organised
+ Easier to work on lots of features
+ Easier to collaborate
- Commits don’t show in github contributions
Result: no branches1 -
Our team uses story format titles for JIRAS like As a ..., I want...
But in our git repo, a lot of people create branches using the same name:
{JIRA-ID}-as-a-...
And I'm always like why the fuck can't you take 5s to name your branches more descriptively? I usually name mines using some keywords from the Jira Title
But wondering now what do you all think/do?2 -
Trying to merge
A conflict was found, just small changes on both files
Trying to resolve
*A hour later*
Deleted the code form both branch, merged the branches and repushed the code to the merged branch.1 -
Questions/best practises for git?
For example:
- use present tense in commit messages. (why though?)
A friend of mine also starts his commit messages with either [Task] or [Cleanup]. Useful for finding Commits in Gitlab etc, because only the first line is shown from the message.
Also, one teacher recommended the usage of branches and the other didn't because of alot of potential merge conflicts when working in a Team or a larger Collaboration. What are your thoughts?
Sorry for the messy post, have a hangover4 -
Just taken on a new client through my own business. Great news! They pay well, everything seems to run smoothly and they're a great team.
They gave me access to their Gitlab repos and all looked well...until...no branches! They have zero branches to determine what is the current live distributed project, dev project or any of the various other reasons. I don't often use git but this really bugs me!7 -
Team leader doesn’t know the difference between merge/rebase nor uses pull requests to propose changes to a humongous repo, just two branches where everyone commits and pushes freely! 💩💩💩1
-
So today I was having this discussion with my colleague regarding a messed up pull request.
Me: are you done merging the remaining branches into master?
Colleague: no, I'm still merging the changes manually.
Me: but why?
Colleague: because the changes will overwrite the changes in master.
Me: but how? It will just conflict and you can keep whichever changes YOU WANT. You can even edit before committing the merge.
Colleague: I'm just redoing the changes manually anyway.
Me: -_- -
When you're the only one in your team understanding git and knowing all the requirements: haven't programmed for weeks, just fixed branches and answered questions -.-
-
Best and worse IDE feature for you.
Me :
IDE : VS2019
Best : Conditional break points (cf image)
Worst : Git branches management (For example : can’t delete multiple branches at the same time)14 -
Client A asks for Feature A. Devs start working on feature A. Client B comes in asking for Feature B. Management tells us to stop everything that we're doing to work on Feature B. Client C comes in...
We end up having tons of branches with half-finished features, and the product never improves1 -
So I thought I knew source tree, apparently I do not... Lost a week's worth of work, went to history, saw someone removed it with a commit, and now I'm getting blamed for my own work 'disappearing'. The reason I am being told I am to blame is how I control my branches... So how I do it is that I keep a local copy of the master branch, I keep it updated and monitor it for changes regularly (meaning fetch and pull cause double tap..) before I do a merge, I check for any new code on master again, then using the local copy of master, which I just updated, I pull the master changes into my branch, deal with any conflicts, build and done. Then I request my changes into master once I am happy everything is good.
My question is, clearly there is something wrong with the way I do things, so please source tree users, what is the most fool proof way to pull latest from master so that I don't loose code? 😔11 -
Ok finally, I can tell now.
There's a college project I'm in with 2 more people that uses Python and AnyLogic (separately).
We also need to write some LaTeX, so as I was already using PyCharm for the Pyshit, I used it for the LaTeX and for Git.
I used it for Git too because I didn't know how it used Git and was worried that if I used the console it didn't recognize something or glitched out or something. And what the hell, it's a mature IDE, what could be so hard or possibly go wrong?
I had to re download the repo a couple of times because between pushes, pulls, merges and commits something happened and the repo ended in a weird state.
These are all the things I do:
Add, commit, create branches, merge, push, pull and delete branches.
So, I hadn't opened in some time. The last time I tried to bring something from another branch, and stayed up late to finish something. I was waiting for my classmates to join the call when I thought something like "Hey, I should commit what I did until now, it worked great.". When I examined the IDE I found out I was in the middle of a rebase or something. I start clicking buttons to at least try to commit. I press "Skip Commit". I lose everything.
What the fuck‽ As you can see in the comprehensive list above, I never do something similar to a rebase. Apparently when I tried to merge a couple of branches, the stupid IDE thought I tried to do a rebase and never asked me to finish it. Why do something I have never asked? Plus, why haven't you prompted me to finish the operation? That's so stupid. I'm never trusting IDEs again.
I was so lit for losing so many hours of work I did a couple of weeks before, I would have to think it and do it all over again because of something I never asked.
We spent an hour looking for a way to recover the lost code.
Why an hour, you ask, if you can use the Local History for that in PyCharm?
Because none of us had used it before and the articles we found said that you had to open it from the toolbar. From the toolbar it was greyed out.
Then I found the option in the contextual menu of the files. Recovered the LaTeX files but on the AnyLogic files, it was greyed out.
I had to open the Local History of the folder containing the AnyLogic file.
And that was that.
I almost faint.
Fuck Python, fuck PyCharm.8 -
Can somebody please explain to me why I need to be an expert at witchcraft & dark magic just to merge 2 SVN branches. And why the fuck anybody still uses SVN when there's git.5
-
Context: ive been porting a single threaded D.A.G scheduler into a lockless multithreaded one. Point is its an objectively complicated project where theres lots of overlap in the code and architectural boundaries are very fuzzy.
My boss: "Can you just make new branches for every 'large' change youve done. Its too hard to merge this one giant branch youve got"
Me: "Fuck bro, but this is 2 months worth of significant refactoring where the commits are not atomic and you told me way back then that it was cool to work in my own repo. Now ive got to go redo half my work"
Boss: "Well yea but isnt it so much better to work with clearly seperated histories"
Me: "yea its great if you tell me thats the workflow you want upfront. This is gonna suck but ill but my balls and dive into this pit of lava if u say." -
After merging 2 branches, Git randomly decided not to merge one particular line (the place where my newly defined function was called) and that caused a fixed bug to reappear. First time in 4 years I am witnessing Git do something strange like this— probably an issue in the “merge by ort strategy”.5
-
so there was this issue regarding our company's system which tends to be a problem for sometime now, its a recurring issue caused by the data that the users needs to encode to the system
today another issue arised, our senior supervisor, not knowing that this issue was already recurring and there is already a documented step procedure on how to address it, suggested or come up with a another solution which would task one of our co-developer to push a temporary code to production during business hours just to accommodate the issue and rollback the code after
take note that its during business hours and more than a hundreds of branches of the company are using the said system
what was he thinking !!
thankfully one of our colleagues voiced out explaining that this issue was already recurring and already has a procedural solution, but still our brainy-know-it-all-stubborn-close-minded heck of a supervisor insisted that the solution has computational impact and still insisted that they push a temporary code to the production, what an idiot!!
fast forward our colleagues ended up standing their ground, even if our supervisor is highly doubtful at them, and executed the already established solution instead of pushing a temporary code to the production which was such a bullshit idea
damn those close minded people they shouldn't have reach that position in the first place!! -
Do you guys still see the relevance of using code freezing instead of just properly managing versions, repositories and branches in a cyclical manner, given how advanced software practices and tools are supposed to be?
To give some context, the company I work for uses the complete trash project management practice of asking teams to work on a sprint basis, but there is still a quarterly milestone and code freeze to commit to and it's where shit hits the fan.
Development teams rush features at the end of the quarter because they had to commit at the very least to a 6 months in advance planning (lol?) and turns out, not being able to design and investigate properly a feature combined with inflexible timelines has high chances to fail. So in the end, features are half-assed and QA has barely any time to test it out thoroughly. Anyways, by the time QA raises some concerns about a few major bugs, it's already code freeze time. But it's cool, we will just include these bug fixes and some new features in the following patches. Some real good symver, mate!
Of course, it sure does not help that teams stopped using submodules because git is too hard apparently, so we are stuck with +10Gb piece of trash monolithic repository and it's hell to manage, especially when fuckfaces merges untested code on the main branches. I can't blame Devops for ragequitting if they do.
To me, it's just some management bullshit and the whole process, IMO, belongs to fucking trash along with a few project managers... but I could always be wrong given my limited insight.
Anyways, I just wanted to discuss this subject because so far I cannot see code freezing being anything else than an outdated waterfall practice to appease investors and high management on timelines.8 -
What if life was on git? Where you can simply create new branches of it, stash shit, remove dumb people with dependencies and finally the ability to turn back time with this version control.5
-
So im working on a bot. The response of the bot wasn’t correct according to colleague a. So i fixed the response. Now i have a virtual directoy and the response is wrong again. Meanwhile i fixed issue b where the template path wasn’t correct so i fixed that as well. Then i got a merge conflict because i fixed 2 problems in one file in two different branches. So i fixed that. Then feedback came on issue b so we fixed that again. Now my response is fucked completely because the agent isn’t defined i don’t have a clue why. If i ever find out the output probably still isn’t correct either and even if it was i probably get feedback which fucks everything up again.
My god i landed in development hell3 -
A big hurdle I'm fighting for last 1 year, is to convince a bunch of people having 10+ years of experience not to make production released of the same codebase from multiple branches.
-
I feel so lost all the time Everytime I think about the future. How are you all going forward?
- What should i be doing ? I used to like computer science when it was taught with lots of simplification and abstraction (in the school level). Now i know there are a 100+ research areas/work areas/branches in it, and i am an average in all of them.
I like most of them more or less, and won't mind giving away my years of life working/learning them. But for what and why?
-- Money? Every profile turns into a decent salary after a certain time. This means i can ride any boat i want.
-- Passion/interest? Now what exactly is this?as i said everything feels doable, given enough time to get a hang of it.
-- Fame? Its rare the developes, testers or other individuals in computer science ever gets a solo credit. Most of the time its either the ceos, the researchers or the company itself. So i guess getting a fame is equal to burning your neighbors by flaunting your cash for most ppl
-- Happy life? Meh, this point is affected by a lot of other factors. Would come back to this point later
- everyday in my feed, there are people showing 6, 7 sometimes even 8 figure salaries. Other people would get inspired with those, but i feel very weird about these.
I never see myself earning those, idk why. Why would someone give me those huge amounts?
How do you find yourself deserving for ythat big ass money? At what point you hit that realisation? Here is a small story :
I did an Android dev course around 2.5 years ago. There was a guy there an year older than me. He was very bad in this, i tell you. Most of the time, i was explaining the concepts to him after class.so last year he graduated, and took a job, We both used to expect a decent salary amount, say x (with me having a little ego that i expect certainly more than him, say x+20% ), but he took a job for half that number , say x/2.
After 1 increment and 1 job shift in 1.5 years, he has now successfully achieved package greater than x. I on the other hand, being still at college and with a lot of bad internship experiences now feel that i won't be getting even x/3 at my start no matter what.
- There is also this thing about people going into more of a management and other non tech roles once they start growing in this field. Why? What did they realized? I am sure not everyone of them would have hit this realization that tech is not what they want to do (which i can't understand why). Maybe its the money and/or happy life expectations?
i have started to feel dumb for not being able to think innovative new ideas and being an average mind :/
And about the happy life, so far its not much happiness for me, and am confused.
I am grateful about the usual things i have (healthy middle class parents, working body, roof , food,etc) , unhappy about the things i don't and see with others (more money, materialistic assets, confidence, siblings, social life, love life, etc) and that's it.
From what i understood of 21 years on this earth is that everyone is running to achieve that list of their desires and wants to move them from todo to done, like trello task. If you can't then keep fighting to achieve or grudgingly accept the fact that you couldn't and be happy about it.
So is that it? That's your happy life goals?2 -
When my codev branches my prototype repo because he's going to do something totally different, but just does the same.
-
Extremely frustrated with the release process and versioning system at my current company. Don't know if this is same everywhere or the half ass release managers can't think of a better way here.
Basically for any client raised issue that can't wait for next release are built as a hotfix. However hotfixes are never bundled togather or shiped to other clients. This is causing a vicious chain, two clients raise two separate issues on same version. Instead of fixing them as single hotfix (however minor the issues) we create two hotfix versions for each with only their issue. A week later same clients come back with the issue the other raised. Once again instead of bundling what is now effectively same code we build hotfixes on top of the clients respective branches. We now have two branches to maintain with same codebase. No matter how serious issue, the hotfix is never made generally available and always created on client's specific hotfix version.
Now that was an example for only two clients, in reality we have released five patch versions of a product in last 2 years. Each product version contains about a dozen artifacts (webapps, thick clients, etc) with its own version. Each product version being shipped to various clients. Clients being big banks never take a patch of product even if it fixes their issues and continues requesting hotfix. We continue building hotfixes on client branch and creat ever increasing tech debt. There is never a chance to clean up or new development. Just keep doing hotfix after hotfix of same things.
To top if all off, old branches are still in svn while new in git. Old branches still compile with ant new with maven. Old still build with java 5,6,7 while current with 8. Old still build from old jenkins serve pipelines while new has different build server. Old branches had hardcoded integration db details which no longer exists so if tou forget to change before releasing it doesn't work.
Please tell me this is not normal and that there are better ways to do this? Apologies I think I rambled on for too long 😅5 -
temp commits are generally more useful than git stash.
instead of stashing, do a commit with a message like "THIS IS NOT A COMMIT, DON'T INCLUDE THIS". with some discipline you can then go back to your branch, `git reset --soft HEAD~1` and voila, it's similar to a `git stash pop`.
but it's better because you can do this in multiple branches at the same time and there's no fear of accidentally dropping some stashed commit.5 -
When the new owner of the company decide to regroup every branches of the business to use a disastrous unoptimised .NET software. When the current one is very fast, the interface kinda UX-friendly. Now its, a home hosted .NET software with Windows forms elements with multi-windows inside the main software. Just to help you create yourself an image of the situation. It cannot be installed if there is more languages then only En-US. It will freeze the updater.
The time between switching tabs is in average a 3-4-5 seconds each time.8 -
God I hate slow burn in projects.
Trying to do something with a feature that's still in beta for the language. No docs so I asked for this.
Seems like a cycle of days where I'd be trying random ass solutions to no avail when suddenly one time I mistype the Google search and it brings me to this obscure ass blog with a potential solution that raises some new issue all over again.
It's been modification/addition/removal of over 10000 lines in different local branches and commits and only 200 of them actually are going to make it into the final code.1 -
is it necessary to have cherry picking a part of git branching/release process?
we have 3 branches : develop, release and master.
currently every dev works on feature as follows : they make a branch out of develop, write code, raise pr against develop, get it reviewed and merge back to develop. later the release feature list is generated, and we cherry pick all the release related commits to release branch, and make a prod build out of release branch. finally, the code is moved to master and rags are generated accordingly.
so the major issue with this process is feature blocking. as of now, i have identified 4 scenarios where a feature should not be released :
1. parallel team blocker : say i created a feature x for android that is supposed to go in release 1.2.1 . i got it merged to develop and it will be cherry picked to release on relase day. but on release day it is observed that feature x was not completed by the ios dev and therefore we cannot ship it for android alone.
2. backend blocker : same as above scenario, but instead of ios, this time its the backend which hasn't beem created for the feature x
3. qa blocker : when we create a feature and merge it to develop, we keep on giving builds from develop branch adter every few days. however it could be possible that qa are not able to test it all and on release day, will declare thaf these features cannot be tested and should not be moved to release
4. pm blocker: basically a pm will add all the tickets for sprint in the jira board. but which tickets should be released are decided at the very late days of sprint. so a lot of tasks get merged to develop which are not supposed to go.
so there's the problem. cherry picking is being a major part of release process and i am not liking it. we do squash and merges, so cherry picking is relatively easy, but it still feels a lot riskier.
for 1 and 2 , we sometimes do mute releases : put code in release but comment out all the activation code blocks . but if something is not qa tested or rejected by pm, we can't do a mute release.
what do you folks suggest?9 -
VS Code and SourceTree are two of the most used tool by me this year.
SourceTree helps me visualise the git commit history and branches more than git log can.
VS Code, on the other hand helps me with all the short code editing stuff and sometimes even helps when I don't want to open a full fledged IDE for the project. I have setup my own Icon themes for VS Code and even created watchers for files. Can't do this much on Webstorm so easily. -
Git branches.
Will this crazy idea work? Doesn't matter. Nobody needs to know about half these branches. Just the ones that worked.1 -
TL;DR: idiot 'team leader' does mindless merge to master. Precious time wasted in a high pressure deadline environment.
So, i work currently at one of Belgiums largest consulting company's at brussels airport, we are moving their analytics platform to the cloud.
We use puppet to manage the systems.
When i started i noticed immediately that their 'development workflow' is hardly to be named as such, because they simply change stuff directly on server , manual 'temporary' fixes everywhere, hardcoded stuff, non validated code... Basically the way one would develop in their garage, not in a consulting company as this one. But that is just the beginning.
A month ago i did a major effort to equalize all the discrepancies between the codebase and the server. Ensured entire codebase to be validated, syntax checked, parsed, tested... It works. A 'great codebase overhaul' commit was PR'ed to master and got merged.
Yesterday the team lead, i'll call him 'B-tard' from here on, has also 'equalized the discrepancies between codebase, server and the restnof the stale branches on the repo' . i was doing my other work on my branch so no fucks given. This is where i should have given some fucks.
Anyways, today. The day starts every day with merging the master branch into your working branh because you need the latest working codebase, right?
Wrong!
This fucking dipshit smug b-tard has done a mindless merge of the entire codebase, effectively removing ALL validated working code for provisioning servers. Control blocks, lookup functions, lambda's... Basically everything he did not understand.
At the same time the project is already way beyond the allotted budget in pkney and time, so there is a huge pressure to have a working 'production' environment TODAY!
THIS MOTHERFUCKING B-TARD JUST MADE THAT IMPOSSIBLE.
i'm loving this assignment, i'm loving the PM, the collegues, the environment, the location... everything. All but this fuckibg b-tard that somehow got his position by sucking dick or licking ass or both...
I wanna get out asap.
Oh... While typing this and arriving at the room of the office... It is locked, i have no key.
Fucking asshole!1 -
... worst drunk coding experience?
none. or to be more precise, all of the three of them I had. I can't code drunk, i hate doing it, i hatw even thinking about doing it when drunk.
so after those initial three attempts i don't try to do it again, ever.
BUT, best coding experience while high?
ALL OF THEM.
some of the best pieces of code I wrote i did when I was high. my mind goes into overdrive at those times, and my thinking is not lines/threads of thought, but TREES of thought, branching and branching, all nodes of each layer of the tree coming to me AT ONCE, one packet == whole layer across all of the branches.
and the best was when one day, in about 14 hour marathon of coding while high, i wrote from scratch a whole vertical slice of my AI system that i've been toying around in my head for several years prior, and I had all of the high-level concepts ALMOST down, but could never specify them into concrete implementations.
and I do mean MY ai system, my own design, from the ground up, mixing principles of neural networks and neuropsychology/human brain that I still haven't seen even mentioned anywhere.
autonomous game ai which percieves and explores its environment and tools within it via code reflection, remembers and learns, uses tools, makes decisions for itself for its own well-being.
in the end, i had a testbed with person, zombie and shotgun.
all they had pre-defined in their brains were concepts of hunger and health. nothing more.
upon launching it, zombie realized it wants to feed, approached oblivious person, and started eating it.
at which point, purely out of how the system worked, person realized: "this hurts, the hurt is caused by zombie, therefore i hate zombie, therefore i want to hurt it", then looked around, saw the shotgun, inspected its class by reflection, realized "this can hurt stuff", picked the shotgun up, and shot the zombie.
remembered all of that, and upon seeing another zombie, shot it immediately.
it was a complete system, all it needed to become full-fledged thing was adding more concepts and usable objects, and it would automatically be able to create complex multi-stage, multi-element plans to achieve its goals/needs/wants and execute them. and the system was designed in such a way that by just adding a dictionary of natural language words for the concept objects on top of it, it should have been able to generate (crude but functional) english sentences to "talk" about its memories, explain what happened when, how it reacted, what it did and why, just by exploring the memory graph the same way as when it was doing its decision process... and by reversing the function, it should have been able to recieve (crude) english sentences that would make it learn what happened somewhere else in the gameworld to someone else, how to use stuff and tell it what to do, as in, actually transfer actual actionable usable knowledge to it...
it felt amazing to code for 14 hours straight, with no testruns during that, run it for the first time after those 14 hours, and see that happen.
and it did, i swear! while i was coding, i was routinely just realizing typos and mistakes i did 5-20 minutes ago, 4 files/classes ago! the kind you (and i) usually notice only when you try to run the thing and it bugs out.
it was a transcendental experience.
and then, two days later, i don't remember anymore what happened, but i lost all of that code.
and since then, i never mustered enough strength and resolve to try and write the whole thing again.
... that was like 4 years ago.
i hope that miracle will happen again one day...3 -
What the hell kind of tool is Gitlab? I just want to automatically backmerge hotfixes from master to development. Even fucking Bitbucket had a checkbox to enable this. But not Gitlab, no, you better create a pipeline job in your already unreadable, overcrowded pipeline yml, but oh, the checked out repo in the pipeline is a detached head and you cant push with the user that checks out there. So what, just use a project acess token which revokes after a year breaking your task and then switch origin amd branch manually. But your token-user can't push to protected branches, so create a merge request instead, which requires approvals, making the automated step no longer automated.
But dont worry, you can just use the gitlab api to overwrite the approval rules for this MR so it requires 0 approvals. But to do so you must allow everyone to be able to overwrite approval rules therefor compromising security.
And so you made a feature that should effectively be a checkbox a 40+ line CI job which compromises your repo security.
which nuthead of an architect is responsible for the way gitlab (and its CI) is designed?6 -
3 release branches for version 3.4. All of which are both behind and ahead of the other. Newest version of app. 2.1.5. Because versioning.
-
EVEN THOUGH YOU PUSHED 31 FEATURE BRANCHES YOU'RE WORKING ALONE ONE YOU KEEP PUSHING CHANGES TO THE MASTER BRANCH. MOTHER OF GOD! WHY!?!?!?!?1
-
I just have one fellow programmer at work...
He actually managed to create a merge conflict on his own, because he worked on two branches simultaneously, and then assigned me to resolve it, even though I worked on a whole other part at that moment and have no idea which parts he wants to stay and which to be discarded! Take care of your own shit for god's sake!! -
How do I always misspell checkout?! Needing to switch branches is the bane of my existence when I use terminal.
And yes, I did put an alias. Hopefully I'll get used to using it :) -
Not purging my senior devs code from missing curly branches earlier. Maybe not my worst sin, but DAMN DO I REGRET IT NOW.
-
I was doing something in Git, switching and I guess another process was doing a fetch and now all the files no meter what bench I'm in says Unstaged/Untracked.
I tried deleting the main branch and checking it out again from remote but nothing.
I have no idea what I did or how to fix... Seems like I need to delete the whole folder... But then I'd lose any changes in feature branches out local branches which afternoon checked in....8 -
Honestly, I love using the GUI and the terminal in combination when it comes to Git. I feel like I'm faster doing just general commits (hint ctrl+enter commits your work).
But I use the terminal when I start getting into the weeds, like checking out, resetting and doing stuff with my branches.1 -
Just a friendly note: If you use the same technique as I i.e. local GIT repositories backed up on cloud, ALWAYS make sure there is still at least as much free space as the largest repo shallow clone.
It may happen that some really really archaic "commits" will disappear and git won't work as usual, but mostly you'll have an access to the branches, which you can diff against the master and make patches. Then just clone, make branches from patches and code happily ever after.
Also... you really really shouldn't push when you discover(git fsck --all) such an issue in your local repo, although I think git won't even allow you to do so. -
when you don't recall changing anything (after resolving merge conflicts on other branches) but when you change back to your feature branch you were debugging
the page doesn't work so you can't even debug it
so now you have to figure out why the page doesn't even load
fml1 -
The team lead frequently changes a common library in the trunk, then he complains to us why we are not reflecting those changes in the branches. I neeeeeed heeeeeelp im going craaaaaaaazyyyyyyyy.1
-
Update local removed git branches
You can update the removed branches on your local machine by
git fetch --prune --all3 -
Just joined a new company and can only describe the merge process as madness.....is it or am I the one that is mad?!
They have the following branches:
UAT#_Development branch
UAT#_Branch (this kicks of a build to a machine named UAT#)
Each developer has a branch with the # being a number 1 to 6 except 5 which has been reserved for UAT_Testing branch.
They are working on a massive monolith (73 projects), it has direct references to projects with no nuget packages. To build the solution requires building other solutions in a particular order, in short a total fucking mess.
Developer workflow:
Branch from master with a feature or hotfix branch
Make commits to said branch and test manually as there are no automated tests
Push the commits to their UAT#_Development branch, this branch isn't recreated each time and may have differences to all the other UAT#_Development branches.
Once happy create a pull request to merge from UAT#_Development to UAT#_Branch you can approve your own pull request, this kicks off a build and pushes it to a server that is named UAT#.
Developer reviews changes on the UAT# server.
QA team create a UAT/year/month/day branch. Then tell developers to merge their UAT#_branch branches in to the previously created branch, this has to be done in order and that is done through a flurry of emails.
Once all merges are in it then gets pushed to a UAT_Testing branch which kicks off a build, again not a single automated test, and is manually tested by the QA team. If happy they create a release branch named Release/year/month/day and push the changes into it.
A pull request from the release branch is then made to pre-live environment where upon merge a build is kicked off. If that passes testing then a pull request to live is created and the code goes out into production.
Ahhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh it's a total mess. I knew when I took on this job it would be a challenge but nothing has prepped me for the scale of the challenge!! My last place it was trunk based development, commit straight to master, build kicks off with automated testing and that just gets pushed through each of the environments, so easy, so simple!
They tell me this all came about because they previously used EntityFramework EDMX models for the database and it caused merge hell.9 -
!rant
In case anyone else finds this useful - Git 2.22 gets a --no-overlay flag, allowing you to switch directories between branches at will *without* having to clean up any newly created files in the process.
Long overdue IMHO. -
What’s going to f up my career from here on out is Git. I’m constantly needing assistance from others with it because I can never keep everything straight in my head with what’s going on “in there”. It’s always getting tangled up like old fishing line and I just have to cut the line and start fresh again. I honestly feel so stupid compared to other people who don’t have a problem with it. My brain just can’t keep track of all the different states local, branches, and master can be in at any given time, and across more than one developer. I’m probably alone so, yeah, go ahead and roast me. I probably deserve it for being so perpetually gobsmacked by it all.9
-
Use
git branch --merged
to get, you guessed it, all the branches you have merged.
Use
git branch -d <branch-name>
To delete a branch if it has been merged (use -D for forced)
And Use,
git branch --merged | egrep - v "(^\*|master|dev)" | xargs git branch - d
To delete all the branches that you have merged (but not anything with master/dev in their names)
Sorry for the formatting, I don't know how coder formatting works on DR..4 -
Ah yes. Make changes on that deprecated repo. Thanks. Now I have to merge them and remove all the branches code too in that repo. I guess an empty master and a broken deployment script isn't a big enough flag for you.1
-
for the 3rd time ive tried introducing some version control on a project that really needs it because it has multiple people working on it.
And because the last time my efforts got shut down because in practice people thought it was too much of a hassle to develop locally rather than on the shared development server directly, I made a feature that would let people checkout branches on said server...
Apparently the action of; saving > committing > pushing to your feature branch > merge after aproval, is still too much for people to comprehend; "I think this is too convoluted can't we just keep pushing to the production server to check our work and then commit and push to the master branch"
So I just got pissed and said fuck it, no more git then, I'm not even going to put any effort into changing tooling here anymore, and this is a massive project where we have to manually remove code that isnt ready yet from the staging environment.
Are the people I'm working with just this stupid or am I really overengineering this solution because I think 4 people should not be working on the same file at the same time without any form of version control and just direct upload to FTP.
(and yes, I know I should leave this job already, but social anxiety of starting at a new company is a big obstacle for me)3 -
I was about to implement a new feature (which I will call feature X), but I was not sure which branch feature X should be implemented on. Because of different products, there are a lot og branches around.
I was going to implement feature X on branch A, but that branch was currently not working, and someone was working on fixing it.
I was told by my boss to branch out from branch B as feature X would be merged in there later anyways.
And so I did.
After I am nearly finished with feature X I discover I need feature Y from branch A. Feature Y is not yet on branch B, but is scheduled to be merged in some time soon.
So I can't really finish feature X before that point, and I am told by colleague 1 I should have implemented feature X on branch C, because feature Y is there and branch C will be merged into branch B soon.
However, I found out that this has happened before.
First, colleague 1 was told to implement feature Y on branch A. This is the real implementation, the one I need. After he had spent a week implementing feature Y, he was told by colleague 2 that the feature should be implemented on branch C, which is branched off from branch B (I think). So he had to spend a day or two to move feature Y to branch C, but he still kept feature Y on branch A, because all branches will eventually be merged into branch A.
After a week or so, colleague 3 asks about feature Y and is told that the feature is on branch C. But colleague 3 need the feature on branch D, which is branched off branch B for some weeks ago.
I don't know all the details here, but colleague 3 ends up implementing a version of feature Y on branch D and he is happy.
I don't know how much time was wasted because of wrong information from management, but I have no intentions of wasting more time. I'll wait for the merge of branch C into branch B.
If this rant makes no sense, that's just my reflection of management some times.
I love management.4 -
!rant apologies
I am a third year computer science student and I'm interested to see how professionals think I stack up against grads they have worked with straight from uni.
I have spent 15 months at a web company working on bespoke solo products on LAMP stacks. I know html, css, JavaScript and its library JQuery very well (I know JavaScript is massive to be saying I know it well)
I am reasonable at PHP and MySQL. Currently I am studying node.js and building an api that mashes up data from other APIs to build a new service. I'm also working on a C# Microsoft framework bespoke website. I know git to a reasonable level - branches, merges, rollbacks and all that jazz.
I am also studying development architectures to try and be more useful.
So if you guys came across a new grad that knew HTML, css, JavaScript, JQuery, maybe angular js, PHP, basic Linux commands, MySQL, C#, dev architectures, agile methods, node.js, git and has 15 months experience working on small to medium sized solo projects would you want to hire them?
Point to note I'll probably graduate first class (80%+) from a mid range uni.
Sorry, I know this is not the place but I like this community.5 -
Slowly I'm learning not to give a shit anymore. This project I'm on can burn. I'll make progress and help out my fellow devs, but if it takes me longer than estimated to complete my tasks because of the unforeseen technical debt arising from this piss-poor excuse of an application design (plus we're 13 devs working on like 5 different feature branches - God help us with our merge conflicts) then so be it. If my tech lead complains, he can find someone else to take the wheel.2
-
So I stashed my changes to switch branches and quickly fix a f**k up, then I switched back and went to 'pop' the stash.... only I didn't click 'pop' I clicked...'delete' and GitKraken or ShitKraken as it should be called, didn't ask for confirmation... it just deleted all my changes. FMLdevrant fml commit not stash stashshit git gitkraken little and often shash commitment issues version control5
-
Having competitions to name our branches after animals, and fun quizzes in the retrospectives to win cuddly versions of said animals. :3 good times.
-
Has anyone ever faced problems with VS Code Git GUI and git in terminal?
:/
I use the gui for some stuff and the terminal gets out of sync.
So it's like I have discarded changes from the gui and then WSL still says I have changes when changing branches, so I try to stash and it says there are no changes. It gets really frustrating.
😕4 -
I've having issues trying to form a proper branching strategy for my mean stack app deployment.
Heroku creates staging and prod branches for my web app so I'm a bit confused if I need my own staging branch?
Currently I have this: feature -> dev -> staging -> heroku staging (the staging branch seems useless)
Also, Heroku allows you to promote heroku staging to heroku prod, so there's no point in making master push to heroku prod.
I'm thinking of making my strategy to the following, but wasn't sure of any pitfalls or anything I'm overlooking long term.
feature -> dev -> master -> heroku staging -> manual promote to heroku prod.
Any suggestions?5 -
TFW you know you're going to be seen as a sort of code anarch or unenlightened (foo)barbarian for even suggesting that there are other git workflows more suitable than GitFlow, but you do it anyway.
Saying that I keep my master unprotected feels like telling Grandma I worship Satan.
I work with a very small team that's always physically nearby, we all get along well, trust each other and communicate to know what everyone is up to, which I guess is hard to believe in and of itself, but is it so fucking hard to believe that we'd be okay without redundant eternal branches or a vomitload of unbisectable history-warping merge commits? -
The great thing about version control is that you can seamlessly work alongside other coders through the use of dozens of diverged and cryptically named branches.2
-
GitHub defaults to only allow squash merging feature branches, and suggests that it is "safe" to delete the feature branch that contains all the detailed commit messages at the place where they belong. Losing history, plus creating unnecessary "conflicts" after continuing to work and adding fixes to the same feature branches later.3
-
Devs from company that develop/modify a service for us say "you can test on <env>".
Description of how to test: scattered across multiple tickets, comments and slack messages in multiple conversations...
Oh and please... Could you not directly merge 20+ branches directly to the dev branch without testing...
So much going wrong with this project... Already a month overdue on the first release... -
I don't know why, but there is something about watching the files disappear and appear in the VS Code window when I switch and merge branches. Maybe it is because it reminds me my work is safe and sound. Unlike before my company used version control.
-
Question about managing git branches.
For releases, we branch develop (the main branch) into a release.version branch in which we bump the version and do any last minute bug fixes for issues found in testing.
After the release we need it back into the main branch as well as master.
But also we keep the branch as well in case we need it such as for a hotfix release.
Is keeping it right though?
General issue on my team I feel is nobody deletes their feature branches after they are done and merged into the main branch. I think there is a feature in most Repos where it can auto delete these branches when a PR is merged.
And well branches themselves (at least the HEAD) are sort of just bookmarks. All commits can be accessed by their hash and basically is a full snapshot of all the commits that upto that point that it was based off of?
So you could just tag the last commit in the release branch with release.version and delete the branch itself? And that I think is the correct, normal way?
Not sure how to explain this to my boss or team as they aren't big on technical details...9 -
Least favorite enterprise software (so far) is Oracle JD Edwards (but more specifically the integration between systems).
Unfortunately a board member was friends with an employee who recommended JDE. It required full time maintenance and a few years later that employee left and the company wrote off over a million dollars to go back to the old (but slightly updated) system.
Following that, a board member (the same one I think) agreed to have another friend's security business install CCTV across the branches. The project was not scoped and no thought had gone into it, making a real mess for the IT department to sort out (provided hardware was under spec'd, existing networking equipment needed replacing, etc)
Who do these upper management people think they are that they can make decisions based on little fact or research and expect the people beneath them to just magically make work.
The huge salaries of those people is not justified. We're the real workers who actually get stuff done so the pay and appreciation should be spread accordingy.
Rant over. -
How do you deal with situation when u need to merge multiple feature branches to develop branch? All feature branches have develop branch as base. So as soon as one feature is merged to develop then there will be contlicts in other feature branches.
Should I merge first feature branch to develop, then rebase feature2 branch on most recent develop and then merge the rebased feature2 branch to most recent develop and continue like that?
What if later I need to do hotfixes for previously merged branches? Should I revert them then rebase them on most recent develop and once again merge it to develop? Or should I just make small commits for fixes.10 -
Looking back on it, I don't understand why I used merge commit strategy as go-to to merge git branches the first +-3 years of my career. It sucks
Guess I was just afraid of rebase after I accidentally erased history the first time I used it and failed.4 -
Guys, how do you structure branching in an enterprise project?
We're using git, managers are MIA, I'm basically helping another new guy kick off and maintain the projects that we have.
What would be a good branching strategy? Front end and backend in the same project, 5 man team in the future.2 -
God damn...if you want to be a developer learn using git and fucking STOP messing up the repo every time you push something.
Understand the importance of branches and use 'em so the problems you're causing are isolated and stop commiting / pushing on master....ITS NOT THAT HARD TO READ THE FUCKING CONTRIBUTION GUIDELINES!!!3 -
For a small team (<= 7 people) working on a self-managed Gitlab instance ('Starter' subscription), is it better if each user keeps a fork of the project they work on (working on other branch than master) or have everybody work on the same fork (still, different branches)?
Also, squash commits on branch merging, yes/no and why?4 -
hey, how do you keep up with the migration files and git branches, i name them, how do you make sure the current branch has latest migration files so it does not break your application :)2
-
Or company banned DourceTree so everyone had to switch to just using git shell.
Except me... I installed GitExtensions which is allowed.
I can't decide if I'm a git noob, better at being lazy, or more efficient.
I do use she'll for certain things like deleting, listing branches but for commits and resolving merge conflicts... still prefer gui9 -
Your branch and 'origin/foo/bar' have diverged,
and have 2 and 1 different commits each, respectively.
(use "git pull" to merge the remote branch into yours)
git pull
hint: You have divergent branches and need to specify how to reconcile them.
git merge origin foo/bar
Already up to date.5 -
https://trunkbaseddevelopment.com/
A source-control branching model, where developers collaborate on code in a single branch called ‘trunk’ *, resist any pressure to create other long-lived development branches by employing documented techniques. They therefore avoid merge hell, do not break the build, and live happily ever after.
// Thanks guys, after such a nice introduction I now feel obligated to read the whole damn thing -
At workplace we work on other branches than master and I hate my empty contribution graph on Github :(
-
For some reason, out of no where, I made this word up. It's called Moop, and it's definition is paradoxical. It means "everything and nothing, anywhere and nowhere, etc". So one day at work one of my coworkers pushed his untested commit to the master branch of our 25k project. To make matters worse, he deleted all other branches and previous versions of the project. Our project manager heard about it and became so angry that he almost broke our no-curse-word-policy. So he called is all together to get around it so he could properly vent.
Project manager: "Guys I'm extremely angry at James (the one who pushed the untested source code to our commercial project, ruining it)
Me: well, I have a word that we can use
Project manager: what is it?
Me: Moop
You can guess what the next few weeks at work was like. All of my coworkers had to fix the crap James made, including myself. So the conversations went like this: "The mooperfluffer James should have never mooped with us!", "MOOP YOU JAMES, I HOPE YOU HET MOOPED TO HELL YOU MOOPUP!!!!!", "Hey James, guess what! I hope you moop yourself". Our boss became a strong moop user and spray moop all over James workstation. We put moop in his cup, his laptop keyboard, even his thumb drive. We downloaded moop.exe to his PC so we could moop his kernel.
Today James' life is officially mooped.3 -
Global rant.
A friend who studied with me in the software engineering degree, told me that they use source control, but only with commits.
No branches no nothing.
Now, I understand when a company won't work without source control but how can you work with source control without branches? In a start-up? With more than 10 deve?
How?
Why?4 -
Ayo, I just started using shell variables for git branches......
No more spamming tab after typing feat/bug/rele/etc.. 🙏1 -
Git: "Your local changes to the following files would be overwritten by checkout. [...]
Please commit your changes or stash them before you switch branches.
Aborting"
Fucking nitpicking, that's not "Aborting", that's meant to be:
"Dear user, would you like to overwrite your current changes, even more so as you are currently in a so-called detached head state anyway, as you obviously just checked out an old tag to try a temporary rebuild of an old project state."
Yes, the build targets are checked in, as this can be very useful in some scenarios.
It's just! some! CSS! from the SCSS!
Stop "Aborting"!4 -
If i have 2 branches on git
- main
- infra
You cannot push directly to main. It is forbidden. You can only merge to main
Now. Once i push to infra branch. Assuming all the shit went good pipeline passed tests passed etc. Then i merge it to main.
Now
Locally while im on infra branch. I have to pull latest changes from main otherwise ill fuck up everything and cause conflicts.
After trial and error i realized i just have to do:
git fetch
This fetches all shits from main (defaukt branch) into infra branch. And now it works. No rebase. No pull. Wtf?
Is this the correct way to do it?
Also i need someone to explain this to me like im 5:
- git pull
- git pull --rebase
- git fetch
What is the difference between those 3 commands? I tried googling and chatgpting but i cant seem to understand any explanation. Explain it to me in simple terms with examples15 -
I was all hyped up coz I WHINED AND BITCHED FOR MONTHS against a 5-6y old B2B company offering, that it's shit n needs to be remade
And they agreed, n only 2 people assigned to it yet, the last chief architect and me
But last guy is old n is the one who made it shit in the first place (we use Windows Tasks in a Windows Server, triggering once every minute to pretend background tasks)
n he doesnt even want 2 branches (: And is still making the same mistakes that made the last implementation shit n it's hard to stop him coz he senior and old
And now I kinda dont care, but have to coz job market's shit
Ffs4 -
Please, Teamcity, fucking learn that different commits relate to different branches!
So hate that piece of shit!2 -
Hello World! Question, what do your team usually do on the last day of work? We prefer push and merge our project branches and resolve conflicts, because nobody wants to write code 🤣
-
How do you protect your team's git remotes?
We tend to protect the master and stage branch from force pushing and only allow merging pull requests after successfull recent tests and successfull review by someone with proper permissions. Depending on the project the Dev branch is only protected from force pushing though. All other branches are free to handle however wanted.
We recently had someone do a "git push -f --mirror" without understanding the command. Quick reminder what that does: it mirrors all your local branches to the remote so that the remote will be a mirror of your local repo. Branches that exist on remote but not on your machine will be removed from the remote.
A then needed to work from B's feature branch but of course that was gone... So while the idiot didn't fuck up our protected branches he still fucked over other people's workflow with that.
Is there an alternative to outright blocking force pushes which could have prevented that (except force pushing intelligence into his brain)?7 -
If github had an option to make private- public branches or a public "launch" page for private repo, it would have replaced playstore and other software markets long time ago8
-
The new team member seems to hate me... For releases, each component that needs to be released has an owner responsible for building and post release merging.
I already own 2 branches but she assigned me 2 more... -
Used a GUI to merge branches today. I managed to create a local branch with the same name. Merge my changes into that. Then merge my local into the remote of the same name. The network graph is a little crazy right now.
-
We're slowly migrating to VSTS (sigh) from Mantis and SVN for tasks management and code repo.
It's been 4 months now and we still have to move the code from SVN to GIT, asked management when they plan to do that and they still give no ETA, and when asked to make sure our commits stays intact after the transfer I got told "no need for that we're just gonna copypaste the last version of the source code". And most likely the local SVN server we're using is gonna be dismissed.
On top of that, by the way they want to use it, VSTS is being terrible for tracking stuff. I'm so used with other tools at home for some side projects and even though I expressed my concern about VSTS I got ignored over and over...
Bonus (not so) fun fact: branches are something mythic here so everyone else commits straight to master and it's a pain in the ass everytime, because people happen to break things most of the time.
And no, unfortunately this is not a small company.
Send halp please 😭 -
Hello, I am doing master in Pharmacy, but I like programming and consider to switch or connect somehow industries. I could write simple scripts and small programmes in Python, but I want to write code with good practice from beginning.
So my question what should I know and put in use, maybe some resources if someone has them or just terms for further search. At this moment I use gitlab for VCS (my commits sucks and my whole usage of Git sucks, but at least I use branches), I am trying to separate control from model (MVC but I guess I do it poorly), also I use keepchangelog rules for changeling, and semantic versioning for versions, PEP8 and Pokemon names for my variables and functions as it helps read code later.7 -
Me: By mandating code coverage pct. (very high ones) and integration test coverage pct. you are building an ever growing Rube Goldberg machine that you will end up spending most of your time fixing rather than working on the actual product.
Them: (Staring and whispering in the background). Wow, you must be stupid. This is how you created quality software.
...time passes and now most time is sucked into figuring out why all branches have failing integration tests all the time.
Me: I told you so. I've seen it multiple times. How about doing it differently?
Them: (staring and whispering in background). You are stupid. This is exactly how quality software is built. We know what we are doing. You must like waterfall.4 -
So yeah I'm currently working with a small team on a project that will save our company around 1000 FTE (literally ~1000 people) costs per year.
But we forgot to do branches in our gitlab project... And now I needed to resolve a merge conflict on a PyQT UI file. Fuck my morning I need more coffee!1 -
BitBucket has an option to delete the branch on merge which for most cases make sense.
But what about release branches? needs 2 merges for master and develop.10 -
Afaik,
I definitely switched branches but it still committed to master
Oh well... It's only a backup repository2 -
Juggling between multiple feature releases is a difficult task but I would choose that anytime over doing no work the entire day.
P.S. Managing each features individual branches is a task in itself too -
I was asked to make release branches which will change my gitflow. Am I understanding it correctly now? Fix me if I'm wrong
So I do my fixes in develop, once Im done I squash merge them into 1 commit. Then I make a release branch from develop, if everything is fine I release it. After release I merge back release branch to master and thats it?3