Git Is Awful | Prime Reacts

Поделиться
HTML-код
  • Опубликовано: 8 окт 2024
  • Recorded live on twitch, GET IN
    / theprimeagen
    Reviewed video: • Git is awful. GitHub i...
    Channel: Changelog | / @changelog
    MY MAIN YT CHANNEL: Has well edited engineering videos
    / theprimeagen
    Discord
    / discord
    Have something for me to read or react to?: / theprimeagenreact
    Hey I am sponsored by Turso, an edge database. I think they are pretty neet. Give them a try for free and if you want you can get a decent amount off (the free tier is the best (better than planetscale or any other))
    turso.tech/dee...

Комментарии • 1,1 тыс.

  • @robertharris4129
    @robertharris4129 Год назад +1129

    "git is terrible, google's tools are like science fiction compared to the rest of the world!"
    *refuses to elaborate*
    *leaves*

    • @Sammysapphira
      @Sammysapphira Год назад +133

      Every single time I've had to deal with a public-facing google tool I've wanted to rip my eyeballs out of my sockets. I shudder to imagine their unrefined internal tools

    • @monad_tcp
      @monad_tcp Год назад +35

      ever tried using anything from GCP ? I bet he's lying

    • @notuxnobux
      @notuxnobux Год назад +14

      Im not sure what he means. I have worked on chromium and we used commands but those commands were wrappers around git commands + other things. Maybe google only uses those tools that he speaks of in internal projects?

    • @ElclarkKuhu
      @ElclarkKuhu Год назад

      ​@@monad_tcp I've tried AWS, Azure & Oracle, I don't think they're any better.

    • @seanlestermiranda
      @seanlestermiranda Год назад

      the reason why he was probably layed off from google team is that he is pretty dumb, hiring him was a waste of money. 🤣

  • @DaLoler1
    @DaLoler1 Год назад +1304

    All I got from this is "Google has better tools, trust me bro"

    • @tusharsnn
      @tusharsnn Год назад

      They do. Just look at chromium repo.

    • @exit81dave
      @exit81dave Год назад +85

      He said nothing. It may be awesome but he said absolutely nothing.

    • @oleg4966
      @oleg4966 Год назад +47

      You want a better VCS? I can get you a VCS, believe me. There are ways, Dude.

    • @doanamo
      @doanamo Год назад +37

      I can easily believe that they have better tools than the rest of the world because they are competitive as a software house with a very long history of creating complex software. There is no surprise here.
      However, I feel like the guy was just rambling.

    • @davisdjosh
      @davisdjosh Год назад +1

      like gn and repo 🤷‍♂️

  • @icedtonberry
    @icedtonberry Год назад +632

    This fellow said a lot without really saying anything at all.

    • @isaac_shelton
      @isaac_shelton Год назад +70

      i worked at google btw, you wouldn't understand

    • @flynn3649
      @flynn3649 Год назад

      ​@@isaac_shelton I worked at understand btw, you wouldn't google

    • @monad_tcp
      @monad_tcp Год назад +18

      He's good to work at a PR department of google.

    • @anandmahamuni5442
      @anandmahamuni5442 Год назад +2

      Bro be like skill issue

  • @JonathanTheZombie
    @JonathanTheZombie Год назад +1263

    Git is the reason why our -10x engineer can’t do permanent damage to our build system

    • @MrEnsiferum77
      @MrEnsiferum77 Год назад +22

      This is terrible explanation, just go back to 90's how they shipped games without tools like git.... without any versioning system...

    • @vitalyl1327
      @vitalyl1327 Год назад +105

      ​@@MrEnsiferum77developers who did not use version control systems in the 90s were trash developers not worthy of being mentioned. We had CVS ffs, and RCS before tbat.

    • @MrEnsiferum77
      @MrEnsiferum77 Год назад

      ​@@vitalyl1327 U are stupid and u sound like crap liberal... just try to find out.... one of the most iconic games is done on different HDD's and then mergeed manually (copy paste) the code on release day... and boom... works everything perfect...

    • @Microphunktv-jb3kj
      @Microphunktv-jb3kj Год назад +8

      ... being a professional coder is already.. being damaged.
      what's ur point ?

    • @karmatraining
      @karmatraining Год назад +58

      @@MrEnsiferum77 as an "old" developer I remember with horror how bad our source control system was, and how often people broke the build. Git is miraculously reliable by comparison (especially if you use CI)

  • @JustDeeevin
    @JustDeeevin Год назад +1005

    He never really gave any reason why Git is bad. He just said it was bad and they decided he was right.

    • @Endelin
      @Endelin Год назад +78

      Yeah, it seemed like he meant to say just Github, but said Git too and rolled with it.

    • @luvincste
      @luvincste Год назад +23

      ha said it's unintuitive etc, and i agree

    • @Cranked1
      @Cranked1 Год назад +110

      @@luvincste most "more advanced" programming "stuff" is unintuitive the first time. That's not an argument at all. Or is quantum physics bad now because it's unintuative...

    • @vidal9747
      @vidal9747 Год назад

      @@Cranked1 Quantum Mechanics is pretty much unintuitive. But if you stop thinking of its implications and focus in solving the linear algebra it is surprisingly easy at first. Of course that depending on initial conditions you can get a system that will take forever to solve. But by learning it in college I have a simple tip: Learn the math. See how its used in the real world, like with DFT. Them, after you know how the systems work and built some intuition, try and fit it to your model of the world. Visualize the wave function of the electron in atoms and molecules the way chemists do: as orbitals. Think of electrons as an electron orbital, that is composed of an electron wave-function in a potential well. Quantum mechanics, according to our understanding of the world (unless you're superdeterminist) is literally impossible to really visualize. How do you visualize a probability wave in 3 dimensions? And don't get me started in wave function collapse on observation - I don't know if it is clear, but in this sentence visualization and observation are totally different things (not a native English speaker). One observation: I took Quantum Mechanics in this semester. I don't know yet if everything I said is correct, but this framework of thinking made Quantum Mechanics less overwhelming to me. Edit: Probability waves are hard to visualize because it is weird to think of the fundamental theory of particles as something that could be (a probability) and not something that IS. For people it is very hard to understand probabilities as a real measure of things with real life consequences. It's easy to imagine a coin flipping. It is hard to imagine that a coin itself is made of probability waves. Of course, this way of thinking varies to interpretation of the facts. The probabilistic interpretation is the default they teach in college and it is a basis for every other interpretation. I am a firm believer that you have to have a strong basis before choosing your way to view the world as a Physicist. Obs.: I am here because I do Computational Physics and like programming in general.

    • @DrQuantumInfinity
      @DrQuantumInfinity Год назад +26

      ​@@Cranked1 To me, the difference is that quantum physics is so complicated that it can't be simplified or "improved". It's just fundamentally complicated and unintuitive. Version control is not even on the same scale of complexity. When I'm using git there are times when I can clearly picture the result I'm looking for, but getting there is needlessly complicated and unintuitive.
      One example is if I wanted to merge in some, but not all of the changes between two branches. It's doable, but feels more complicated than it should be.

  • @bilbobeutlin3405
    @bilbobeutlin3405 Год назад +332

    If Google's internal documentation is so good, why are all the public docs so awful 😞

    • @upsxace
      @upsxace Год назад +40

      ikr? Their documentation is an abomination.

    • @isodoubIet
      @isodoubIet Год назад +38

      If google's ability to understand large codebases is so good, why is chrome such a steaming pile of dung?

    • @foxadee
      @foxadee Год назад

      ​@@isodoubIetI'm curious as to how bad things are under the hood. Chromium seems to Just Work™

    • @rutabega306
      @rutabega306 Год назад +8

      @isodoubIet chrome-based browsers have 90% of the market share, I don't think steaming pile of dung is accurate

    • @isodoubIet
      @isodoubIet Год назад

      @@rutabega306Lots of people use a steaming pile of dung, yes. It's truly a terrible browser.

  • @samfelton5009
    @samfelton5009 Год назад +350

    Git is the only technology I use that I don’t hate and now you want to take it from me 😭

    • @voidwalker7774
      @voidwalker7774 Год назад +38

      No one can take Git from you !!!
      Let this be your Braveheart moment. Put war paint on your face and storm the hill with your two-hander !

    • @IrizarryBrandon
      @IrizarryBrandon Год назад +3

      Magit for Emacs makes Git intuitive and understandable

    • @Frozander
      @Frozander Год назад +18

      ​@@IrizarryBrandongit is not unintuitive for me. I never understood the "unintuitive" argument

    • @IrizarryBrandon
      @IrizarryBrandon Год назад

      @@Frozander I feel Steve Yegge 100% on this one, especially when he drops that "Ugh!" It may be because, when I was beginning to learn how to program, I had no idea what "version control" was, let alone a notion of why such a thing would be useful, let alone experience with it (like some people do with SVN, Perforce, Mercurial etc.) Git was frustrating: I had to learn an entirely new and complex system _on top of_ that of learning to program, like building a spiffy penthouse on top of an already-completed five-story apartment building. Trying out Fossil was a revelation for me: Fossil has a built-in GUI that lets you see - and by "see", I mean *see* - your development branches. I think it was then when a bird's-eye view of what version control actually is, clicked for the first time. Then, while doing the Odin Project, I came across this amazing Git tutorial, which I wholeheartedly recommend to everyone: learngitbranching.js.org/. Finally, using Magit makes using Git a fun experience, because of the actionability of Emacs buffers. I probably can't do full justice to it here, so I refer the reader to emacsrocks.com/e17.html, the Magit episode of the "Emacs Rocks" series.

    • @Jaime-eg4eb
      @Jaime-eg4eb Год назад

      I'm gonna guess you work on Ruby on Rails

  • @tc2241
    @tc2241 Год назад +303

    Felt more like a career flex than any actual valid points

    • @pepsiplease69
      @pepsiplease69 10 месяцев назад +8

      That's exactly what it was.. Sadly.

    • @evg3nius
      @evg3nius 9 месяцев назад +5

      That's just cause you never used google tools 😆

    • @thirdeyeblind6369
      @thirdeyeblind6369 Месяц назад

      Of course it is Yegge doing what Yegge does, Flex. He's so up himself.

  • @thingsiplay
    @thingsiplay Год назад +239

    Git does not scale? How on earth are the Linux devs working with Git?

    • @SolarShado
      @SolarShado Год назад +77

      That was my thought too. He does seem to be referring to "number of repos" with "scale" though, which... is a non-obvious take that it would have been nice to have elaborated upon.

    • @Ringoshiiro
      @Ringoshiiro Год назад +3

      Very true

    • @danielsan901998
      @danielsan901998 Год назад +5

      According to Facebook in the announcement of Sapling three-quarters of the 5.5 GB Linux kernel repo is the history, and they say that with Sapling it only download what it needs allowing to work with repositories that may be terabytes in size.

    • @AJMansfield1
      @AJMansfield1 Год назад +41

      @@danielsan901998 Git can do that too lol. (Though, I can certainly see an argument that git should probably make it the default behavior for repos past a certain size, rather than requiring you to manually specify it with a `--depth` argument when cloning.)

    • @sfalpha
      @sfalpha Год назад

      ​@@danielsan901998 Git are design for Linux Kernel in minds, it need to be fast even repo is very large (as long as disk/connection is fast enough), and able to work completely offline. If sapling does download only it needs, then it may design with different goals.

  • @Mglunafh
    @Mglunafh Год назад +150

    Very confusing. This had "old man yells at clouds" vibes in the first part and some google shilling in the second one. "I wanted to share with y'all that google devs can program tools and stuff, isn't it cool?"

    • @x--.
      @x--. Год назад +6

      First part, yes. Second part, intriguing. There's a point where lots of quality-of-life improvements in the development process would add up. If they've really optimized that environment and require everyone at Google to use it then how could it be bad? It'd probably rock the socks off everything and the more time you give to developers to use their expertise solving difficult problems or conversing with teammates on those problems by spending less time pushing buttons...
      I'm intrigued.

    • @joestevenson5568
      @joestevenson5568 8 месяцев назад +1

      ​@@x--.If it was that good they'd be selling it

  • @Thect
    @Thect Год назад +164

    Tom have a perfect versioning system, much better than Google's tool and git, he's a genius

    • @johnnycochicken
      @johnnycochicken Год назад +4

      Tom is the best SVN user

    • @ninocraft1
      @ninocraft1 Год назад +1

      ​@@johnnycochickenthe *last xD

    • @briumphbimbles
      @briumphbimbles Год назад +4

      @@johnnycochicken Tom uses svn, mercurial, git and TFVC all at once. It is magnificent.

  • @Whatthetrash
    @Whatthetrash Год назад +87

    This guy is the programming equivalent of Comic Book Guy from Simpsons. "Worst. Source Control. Ever." (then doesn't explain why or give concrete examples)

    • @crashmaster26
      @crashmaster26 Месяц назад

      haha right, that's what I was thinking :P

  • @iggytt
    @iggytt Год назад +190

    Google obsession is not a mark of a useful software developer.

    • @Ringoshiiro
      @Ringoshiiro Год назад +6

      💯

    • @colemichae
      @colemichae Год назад +18

      Like the old days MS obsession, that guy sounded like he been on the drugs too long, not a single advantage he mentioned, Google's new integrated Dev tool is VSCode

  • @korzinko
    @korzinko Год назад +93

    I need world-scale for the repo with 40 commits and 10 javscript files

    • @katrinabryce
      @katrinabryce Год назад +9

      🤯 How do you manage to do anything in Javascript with only 10 files? I seem to end up with about 4500 dependency files before I even start doing any coding.

    • @korzinko
      @korzinko Год назад +7

      @@katrinabryce npm is hard, so I copy-paste all the dependencies in one file

    • @bob_kazamakis
      @bob_kazamakis Год назад

      @@korzinkoah. The ol manual esbuild

    • @phitc4242
      @phitc4242 Год назад

      ​@@katrinabrycejs sucks ass biggest piece of shit software ok thx bye

    • @maelstrom57
      @maelstrom57 Год назад +7

      @@katrinabryce You don't commit dependencies.

  • @embedded_software
    @embedded_software Год назад +229

    The real question is: whose fault is it that you have 100k repos? That's insane

    • @sullivan3503
      @sullivan3503 Год назад +19

      As of 2021, they have 140,000 employees. It's not surprising at all that they would have 100,000 repos.

    • @metznoah
      @metznoah Год назад

      ​@@sullivan3503that's an average of 1.4 employees per repo
      If we're talking active repos(not read-only) what kind of quality work is being done with

    • @iojourny
      @iojourny Год назад +19

      The one at fault is whoever decided on a microservice architecture, but doesn't trust any of their teams to maintain their own repos, so there is at least one team (or worse, person) that has to monitor all 100000 repos.
      Or, the microservices have already devolved into hellish interconnected spaghetti, and now all teams need to understand each of the 100000 repos.

    • @briumphbimbles
      @briumphbimbles Год назад +21

      @@kidmoseyYou dont have to make repositories public. Also git isnt github and git isnt peoples lack of control.
      That problem would (and does) exist on any free public facing repository service ... it always has.

    • @makesnosense6304
      @makesnosense6304 Год назад +7

      This is yet again someone that can't think properly and blame git for the usage of it.

  • @ankitsanghi
    @ankitsanghi Год назад +62

    He’s probably talking about the entire workflow at google. It’s super easy to do things. You have an internal web based IDE, it’s integrated into the internal version control system which is custom built to handle Google’s monorepo and handle thousands of changes at once, once you make a change it opens it up in the custom code review tool (which to be fair is very nice) and then once it’s approved you just hit submit and runs all tests when checks. You also don’t need to set up your testing pipeline since the google custom server framework handles all that for you. It’s very hard to break that up and sell it since for one piece to function seamlessly you need everything else as well

    • @catcatcatcatcatcatcatcatcatca
      @catcatcatcatcatcatcatcatcatca Год назад +18

      That seems nice. But the natural question is how much of that workflow is a feature of the tools themselves, compared to how they are managed and configured?

    • @prgnify
      @prgnify Год назад +2

      What I'm thinking then is that the massively superior part of the tooling in regards to versioning control specifically is that it can be a "live" environment, somewhat like what Google does with their office apps, and then everything feels "effortless" to clone, check-out, merge, test, commit etc etc etc.

    • @ricardoamendoeira3800
      @ricardoamendoeira3800 Год назад

      That sounds pretty similar to what GitHub and some other companies offer these days, with codespaces. In fact it sounds like exactly the same thing.
      But in most software teams you don't need to work on that many different projects that setting them up locally is that big of a deal, plus you get to work with your own editor/tools and can work offline.

    • @Diewux
      @Diewux 8 месяцев назад +2

      So what the hell it has to do with git itself?

    • @coolxy2
      @coolxy2 3 месяца назад

      So basically something nobody would ever need or use outside of the Google bubble, plus it's so "custom" that it will never work outside of Google intranet. Alright, I'll stay with Git

  • @opensourcedev22
    @opensourcedev22 Год назад +162

    If he worked for me and described issues this way without any semblance of cogent thought and analysis - he would have a much harder time getting my attention next time.

  • @ChrisCarlos64
    @ChrisCarlos64 Год назад +25

    I remember when I joined my team they used SVN but had no clue about how to do basic version control right. Basically everyone made their own folders and then they would copy and paste the code into a single "master" folder. No one even knew how to check in changes or anything. It was just a glorified file share.
    I managed to teach them proper version control strategies and make them go to Git. Life has been better since.

  • @DePhoegonIsle
    @DePhoegonIsle Год назад +42

    Ya, what gets me, is when you can't even talk about why something is better that isn't even available to the public let alone anyone outside of a singular place/company/location/etc, and actively crying about someone liking a toool because it's 'good enough' though it could be better.
    Like, sorry bro.... that tool is sooo unavailable that ... the response is.... 'so fing what'? The tools you're dogging on so hard, barely able to explain what's wrong with it while the few available tools you say are slightly better, you don't even give a phantom of a reasoning. Like this seriously just sounds ALOT like sour grapes. and is pissed that something gets used in maybe sub-optimal ways but ends up being good enough & robust enough for it to not matter for the majority of people.
    We can all qq about github & privacy... but .... hoiw many would be willing to forkout for bandwidth, data storage, data access, & world wide access for their own hosting & storage, oh yes and some how establish it as reasonably trustworthy enough to be recognized as a place to visit safely.
    Seriously though, If git isn't good enough, then just what the fuck in version control do you exactly bloody want? I have a few git issues from time to time, but really it's nothing but by implementation most the time on my end, and even if it could be improved, there is something to be said about enforcing workflows and data checkout/in security along with knowing what code you do & do not use without checking.
    Seriously though, Google might have the best tools on the planet for version controlling, but it kinda don't really matter really honestly if no one but google see's it & no one can really put it to it's paces really. That also said how much is the tooling, and how much is it the procedures & practices around version controlling use.

  • @sirhenrystalwart8303
    @sirhenrystalwart8303 Год назад +69

    This guy is completely incoherent. His argument for why git sucks is basically just making guttural icky noises. Onomatopoeia is not an argument.

  • @markoates9057
    @markoates9057 Год назад +39

    "Hammers are not very intuitive."
    *Hammers self in face*
    "See!!?"

    • @jpratt8676
      @jpratt8676 11 месяцев назад +2

      TBF git really has:
      - a lot of inconsistent command line arguments,
      - overlapping commands and subcommands
      - Submodules (as mentioned in the video) are terrible to keep in sync with root repos
      - Branches, tags, commits, merges & rebases do not play well with each other (that's why there's so much written about 'the one true git workflow' etc.).
      - The web interface is feature poor and not 'modern' (which is why github, gitlab, bitbucket etc, all exist)
      - Hooks are painfully limited
      - CI tends to be built separately on top of all of it (because hooks can't do enough, apparently)
      - the internal model used means that a lot of commands over relatively small changes do a lot of upload and download that is part of the scaling issues
      - the internal model scales badly (uses a lot of memory and data for relatively small doc bases)
      I'm sure there's more but it's not really my wheel house, I'm only have a few years of experience with git.

  • @Muaahaa
    @Muaahaa Год назад +17

    The only thing that really intimidated me about Git early in my career was the scope of the tools features, but it didn't take long to realize that only a small amount of the API is needed to get 90% of the value.
    In terms of scale, I've worked at what I consider a medium sized company with 100 - 200 developers and didn't find scale issues that I'd associate with Git.

  • @julkiewicz
    @julkiewicz Год назад +24

    It's true that Git doesn't scale to very very large sizes. Fundamentally though, very very large sizes are just not something that is supported by any alternative. It's certainly not SVN. Yes, having multiple repos linked together kind of sucks. But again what's the alternative then? Maybe just managing billions of files in one repo is just not a good idea (note, millions are just fine).

    • @johnyewtube2286
      @johnyewtube2286 Год назад +5

      I read that Google uses a giant monorepo.

    • @NameUserOf
      @NameUserOf 7 месяцев назад +2

      @@johnyewtube2286Microsoft too. They've used some patch for it to be better. I still don't understand how can programmers that love to separate everything in different files that each has different functions dumped everything in just one repo.

  • @bargeza
    @bargeza Год назад +17

    Google's tools are great, but come with a drawback most devs will consider a non-starter: no development offline

    • @jpratt8676
      @jpratt8676 11 месяцев назад +4

      And worse: They're proprietary and not particularly friendly to open source AND the UI is internal only too and separate. So... there's just no way to get it outside

  • @jonathanjacobson7012
    @jonathanjacobson7012 Год назад +35

    I remember programming inside a HP-UX hell in 2003 and thinking to myself "what if we could manage software versions through a tool?". Then I found out about RCS and it was even packaged for my OS :) Wait until you hear what I felt when I encountered SVN for the first time! Those were the days.

    • @0x007A
      @0x007A Год назад

      I use RCS for my writing projects and Git for my programming projects. I run my own Gitolite server for Git-managed projects and stopped using GitHub years ago.

    • @LordOfCake
      @LordOfCake Год назад +5

      When I first encountered TortoiseSVN, I thought it was named after a turtle because it was so incredibly slow...

    • @MorningNapalm
      @MorningNapalm 5 месяцев назад +1

      You forgot CVS in between :) Each of these was such a step up. Git too. But it doesn't feel fundamentally different, each generation just fixed some problems from the previous one.

  • @Mel-mu8ox
    @Mel-mu8ox Год назад +18

    "Emotionally hurt me"
    I dont think there has been any software that has not emotionally hurt someone to learn XD

  • @darkee03
    @darkee03 Год назад +9

    "Everybody thinks submodules are going to be good"
    Yes, i was that person once. Wholefully regretted introducing it in one of the projects.

    • @ThePrimeTimeagen
      @ThePrimeTimeagen  Год назад +2

      but there is going to be yet another problem where it just makes sense... and then you hate it

    • @briumphbimbles
      @briumphbimbles Год назад

      No not everybody. Some people got told about them and their first reaction was "why the fuck would anyone want to do that?".

  • @bcpeinhardt
    @bcpeinhardt Год назад +8

    YES A compare feature that doesn’t require actually making a pull request. I love the way a diff helps think about the changes you’re making but I don’t want to have to make a request to get one

  • @yeetdeets
    @yeetdeets Год назад +24

    "strager" made a Bun review. I think you should review his review! He does good videos, and even sets the license on the vids to creative commons :)

    • @wernersmidt3298
      @wernersmidt3298 Год назад

      Yeah, that dude is something else... Gilfoyle irl 😂

  • @numeritos1799
    @numeritos1799 Год назад +18

    "I worked at Google so I'm right!"

    • @isodoubIet
      @isodoubIet Год назад +4

      "I worked at google by the way"

  • @rocstar3000
    @rocstar3000 Год назад +5

    >be google
    >best tooling in the world
    >can't do a fucking API documentation

    • @MorningNapalm
      @MorningNapalm 5 месяцев назад

      Makes me wonder what tools Apple uses. Apple docs are much better.

  • @RiyadhElalami
    @RiyadhElalami Год назад +6

    This has to be the worst conversation I have ever listened to

  • @helviett
    @helviett Год назад +13

    From a perspective of game developer:
    - Git is not good at handling binary files (e.g. game assets: textures, models, etc.) and doesn't have file locking for such files
    - Git can't effectively checkout specific parts of the repo (e.g. assets of specific level or one specific asset)
    - Git is a bit slow on large repos (e.g. FTP Game that operates 10 years on the market). I remember we had to strip part of the old history to make git responsive and clone faster (by default git stores entire history)
    Otherwise git is a perfect choice and a good tool. The scale they're talking about is unreachable for most of the devs. Those who needs scale builds it's own version control systems (e.g. Google, Yandex).

    • @-Jason-L
      @-Jason-L 11 месяцев назад +1

      You can clone without dragging the entire down..

    • @mynameisjeff9124
      @mynameisjeff9124 10 месяцев назад

      What are you talking about?! Git lfs is perfect for handling large files and has file locking

  • @NathanHedglin
    @NathanHedglin Год назад +47

    GIT is a godsend compared to centralized version control systems especially Microsoft's TFS.
    Visual Studio, not Visual Studio Code, had a horrible integration for years and will constantly break. Of course the Microsoft sheep devs were too stupid to use the command line so they always thought git was just crappy

    • @brunoais
      @brunoais Год назад

      I "lost so many hairs" with TFS some years ago. Even when it was obsolete, we were using a certain IDE we were paying license for ONLY to connect and use TFS. Then we did all the actual work on another IDE we paid the licenses for. We complained, low management complained, middle management complained, high management wouldn't budge.
      TFS is basically the M$ embrace and extend of SVN.

    • @brunoais
      @brunoais Год назад

      Git is fine on CLI but there are really good GUI for it. lazygit and Git Extensions comes to mind

    • @Frozander
      @Frozander Год назад +1

      ​@@brunoaisI know people here are not fan of vscode but vscode gui/menus for git are really good.

    • @brunoais
      @brunoais Год назад

      @@Frozander They are nice yes but quite incomplete in what git can do.
      I do use vscodium for now so it's pretty much the same🙂.

    • @isodoubIet
      @isodoubIet Год назад +2

      @@brunoais "They are nice yes but quite incomplete"
      That is fine IMO. CLIs are almost always more feature-rich than GUIs anyway. What I need from a GUI for source control is just an interface for the most common commands and some visualization aids (for diffing, graphs, etc). I'm fine falling back to the CLI for more complex operations.

  • @deino4753
    @deino4753 Год назад +9

    "Git is the worst version control system - except for all of the others that have been tried." - Wiston Churchill, maybe

  • @dinckelman
    @dinckelman Год назад +24

    Git might have problems, but SVN and Perforce are orders of magnitude worse

    • @gotoastal
      @gotoastal Год назад

      Luckily there are alternatives to those 3

  • @lionbryce10101
    @lionbryce10101 Год назад +28

    As someone who barely uses GIT... for the most basic use of "you now have an online backup and version history of your code" it's pretty intuitive

  • @Fiercesoulking
    @Fiercesoulking Год назад +12

    There were some pieces there nothing clear but this reminds me what I suggested in my module on the university where were we playing around with git and svn. Wouldn't be cool when the version control system would understand the language I write in ?(10 years ago) The reason was instead of committing files I would commit functions. Which would greatly reduce version conflicts. The prof didn't understood the benefits.
    In the next level you would also track the all global variables and where they came from and auto check them too. Your graphs then also show then the changes on your functions and who did it.
    This certainly need processing power but in theory you can make some kind of auto header file where name ,start and end of the function is in which with each commit gets updated. There is no need to update everything all the time. By the way you also want to support comments otherwise you would end up with what Tom did.

    • @homelessrobot
      @homelessrobot Год назад +2

      well if your dvcs is specific to a programming language, then you have to change your dvcs if you use a different programming language. What you are talking about actually does exist though for a programming language called unision. The code itself in its native form is a sort of structured dcvs. For instance if you reference a variable, a reference to the variable is whats in the code base, not a string representing that reference.
      All of the names are stored separately and in association with the referenced code structure, not the referent code structure. So there is a single source of truth about the relationship between names and the part of your program they symbolize. if you rename a declaration, those changes are automatically propagated to all prior references in the code base and it doesn't actually change the code as stored. The main database only actually cares about structural differences. The names are only used to identify new references in code changes, and to render existing code out for editing.

    • @ped7g
      @ped7g Год назад +1

      IBM had IDE (IDEs?) like that back in 90s, I think I was playing with one for Java, you didn't have to specify file name or file structure, you just added new functions/classes and the IDE automatically exported that into files for compiler creating the file structure on its own. On the tiny exploration projects I did it felt as great idea, but left some bad feel about "this will be total pain when things doesn't work as expected", now with git versioning source files this would probably blow up.
      The real point of this comment is that some thought like this were already tried, if you would pursue this idea and dig into CS history, you could probably find enough stuff to explore for couple of months and to see if there's enough substance to build further in this direction, or there are inherent issues which prevented this tech to pick up. I'm not sure why the IBM thingy was pretty much unknown BITD, I think the commercial price may have been one of stoppers (I got my hands on it as I got it as price in some programming contest), but that wouldn't stop whole industry from adopting the ideas if it was truly great, so there were probably deeper issues? I did play with it only for very limited time, and I don't recall any details any more, sadly.

    • @-Jason-L
      @-Jason-L 11 месяцев назад

      ​@ped7g yes. Visual age for java. VAJ lol.. I hated it at the time.

  • @pharoah327
    @pharoah327 11 месяцев назад +4

    "slurp up all the data" 😂 I don't know if I love or hate this wording, lol

  • @JOHN-um2
    @JOHN-um2 Год назад +37

    sounds like a skill issue

  • @isodoubIet
    @isodoubIet Год назад +31

    The main problem with git is that the terminology is off-the-charts bonkers (quick example, you want to undo local changes? git reset --hard HEAD. Wut? Ignore that you know what each of those bits mean for a second, imagine that you're coming at this completely fresh. A "hard reset" sounds like it would nuke the entire repo, but is actually an extremely common operation, if not the most common. Lots of the git "porcelain" has problems like these where the name of the feature seems at odds with what it's actually used for, which helps make the learning curve for using git effectively fairly steep.
    Some of the difficulty is inherent to version control being a "hard problem", but the git UX is really not that great. Another gripe I have with git is that it's very easy to create inscrutable tangles of branches because there's no prescribed structure (see e.g. the merge vs rebase debate). It takes a lot of discipline to keep a history understandable. Again, part of it is inherent to the problem, but is there nothing the tool itself can do to help? I'm unconvinced.
    Saying it needs to die is pretty weird and hyperbolic though.

    • @Martinit0
      @Martinit0 Год назад +9

      Fully agree. It starts with the basics: A "pull request" is when you want to contribute code.

    • @FakeDomi
      @FakeDomi Год назад +11

      @@Martinit0 pull requests are a github thing, not git. and the name describes exactly what's happening: you request someone with write permissions to pull in your changes

  • @Tony-dp1rl
    @Tony-dp1rl Год назад +8

    He's right about some aspects. Git is terrible once you have many many repos and large binary file dependencies. Git LFS needs to be baked in and improved on. As does multi-repo commands.

  • @lowellthoerner1209
    @lowellthoerner1209 Год назад +8

    The main problems with Git from my perspective (hobbyist/student dev) are:
    1. It prefers "quirky" nomenclature over descriptive/intuitive nomenclature.
    2. In a lot of ways, Git does a very bad job of abstracting its "backend" functionality. Ever tried to *git rebase -i* with a nonlinear history? It can't even figure out how to reword commit messages without merge conflicts that if you're not *incredibly* careful will ruin your entire branch history and force you to reset and start the rebase from scratch.
    That being said, I don't personally think I could make anything better, but I do think there are plenty of people who could. Unfortunately Git is too conventional, there will never be another VCS that takes over, at least not in the forseeable future.

    • @JOHN-um2
      @JOHN-um2 Год назад

      skill issue

    • @RealRatchet
      @RealRatchet Год назад +6

      People obsessed with rebasing is the reason why git is annoying. Just use merge commits, it's more useful to have a true history than "nice" history.

    • @ishi_nomi
      @ishi_nomi Год назад

      I think the root issue is that there are no such "intuitive way" of version controling in general. Git's backend is very simple if you take some time to understand it though.

    • @lowellthoerner1209
      @lowellthoerner1209 Год назад +1

      @RealRatchet What you're describing is an entirely different form of rebasing. What I am talking about is rebasing a branch onto itself, which is used for things like squashing and rewording commits. The reason that people use rebase is not only because they feel it is more "correct," it's because many Git tools do not work properly on a non-linear history.

    • @lowellthoerner1209
      @lowellthoerner1209 Год назад +4

      @JOHN-um2 I once asked some highly-experienced programmers (30+ years of experience, much of it using Git) how to bulk reword my commits and they said "give up and format your commits properly in the future."

  • @markmywords3817
    @markmywords3817 Год назад +9

    I feel like they're saying: You haven't met our God and savior, Google. Trust me bro. 😅

  • @stevendorries
    @stevendorries Год назад +7

    2:07 sounds like a skills issue to me
    6:51 internally developed tools are usually janky in some way or another and more brittle than an inch thick layer of rust

  • @bonsairobo
    @bonsairobo Год назад +7

    One issue with mutliple repos (which TBF is not a Git problem) is that making a PR against many repos at once is largely unsupported. Being forced to make synchronized changes to multiple repos is painful.

    • @-Jason-L
      @-Jason-L 11 месяцев назад +2

      Sounds like poor architecture decisions were made. I don't see this as a git problem

    • @Lttlemoi
      @Lttlemoi 10 месяцев назад

      That means the repos are very badly integrated with one another. Not an issue with git, but an issue with how you organized your source code.

    • @bonsairobo
      @bonsairobo 10 месяцев назад

      @@Lttlemoi It's an issue with GitHUB. How do you propose making a single PR against multiple repos? You can't.

    • @sirhenrystalwart8303
      @sirhenrystalwart8303 7 месяцев назад +1

      This why you use a mono repo like a grown up.

  • @ErikYoungren
    @ErikYoungren Год назад +5

    12:30 I'm right there with you. For me, out of all the SCMs that have been described to me, Git is the best. Maybe that will change in the future, but if you just keep telling me that some piece of software is better then at some point you're going to need to explain the how and the why of it so that I can actually evaluate your opinion.

  • @genghisdingus
    @genghisdingus 9 месяцев назад +1

    This guy blinks an absurd amount of times. Literally like every .4 seconds. You can't unsee it.

  • @wolverine9632
    @wolverine9632 Год назад +3

    I am a little too happy that "tree-bucket" could totally be the name of a version control software.

  • @MrJCraft
    @MrJCraft Год назад +3

    currently the most promising vcs I have seen are pijul verifying changes and if I remember correctly undoing a commit will work always. and two Fossil its NOT made for large systems which is why its gaining traction for open source its always synced, and has a UI built in its nice, and is a standalone single executable, which recently I needed for a job I did.
    completely different the Unison programming language has there own version of Git built into the language, guarantees you are using the correct version of each function, and every function is hashed by functionality, its very cool looking and made for distributed programming, even if the language doesnt blow up I hope other languages copy the tech its very interesting.

  • @SpikeTaunt
    @SpikeTaunt Год назад +14

    I wouldn't say i like git, but it does it's job fine

  • @gungun974
    @gungun974 Год назад +7

    Git is complex but not awful, lots of repo is not a problem from git. Those guys speak about Github like it’s just a motor to see PR and analysis it. Git is great and for now I didn’t see alternative not a super set of git repository.

  • @mekelius
    @mekelius Год назад +3

    I think large part of git's complexity is an inherent consequence of its distributed nature. Why does setting up a remote need to include so many steps? Because git isso much more than "that command you use to push stuff to github", or at least it can be. Version control is a complex problem, distributed version control even more so. Sure the cli could be more intuitive, can't argue with that. I guess the question is, is the distributed model worth the hassle? The way most people use git, I don't know if it is. But on the other hand, being distributed means it can never be truly vendor locked, and it brings incredible flexibility. Like, we're used to having reliable high speed internet. But there might yet come a day when keeping local backups of repos in-house might be something we're damn thankful is a trivial thing to do.

  • @laughingvampire7555
    @laughingvampire7555 Год назад +8

    Git hater: you haven’t used google tools
    Me: how can I, google code was shut down

  • @shampoable
    @shampoable Год назад +3

    Company I work at tried to do submodules. It didn't take till the end of the day for it to be scraped lol

  • @nchomey
    @nchomey Год назад +2

    Could you do a video on submodules? I'm pretty new to git, and have been happily using submodules. Surely there's stuff I'm missing, but surely there's also valid use cases

  • @tokiomutex4148
    @tokiomutex4148 Год назад +8

    I don't know anyone who worked at Google and praised their internal tooling, only people who don't want to deal with them anymore.

  • @Raccoon5
    @Raccoon5 11 месяцев назад +1

    The guy sounds eerily like Jonathan Blow. Both in vocal aspects, but also how he trashes everything implying that what he is doing is so much better without giving a concrete improvement points. Cynicism + Narcissism at its finest.

  • @tusharsnn
    @tusharsnn Год назад +4

    I like Gerrit, used by google, for its pull request system. You push the exact code you wrote as a packet and not the whole branch. You can do anything with the branch, for push/rebase/merge different things, they won't make any difference, because it only sees what's new between the main and this branch, and push that piece. they call it patchset.

    • @Ruhrpottpatriot
      @Ruhrpottpatriot Год назад +3

      have you ever tried "git format-patch start..end"? Because that sounds like an aweful lot like git patches.

    • @brendanhansknecht4650
      @brendanhansknecht4650 Год назад

      Gerrit is only used for external/open source Google stuff. Compared to Google internal tools, it is really bad.

    • @y7o4ka
      @y7o4ka Год назад +1

      Sounds really like format-patch and merge --squash

    • @tusharsnn
      @tusharsnn Год назад

      @@Ruhrpottpatriot With Github, you still need to push the whole branch (and everything associated with it, example, logs, commits, rebases) which makes it ugly when you had to redo some things, but it ended up changing the hashes of your old commits that you've already pushed. This would require you to force push the branch and the whole PR thread gets messed up, example reviewers' chats/comments are now above these old commits (having new hashes). There's a awful amount of rules you need to follow to never arrive at a force push situation.
      With Gerrit, you never have to worry about these things. You don't ever get to situation where you would need to force push at all, because you never push the branch! the cli will orangise the changes into a patch on the client and then push it.
      Gerrit also simplies how the reviewers are notified about the new changes. It turns basis. You push the changes, pick the right reviewer, and ask gerrit to send them a notification. Once the reviewer approves the code. YOU merge the changes. No case of pre mature merging, which can happen in github, where "Open" PR doesn't indicate if it's ready to be merge or you are still fixing some bugs (Ofcourse, you can read the whole thread to get a sense whether it's ready or not).
      These are just few examples where Gerrit "way" seems to be better a way of managing PRs.

    • @tusharsnn
      @tusharsnn Год назад

      @@y7o4ka Maybe I'm missing something, but how do you send this patch (made with git-format-patch) to github as a PR so someone could review it and eventually merge it to main?
      Git is not the problem, Github is.

  • @zeocamo
    @zeocamo Год назад +1

    Next week: Prime start at Google, playing with google tools for 2 days.
    the following week: Prime join TJ, and cry about GIT and other tools for the next year.

  • @TheLeafyo
    @TheLeafyo Год назад +10

    Back to banging rocks I guess.

  • @isodoubIet
    @isodoubIet Год назад +2

    If google is so good at understanding large codebases, how come they gave up on fixing memory errors in chrome and decided deliberately leaking memory would be a better idea? The quality of their public code output does not seem consistent with this supposed superpower.

  • @JesseGilbride
    @JesseGilbride Год назад +4

    Git gets the job done well, but (IMO) the problems are poor syntax (sometimes), too many "alternative" ways to command the same thing, and shitty error reporting. The whole system should get rewritten to use intuitive commands, provide excellent DX, and give deeper error logs that actually tell you what happened when there's a problem.

  • @Grapejellyification
    @Grapejellyification Год назад +5

    I love it when someone can speak for so long and say so little. Maybe the rest of the world would get to where google is at if:
    1. They even know where Google is at, no one seems to actually describe it.
    2. Anyone describes how they got there, no one ever seems to do this either.
    It's nice to long for a better world but if all you ever say is "gee why doesn't anyone do this?" and you are one of the few people that actually knows what they are doing and how then maybe it's up to you to do it?

  • @sortof3337
    @sortof3337 Год назад +7

    Googles internal tools suck. Goole doesn't get developer platform. They don't even use gcloud themselves.

    • @friendofzeus
      @friendofzeus Год назад

      Can you link me to the articles that explains how google doesnt use gcloud please?

  • @draakisback
    @draakisback Год назад +10

    I've used Google Piper it's not that great. And this idea they git doesn't scale is just absurd. You don't need to have thousands of repos, and most companies simply don't have that many. It also doesn't help that this guy doesn't really provide any kind of reason why Piper is better than git. There are pros and cons with both tools, and it really depends on how you want to structure your code bases.

    • @fltfathin
      @fltfathin Год назад +1

      agreed, if you have a thousand dependency and they are not packaged then you did something fundamentally wrong

  • @nyrtzi
    @nyrtzi Год назад +4

    So what the dude actually says is that... Git doesn't scale well enough to handle the world's largest codebases. Ok, but for the rest of us who don't have to deal with anything that big Git works just fine. So for me what this dude says is... not relevant at all. Never was.

  • @aurinator
    @aurinator 9 месяцев назад +1

    I loved Perforce on this subject, particularly its P4V GUI utility. Liked it so much I memorized and practiced its keyboard shortcuts. I still remember Ctrl+D to diff changes to individual files in P4V. That is honestly something I've viewed as a step backwards switching over to Git - the lack of similar Keyboard Shortcuts and as straightforward capabilities, instead I have to Command-line diff changes relative to an earlier version because I can't just select 2 in a GUI and then Ctrl+D to Diff the two. Also, I liked Shelve more than Stash because it could be shared without having to Commit, also it's stored Server-side unlike Stash that's not necessarily even available to other users because it's in a User's Local Repo.

  • @Mark_MKII
    @Mark_MKII Год назад +7

    Git has like 50 ways to achieve the same result. Different combos of commands, flags, parameters… So many unique ways to make a footgun.

    • @aeggeska1
      @aeggeska1 Год назад +3

      Lol. If you can't figure out .git, how are you a professional?

    • @diadetediotedio6918
      @diadetediotedio6918 Год назад +1

      You mostly only need to use 10 commands in git for the most part, so sincerely just don't try being "the overengineering guy".

    • @briumphbimbles
      @briumphbimbles Год назад +1

      99% of the time you need are a few commands:
      Bread and butter:
      git init
      git add (normally just with .)
      git commit -m "Commit message"
      git reset (often just HEAD~1 to rollback your last changes)
      git push
      git fetch
      git merge/ rebase
      Occasionally useful commands:
      git log
      git stash
      Very rarely you might need something else either to fix a problem by looking into the reflog or do something specific like an octopus merge in your tooling but for the vast majority its just that list above.
      Are you really telling me that its going to take you a long time to learn

  • @etherweb6796
    @etherweb6796 Год назад +1

    This reminds me of that quote about democracy "git is awful, except compared to anything else we've tried"

  • @emjizone
    @emjizone Год назад +3

    14:29 For me, this is definitely *not* a versioning problem. It's a pure *indexing* problem.
    I don't see why you can't have _Git_ or anything else for versioning side by side any sort of super-clever IA for indexing, search and diagnostics, working *with or without **_Git_* .
    _Git_ does only one thing and it does it well. If you want more features that have nothing to do with versioning, just build them. Where does it conflict ? I don't know.

    • @emjizone
      @emjizone Год назад

      …unless…
      *Unless **_Google_** don't work with files anymore* and work with *pure atomic relational data* , just like with the alternative file-less, directory-less OS I imagined but never built, and would like to use.
      In that case, if files aren't a thing anymore, yes, I understand why they don't want to bother using a tool like _Git_ that is specifically designed to version files and nothing else.
      Is _Google_ as advanced as what I have in my head since 2005 ? Maybe. I really don't know. I never worked for them and most probably will never be recruited by them, for obvious social reasons.
      If you work or worked for _Google_ , you tell me.

  • @chadpublic904
    @chadpublic904 7 месяцев назад +1

    I have never resonated more with an opinion more in my life. Git is a unintuitive mess where the basic actions and tasks you do were named without consideration for others. It was almost built to confuse people who want to learn it. What blows my mind is a pull request does ZERO PULLING it's you merging your changes into the main branch (PUSH MAKES MORE SENSE) GAAAAAAAAHHHHHHHHHHH

  • @marcandruu
    @marcandruu Год назад +12

    The problem doesn't seem like it's about git, but more of a software deployment problem

  • @laughingvampire7555
    @laughingvampire7555 Год назад +2

    Google people just love a single gigantic repo.

  • @MRxParkour
    @MRxParkour Год назад +4

    TortoiseGit also exists

  • @fernandopaiva96
    @fernandopaiva96 Год назад +1

    Git and Github are not the same fucking thing, and this guys is treating them like it.

  • @robonator2945
    @robonator2945 Год назад +1

    4:10
    Valve : Proton
    Valve : Steamdeck
    Valve : Dxvk
    System76 : take your pick
    System76 : take your pick
    System76 : take your pick
    AMD : "fuck you FSR for everyone"
    You *_can_* extrapolate out self interested reasoning for all of this, but at that point I'd take another issue with this claim entirely and say literally no-one has ever "just been really great for no reason" because at the end of the day people do it because they think it's right and get personal satisfaction from doing what they think is the right thing. If you got zero satisfaction from doing the right thing and utterly despised it and got genuinely nothing out of it, you wouldn't do it. If you want to say things like Proton or the Steamdeck or FSR being completely open are self interested then fine, I'll agree with you if this conversation is operating on technicalities, but in that case then this sentiment applies to everyone-and-thing, not just companies.

  • @thomassynths
    @thomassynths Год назад +2

    Dude's thesis: Git is bad because there exists tooling with Git in its name that I don't like.

    • @gotoastal
      @gotoastal Год назад

      There are criticisms, but he certainly would have just made a better argument if he spent it focusing on the problems with Microsoft GitHub.

  • @n00dle_king
    @n00dle_king Год назад +1

    Git doesn’t scale? Isn’t the windows monorepo on git now?

  • @blenderpanzi
    @blenderpanzi Год назад +4

    Mercurial has a bit nicer UX (thinking back many years when I last used it), but it's very similar to git in a lot of respects and it's written in Python. Though I think they replaced parts with Rust now? Was it Rust?

    • @d3stinYwOw
      @d3stinYwOw Год назад +2

      Mercurial at least does not allow easily to shit in your history

    • @monad_tcp
      @monad_tcp Год назад +1

      Ironically I think git is shit compared to mercurial, but I switched from mercurial in 2019 because git has a good support for big binary files (*1), also it was too slow because it was written in python.
      Now that it's rewritten in Rust I might go back to mercurial.
      (*1 yes, I store binary files, its machine learning models, its "code" that runs the application, so it goes together with , process me )

    • @y7o4ka
      @y7o4ka Год назад +3

      ​@@monad_tcptry out git-lfs in your spare time. It's kinda like git, but for binaries 😅

    • @d3stinYwOw
      @d3stinYwOw Год назад

      To be honest, I'd pick mercurial even without RIIR (Rewriting it in Rust) @@monad_tcp

    • @monad_tcp
      @monad_tcp 11 месяцев назад

      @@y7o4ka gonna try

  • @azagogh
    @azagogh Год назад +1

    Just imagine the Google employees, floating around in their spheres of crystalline neon glass, creating the code of the future by the flick of a hand, so that we can see the perfect embodiment of stupidity in the next NFT or daytrading or quack philosophy master class ad for 4 seconds before we click on to the next video to mindlessly consume. What a time to be alive.

  • @FryGuy1013
    @FryGuy1013 Год назад +5

    Git is the javascript of DVCS systems. Bazaar and Mercurial were both better user interfaces but the ecosystem settled on git.
    Github also has the worst history viewer. The whole point of branches and merges is having a visual tree. Having everything flat by default in the history, and burying the tree view in a *horizontal* viewer 3 menus deep where you have to mouse over each dot to see what they are.. Why can't they just have the history just show the history!

  • @bobdouglass8010
    @bobdouglass8010 11 месяцев назад +2

    I'd like a version control system that was lsp aware. If two people branch off master, and branch 1 moves a method to another spot within a class, and branch 2 is modifying that method, then someone gets a merge conflict later on. That's 100% avoidable if the diff engine was looking at syntax trees rather than just plain text. And you can take that simple idea and go a lot further with it, recording editing instructions rather than text changes in VCS, but that gets way out there.

    • @bloodgain
      @bloodgain 11 месяцев назад

      This I agree with. Much of that problem could be handled with an external merge tool, but it would be nice if git had native plugin support, too.

  • @JonathanTheZombie
    @JonathanTheZombie Год назад +4

    “How do we manage 100,000 git repos??”
    How about git submodules?

    • @y7o4ka
      @y7o4ka Год назад

      How about not creating a submodule for each file in a project 🤔

    • @homelessrobot
      @homelessrobot Год назад +1

      that doesn't manage the repos, it just associates them with each other. They still have to be independently managed. The way you normally do this if you actually want to maintain an in tree copy of what may have started off as a separate repo, while still maintaining upstream history, is git subtree. Probably doesn't scale to a 1000 subtree project with 10 jiggawatts of history in each.

    • @alienrenders
      @alienrenders 7 месяцев назад

      Oh god no. Not submodules.

  • @real1cytv
    @real1cytv 9 месяцев назад

    I don't know how we didn't see it before: This is what Tom created. You look at a JSON DSL class, it gives you an SVN reference that you can just look up. He really is a genius.

  • @paradox2579
    @paradox2579 Год назад +8

    I tried out Fossil because of that video, I like that staging isn't a thing you just commit and it has some useful web tools implemented, but the way it's setup is arguably more awkward than git especially the init process which is suddenly two steps instead of one and for some reason it keeps it's files in two places instead of one like git. Also Fossil is a step backwards for me because Fossil's UI just isn't as great as my current setup of using git + GOGS on my server. It just doesn't deliver on the polish and ease of use like one would hope but it does have some some technical benefits over git in other areas.

    • @brunoais
      @brunoais Год назад +1

      Without staging, does that means you always commit everything?

    • @paradox2579
      @paradox2579 Год назад

      @@brunoais It adds everything by default but you still have the option to manually specify what you want to add. It's mostly just a small nicety.

    • @brunoais
      @brunoais Год назад

      @@paradox2579
      So basically like SVN in that regard.
      It would never work well for me because I usually do much and then I need to split into commits.
      Thanks for the answer.

  • @josh_finnis
    @josh_finnis Год назад +1

    I wonder if Spotify's Backstage framework is an example of what he is talking about. It's not source control, but it's a discoverable platform for the entire company's repos, projects, documentation, templates, etc. He was referring to the problem of thousands of repos and Spotify seems to have a good solution for it.

  • @c64cosmin
    @c64cosmin Год назад +4

    cough... skill issue ...cough...

  • @OGStan01
    @OGStan01 Год назад +1

    I once tried to screw in a screw using a hammer and I have to say: boy do hammers just suuuuck, they're horrible, unintuitive and honestly they just don't scale well, the bigger the hammer, the worse it is at screwing in screws.

  • @oliviermb7127
    @oliviermb7127 Год назад +3

    Glad to hear I am not tge only one who doesn't like submodules

  • @Wielorybkek
    @Wielorybkek Год назад

    "it's very powerful and flexible but UH"
    oh... that makes sense.

  • @spyroninja
    @spyroninja Год назад +14

    Git gud

    • @wertigon
      @wertigon Год назад +7

      $ git gud
      git: 'gud' is not a git command. See 'git --help'.
      The most similar command is
      add

    • @touristtam
      @touristtam Год назад

      @@wertigonyou need to alias that duh? :D

  • @Jack9C
    @Jack9C Год назад +2

    SVN was WAY more intuitive than Git. It was a simpler tool. An insufficient tool, but simpler nonetheless.

  • @hengrv
    @hengrv Год назад +4

    i really don't think git is bad. but we probably could have a more modern implementation of version control

    • @gotoastal
      @gotoastal Год назад

      Pijul & darcs use patch theory to eliminate a subset of issues with merging. When patch A then B is C & patch B then A is often also C, but Git requires that the order matters giving merge conflicts that shouldn’t cause issues.

  • @HrHaakon
    @HrHaakon Год назад +1

    It is absolutely wonderful to agree with ThePrimeagen on something.
    And I often agree with Yegge.
    It's a great feeling. Is this what it's like?
    (For context I'm an enterprise (small e) Java developer, who don't hate the language, but also have never had the more insane AbstractFactoryFactoryBean stuff people complain about.)

  • @bitskit3476
    @bitskit3476 Год назад +2

    I think that the reason why git seems complicated is because it's actually like, 4+ different tools rolled into one.
    On one hand, it's serves the purpose of revision control. The management of a singular timeline, to which you can commit changes, revert them, or reset to an earlier point in time.
    Secondarily, it serves the purpose of version control. In this case, you have multiple different versions of the same project. When built on top of revision control, each version of the project has some sort of shared history, with the others, but effectively branches off into it's own timeline that's completely adjacent to the others. Combining two versions requires their timelines to be merged, which can be done by replaying all the changes that have been made since the moment the timelines forked from each other, i.e. re-basing the changes on a different version of the code, or by simplying squashing all of the changes into one single change that can be applied, i.e. git merge.
    Thirdly, git serves the purpose of interfacing with a distributed system. The ability to specifiy the origin of a repository and push changes to it or pull them down. It's this push and pull system that coordinates everyone with each other.
    N-thly, git just a bunch of other arbitrary crap that's highly specific. Stashing changes and reverting, tracking which files have changed since the last commit, figuring out who screwed up what, creating and applying patches, etc.
    Tbh, git is a lot closer to being a source code control system than a version control system.

  • @mauritoxway
    @mauritoxway 3 месяца назад

    man, ive discovered your videos a littel while ago, and i love you, svn hurt you, and also me, i feel you bro

  • @skrypets
    @skrypets Год назад +7

    I heard FTP is the best VCS

    • @BurgerKingHarkinian
      @BurgerKingHarkinian Год назад +1

      Together with folders like project, project-final, project-final-final, project-release

    • @HolgerNestmann
      @HolgerNestmann Год назад +1

      email is not bad either

    • @ashindachu
      @ashindachu Год назад

      You missed Text/SMS

    • @Yay295
      @Yay295 Год назад

      @@HolgerNestmann Git supports email.

  • @protocol6
    @protocol6 11 месяцев назад

    Anyone remember the movie Antitrust (2001)? Rachel Leigh Cook, Ryan Phillippe, Tim Robbins, Claire Forlani. Tim Robbins basically plays a Bill Gates character and Ryan Phillippe is an indie developer and the whole story revolves around spying, code theft and murder by the corporate baddie. It's so much easier just to market your source control system at people.

  • @printhelloworld7151
    @printhelloworld7151 Год назад +4

    0:26
    commands like "git checkout" can do something **completely** different depending on the arguments it has, come on man xD this is why software like Gitkraken exists, git's back-end is fine but using it for the CLI can be scary when you are not 100% sure what you're doing (especially with commands like git checkout, which can rewrite the history tree)

    • @ivanheffner2587
      @ivanheffner2587 4 месяца назад

      Mmmm… I’m gonna need you to show me what options to `git checkout` can “rewrite the history tree”. Yes, there are git commands that can rewrite version history and remove entire subtrees from all history, but those are not `git checkout`.
      Personally, I don’t trust most Git UIs that try to make the details of git actions easier because they frequently don’t do what I want. I am an almost 100% git command line user and prefer being explicit in some “common” commands because not doing so has bitten me at some point in the past.

    • @printhelloworld7151
      @printhelloworld7151 4 месяца назад

      @@ivanheffner2587 not reading all that. good for u though (or sorry it happened)