• @seth
    link
    153
    edit-2
    3 months ago

    It’s git push origin branch and then merge after submitting a pull request from branch to main after a successful lint check, build, deployment, and testing in a non-production environment, and PR approval. What kind of wild west operation allows pushing directly to main?

    • @[email protected]
      link
      fedilink
      323 months ago

      Employees who push first win and get to leave early. The rest would be the suckers who would merge whatever mess left behind by the early employees.

      • @Pacmanlives
        link
        5
        edit-2
        3 months ago

        Hey there were like 3 of us lol! No joke that’s what I have done at a few of the smaller shops as an SRE/System Engineer

    • @[email protected]
      cake
      link
      fedilink
      10
      edit-2
      3 months ago

      Our changes land in main at my workplace, once they’ve received a code review and all CI checks pass (which includes tests, E2E tests, etc). We use feature flags rather than feature branches, so all diffs / pull requests are against main. We use continuous deployment which means changes are automatically deployed once landed. Changes roll out just to employees, then to servers used by a small percentage of users (2% I think), then everywhere. All risky changes are gated by feature flags so they can be enabled or disabled without a code push.

      • @[email protected]
        link
        fedilink
        English
        33 months ago

        We did a similar way with tag based releases, first a test tag, the production tag when signed off.

    • @MR_GABARISE
      link
      93 months ago

      What kind of wild west operation allows pushing directly to main?

      That’s kinda the whole point of trunk-based development.

    • @AA5B
      link
      63 months ago

      No kidding. Never push to main, and you most likely can’t. While I get the joke of the meme, I’d send the person packing if they don’t understand branching, and branch flow, rebasing or reverting. Even if you look up the command or do it all through your IDE, understanding the workflow of using git is important

    • @[email protected]
      link
      fedilink
      43 months ago

      They laid off everyone else so there’s no one to the code reviews now. So fuck it, we’ll do it live!

      • @AA5B
        link
        3
        edit-2
        3 months ago

        We just had a customer escalation caused by exactly this. One group relied too heavily on tribal knowledge for code reviews and didn’t want any other process. Once the tribal elders were gone, no one knew all the things to look for, and there was no other way to catch issues

        As a Continuous Integration and Test guy, I was standing in the corner yelling “I thought you were DevOps. Where’s the automation?” Fine, Puppet/YAML doesn’t work with a traditional build and test, but you could have done syntax validation and schema validation that would have caught before the code review could have happened (and I showed them how a year ago, even offered to do it for them) and set up some monitoring to discover when you break stuff, before customers discover it.

    • @[email protected]
      link
      fedilink
      23 months ago

      I never worked anywhere where they had this set up. I would push to branches and make pull requests, but always work in the production environment.

      I was mainly working as a data engineer though so that’s probably why. It’s hard to have test environments since you can’t replicate all the enormous amounts of data between environments without huge costs.

      • @[email protected]
        link
        fedilink
        33 months ago

        There are many strategies for maintaining test environments for that kind of thing. Read-only replicas, sampling datasets for smaller replicas, etc. Plenty of organizations do it, so it’s not really an excuse, imo.

        • @[email protected]
          link
          fedilink
          2
          edit-2
          3 months ago

          No I know. But it was “good enough” for the company and we never had any serious issues working that way either. If someone pushed a faulty commit, we just reverted it and reloaded the data from the source system.

          A lot of companies have kind of bad solutions for this sort of stuff, but it’s not talked about and nobody is proud of it. But it keeps the environments simple to work with.

    • korok
      link
      fedilink
      23 months ago

      Do you not use a fork as your origin, separate from the production upstream repo? I’ll push to my fork’s main branch for small or urgent changes that will definitely be merged before anything else I’m working on.

      • @[email protected]
        link
        fedilink
        English
        13 months ago

        If it’s a private repo I don’t worry too much about forking. Ideally branches should be getting cleaned up as they get merged anyway. I don’t see a great advantage in every developer having a fork rather than just having feature/bug branches that PR for merging to main, and honestly it makes it a bit painful to cherry-pick patches from other dev branches.

      • @seth
        link
        13 months ago

        deleted by creator