More stupid Git errors THIS TIME IN FIRST-PERSON!



  • @blakeyrat said:

    This industry always standardizes on broken shit. There's even a little slogan for it: "worse is better".

    This is why IT is shit.

    Well, at least it explains why the standard OS is Windows 😉



  • @blakeyrat said:

    But I don't want it, I don't need it, and I don't use it. So why the fuck do I even need to know it exists?

    Oh yeah: Git is a piece of shit.

    You don't even know if you want, need or use "it" b/c you don't know what "it" is. Please go learn.


  • Banned

    @blakeyrat said:

    Neither is ok.

    But you just said it's OK for programming language? Or is being OK in this regard totally orthogonal to being a good language?

    @blakeyrat said:

    Not obvious to me.

    Your repo and remote repo are separate repos. It doesn't make sense to lock files since you're the only one that will ever use this repo. That's DVCS for you.

    @blakeyrat said:

    That is currently true, that does not have to be true.

    Yes it does. You could theoretically make the session with command-line program more interactive, and in some cases it makes sense, but in most other cases it would just get very annoying very quickly. So, except for simple confirmations, or password authentication and similar <abbr title="for a very generous definition of unexpected>unexpected stuff that happened during execution, the interactivity isn't a good thing in most cases. In cases where interactivity would indeed be good, an actual GUI would do a much better work at it - I think you'd agree.

    A working GUI, that is.

    @blakeyrat said:

    I'm not a copywriter, I'm a software developer.

    And that's why you cannot be stupid.

    @blakeyrat said:

    And if I may toot my own horn, I type a lot better than most of the fuckers here who don't have dyslexia. Or at least I assume FrostCat doesn't.

    https://i2.wp.com/www.troll.me/images/big-empty-room/wow-look-at-all-the-people-who-care.jpg

    @blakeyrat said:

    Right.

    You seemed to imply that dyslexic people have some difficulty with social interactions. It looked like you messed up the illnesses.

    @blakeyrat said:

    1) Every person working with the project has a full copy of the repo (i.e. you can't check-out selected files which is incredibly handle to have)

    Not just a copy. They have the repo.

    @blakeyrat said:

    And BTW it still downloads the entire repo, so there's no bandwidth/storage savings in using this.

    Yeah, on second thought it seems pretty useless. I need to read more carefully in the future.

    @superjer said:

    You don't even know if you want, need or use "it" b/c you don't know what "it" is. Please go learn.

    I'm pretty sure he really doesn't need offline-ness.


    Side note - I'm interested in what operations you consider slow in git, Blakey. I want to run some benchmarks of my own. I take that the opponent should be TFS?



  • @blakeyrat said:

    @ChrisH said:
    It does? Bloody hell.
    Hey the timepod's back! Welcome from 4 years ago.

    heh. We haven't advanced that far into the future yet. We're still on VS2008.



  • @Gaska said:

    I'm pretty sure he really doesn't need offline-ness.

    I agree. But learning the core concepts (from e.g. Pro Git) would still be enormously helpful to him. The offline functionality is a natural outcome of the DVCS design. As is basically everything else apart from the stupid names for things.


  • Banned

    Non-diff-iness is a design choice that has nothing to do with distributedness.

    BTW, in the sparse checkout SO thread I linked, there is an answer that solves the "too much data downloaded" problem @blakeyrat has.



  • @Gaska said:

    Non-diff-iness

    Did I miss something? What the hell is "non-diff-iness." Mind you I Googled it and there are literally zero results with or without the dashes. That's actually kind of impressive.



  • @Gaska said:

    Your repo and remote repo are separate repos. It doesn't make sense to lock files since you're the only one that will ever use this repo. That's DVCS for you.

    That is a "feature" I neither want nor use.

    @Gaska said:

    You seemed to imply that dyslexic people have some difficulty with social interactions.

    When did that happen?

    Jesus Christ people on this forum sure love to put words in my mouth.

    @Gaska said:

    Side note - I'm interested in what operations you consider slow in git, Blakey.

    Creating a simple commit, say 10 files, on a codebase that's about 50,000 files and about 3.5 GB takes well over 10 seconds.

    @Gaska said:

    BTW, in the sparse checkout SO thread I linked, there is an answer that solves the "too much data downloaded" problem @blakeyrat has.

    Great. Now point me to the GUI client that implements it.


  • Banned

    @superjer said:

    Did I miss something? What the hell is "non-diff-iness." Mind you I Googled it and there are literally zero results with or without the dashes. That's actually kind of impressive.

    I don't know the proper term for it so I invented a new one on the spot, one that I thought would make sense to someone who's familiar with git internals. By non-diff-iness, I meant storing particular versions of a file in whole for each revision, not as a diff between parent and current like SVN does.

    @blakeyrat said:

    That is a "feature" I neither want nor use.

    It's not a feature, it's a basic concept. There's no way to not use it because it would mean not having git repo at all. FWIW, git clone is probably the best named of all git commands.

    @blakeyrat said:

    When did that happen?

    When you said, pretending to pretend me, that dyslexics should be chained up in dungeons because they're too stupid to participate in society. Unless you meant that I'm fan of übermensch ideology and would like to everyone more stupid than me - but even in this case, you're exactly just as wrong, because first, I don't think anyone should decide who has right to live, and second, there's no connection at all between dyslexia and stupidity. just like there isn't between dyslexia and social disorders.

    @blakeyrat said:

    Creating a simple commit, say 10 files, on a codebase that's about 50,000 files and about 3.5 GB takes well over 10 seconds.

    I'll try this. Do you happen to have some idea how long it takes in TFS?

    @blakeyrat said:

    Great. Now point me to the GUI client that implements it.

    As I mentioned several times already, all Git GUIs suck hard, and you're just hurting yourself by using one. Really, those CLI commands aren't that bad.

    Another idea - maybe you could try to divide your mods into git submodules?



  • @Gaska said:

    I don't know the proper term for it so I invented a new one on the spot, one that I thought would make sense to someone who's familiar with git internals. By non-diff-iness, I meant storing particular versions of a file in whole for each revision, not as a diff between parent and current like SVN does.

    Well that's the problem. I'm not all that familiar with Git internals. I'm familiar with Git concepts as they relate to the UI. If you gave me a two Gits, one with diff-iness, and one without, I don't think I could spot the difference. To me a commit is a "snapshot" of the state of my files [and their history], and how it's stored is irrelevant.



  • @blakeyrat said:

    Usability is the most important thing in software. By far. By leagues. By universes. The entire point of writing software is for people to use it,

    ... to produce a result. Usable software is useless if it doesn't produce the correct result.

    @Gaska said:

    Usability isn't just ease of use - it's also about how much you can do. If we were to go just by pure ease of use, it would mean Paint is better than Photoshop because it's easier to do things with it.

    It's easier to use source.zip, source_new.zip, source_old.zip, source-old.zip, source_really_old.zip, etc. than it is to use any real SCM, but it's sure as Belgium not better. Ease of use, or even some broader definition of usability, is not the right measure of software quality if the software does not do what needs to be done.



  • @HardwareGeek said:

    It's easier to use source.zip, source_new.zip, source_old.zip, source-old.zip, source_really_old.zip, etc. than it is to use any real SCM

    I reject your premise.



  • @blakeyrat said:

    Note that it's not so much I don't understand DVCS concepts as I ignore them because I have absolutely no need for working offline and so they're useless to me.

    You ignore DVCS concepts while using a tool whose entire existence is based on those concepts, then complain about that tool and expect people to take you seriously. :facepalm:



  • Paging @flabdablet: look, someone is ignoring the experience of someone with a natural disadvantage, and needs a white knight to defend them!



  • @HardwareGeek said:

    It's easier to use source.zip, source_new.zip, source_old.zip, source-old.zip, source_really_old.zip, etc. than it is to use any real SCM, but it's sure as Belgium not better.

    Actually, if git really does this non-diffy-ness thing, isn't that what it is? Just with extra bits tacked on? 🚎



  • Nope, because both old_source and new_source are in the same zip - which makes it smaller as there's a lot of similarity between old and new.

    Though all VCS are basically that, at the storage level.
    Storing the diff is a way to compress, though it turns out not to be a very good one - the repo ends up larger and slower once there have been many commits, and it appears that merging branches is harder.
    (Or just that VCS that work that way are crap at merging)

    One of my general irritations at most other VCS is how hard it is to branch. Git (and presumably mercurial) assume you will do it a lot, while practically everything else assumes that you will almost never do it.

    Case in point - I have no idea how to branch in one of the corporate VCS, as my training never covered it, yet in git I discovered how almost immediately.

    Finally blakeyrat: One incredible feature of a DVCS that you should really appreciate is that it is safe to experiment.

    You can make multiple clones of real code in a real repo on any disk space you can read & write, then piss about with both of them to learn how the code and the VCS works, and then blow it away when you're done - and you'll never affect anybody else.

    You can't do that with any centralised VCS.


  • area_deu

    @Buddy said:

    All I'm saying is, I'm incredibly glad I don't work for you.

    Fair enough.


  • Java Dev

    you forgot source_final.zip, source_real_final.zip, and source_new_DO_NOT_USE.zip.



  • @Gaska said:

    Just shows how easy those internals are. Definitely easier than SVN's properties mumbo jumbo.

    Easy on its own, but still a sub-par solution to the problem of undoing your last action. Significantly harder when you remember that git is like this for pretty much every operation, and you need to know them all.
    I know far, far more about git's internals than I do about svn's, and I've used svn for significantly longer than I have git.
    Plus, were it any other application, making users trawl through log files to do something as basic as an undo would be grounds for shaming on this forum. But git gets special treatment because git is special.


  • Banned

    @Salamander said:

    Plus, were it any other application, making users trawl through log files to do something as basic as an undo would be grounds for shaming on this forum. But git gets special treatment because git is special.

    And how do you undo similar repo-breaking fuckup in SVN? In Mercurial? In TFS?



  • How do you cause similar repo-breaking fuckups in SVN? Mercurial? TFS?


  • Banned

    ------------------------------------------------------------------------
    r76107 | user1 | 2014-01-14 11:46:48 +0100 (Tue, 14 Jan 2014) | 1 line
    Changed paths:
       D /labels/TRUNK_UT_label
       D /trunk
    
    IN TRUNK UT label created r75979
    ------------------------------------------------------------------------
    r76134 | user2 | 2014-01-14 12:04:24 +0100 (Tue, 14 Jan 2014) | 2 lines
    Changed paths:
       A /trunk (from /trunk:75978)
    
    IN: add accidently removed directory
    
    ------------------------------------------------------------------------
    

    Have fun with merging feature branches to trunk after that.



  • I am completely unmotivated to defend the blakeyrat persona in any way, because it has a long history of behaving like a completely irredeemable prick.

    If somebody else wishes to join the irredeemable prick club by attacking the blakeyrat persona because of its claimed dyslexia, that's also nothing I'm interested in doing anything about.


  • kills Dumbledore

    @Gaska said:

    There's no this idle period during the program execution where the user can just dumbly glance at all the options available to him

    TIL Console.ReadKey() doesn't exist.

    There are plenty of ways the CLI paradigm could be modernised and made more user-friendly, but people who work extensively with the CLI have internalised the current way it works and can't see the possibility of any alternatives


  • Banned

    @Jaloopa said:

    There are plenty of ways the CLI paradigm could be modernised and made more user-friendly

    Most of which can be made even better if they went full-GUI, so it makes little to no sense to focus on solid interactive CLI experience if you can drop CLI entirely.

    I'd love to have a good Git GUI.


  • kills Dumbledore

    I agree. GUI is better than CLI so focussing on developing CLI is a bad thing


  • Banned

    forgot to make a joke in previous post
    @Jaloopa said:

    TIL Console.ReadKey() doesn't exist.

    We're talking about Linux hardware here, so yes, it doesn't.


  • kills Dumbledore

    I was going to link to some Mono docs for Console.ReadKey(), but I discovered that it is actually broken by default on Linux hardware. Brillant



  • Behind the bluster and bashing, there has actually been some useful stuff in this tread [from all sides]. What I want to focus on is something that was alluded to earlier...

    In a corporate environment [where the goal is typically to make the company the most money for the lowest cost over time] is a Distributed VCS a good thing at all???? [For broad spread project with different goals by different people, I believe it is].

    Most of the time I coach teams that they should work in bursts of less than an hour (typically 45 minutes) and have their work committed (including testing) so that it is available to all members of the team. This has been demonstrated to provide major benefits.

    Unfortunately, a DVCS encourages longer local work cycles, and also (especially with a rebase in git) foster loss of details in the shared knowledgebase. Also, if one is following ALM practices, it becomes very difficult to ensure that any given commit contains only those changes necessary to meet the requirements of a given Task [choosing to use the TFS term, but this applies regardless of tool].


  • ♿ (Parody)

    @blakeyrat said:

    What for? I already had the snappy reply.

    I know, I shouldn't try to stop you from being wrong. Blakey's gotta rat.

    @blakeyrat said:

    I use it fine.

    When were you lying? Now or before? Asking for a friend.

    @blakeyrat said:

    dyslexics should be chained up in dungeons. They're too stupid to participate in society.

    Welp...blakeyrat is always right.


  • ♿ (Parody)

    @Gaska said:

    You seemed to imply that dyslexic people have some difficulty with social interactions. It looked like you messed up the illnesses.

    I can think of at least one case...


  • ♿ (Parody)

    @Gaska said:

    @Salamander said:
    Plus, were it any other application, making users trawl through log files to do something as basic as an undo would be grounds for shaming on this forum. But git gets special treatment because git is special.

    And how do you undo similar repo-breaking fuckup in SVN? In Mercurial? In TFS?

    svn is teh suxxors.

    Mercurial is trivial. I'd just start work at the place before the fuck-up and close the other (original) branch. Mercurial doesn't have git's detached head issues. It just makes anonymous branches and lets you get on with life.


  • ♿ (Parody)

    @Jaloopa said:

    There are plenty of ways the CLI paradigm could be modernised and made more user-friendly, but people who work extensively with the CLI have internalised the current way it works and can't see the possibility of any alternatives

    This sounds a lot like a blakeyrant where he thinks that shells haven't changed since the 70s or something.



  • @boomzilla said:

    Mercurial doesn't have git's detached head issues.

    Programmer working with Git: http://img1.photographersdirect.com/img/262/wm/pd2992109.jpg


  • Banned

    The funny thing with Git is that even if my head is detached, my commits still land in the right branches. Joys of git-svn, I guess.


  • area_deu

    @TheCPUWizard said:

    In a corporate environment [where the goal is typically to make the company the most money for the lowest cost over time] is a Distributed VCS a good thing at all?

    For us it isn't. 99% of development is done on-premise or while connected via VPN. The other 1% can be covered by TFS offline mode.


  • kills Dumbledore

    @TheCPUWizard said:

    In a corporate environment [where the goal is typically to make the company the most money for the lowest cost over time] is a Distributed VCS a good thing at all????

    For corporate projects, there will always be one central repository which is the master. The fact that DVCS has a major goal of not having a central master means that there have to be workarounds and hacks. Depending on the VCS, these are more or less egregious but they are always there.



  • @Jaloopa said:

    For corporate projects, there will always be one central repository which is the master. The fact that DVCS has a major goal of not having a central master means that there have to be workarounds and hacks. Depending on the VCS, these are more or less egregious but they are always there.

    Even when DVCS allows you not to have a definite master, there's one anyway because someone has to be in charge of what's actually going out.


  • ♿ (Parody)

    @Gaska said:

    The funny thing with Git is that even if my head is detached, my commits still land in the right branches. Joys of git-svn, I guess.

    Yeah...I just remember that in one of the handful of times I used git, I encountered that situation. I remember reading about what happened and it kind of made sense, but I don't remember the details, and I still prefer the hg way of doing it.



  • @Gaska said:

    Most of which can be made even better if they went full-GUI, so it makes little to no sense to focus on solid interactive CLI experience if you can drop CLI entirely.

    Hey look. You reached the conclusion all sane people did back in fucking 1988.



  • @Jaloopa said:

    The fact that DVCS has a major goal of not having a central master means that there have to be workarounds and hacks. Depending on the VCS, these are more or less egregious but they are always there.

    Right; and Git fans also give it as the reason they can't implement stuff like file-locking or partial checkouts, which makes no fucking sense.

    Look, I know having "modes" is like cancer and Hitler rolled into one, but why not have a Git mode where it does have a single "master" server that can talk back and forth to the clients? Then they could maybe have feature-parity with your competing products?

    PROTIP: if you've made a design decision that makes it impossible to have feature-parity with your competitors, maybe it was a shitty design decision and you should flush it in the toilet post-haste.


  • BINNED

    @Salamander said:

    Plus, were it any other application, making users trawl through log files to do something as basic as an undo would be grounds for shaming on this forum. But git gets special treatment because git is special.

    But it is special in the sense that it's designed to be used by people who can be assumed to have more technical knowledge than the general population. A code monkey who only learns enough to do his job will have more problems than the VCS.


  • Discourse touched me in a no-no place

    @blakeyrat said:

    the reason they can't implement stuff like file-locking

    The reason is that they're on a different branch to you, and locking things on other branches than the one you're working on is idiotic.

    @blakeyrat said:

    partial checkouts

    Partial checkouts could be done, but they'd also be very complicated behind the scenes and rather strange. Partial commits would also be possible, but would be weirder still (and likely to annoy people). Partial tagging would not be possible. Partial branching makes my head hurt.

    Easier to just avoid making mega-repositories in the first place.


  • ♿ (Parody)

    @blakeyrat said:

    PROTIP: if you've made a design decision that makes it impossible to have feature-parity with your competitors, maybe it was a shitty design decision and you should flush it in the toilet post-haste.

    Begging the question about the desirability of the features to begin with. This is a dark road that you don't want to go down.



  • @antiquarian said:

    But it is special in the sense that it's designed to be used by people who can be assumed to have more technically knowledge than the general population.

    That doesn't mean I want to waste neurons on memorizing Git commands and quirks!


  • ♿ (Parody)

    @dkf said:

    Easier to just avoid making mega-repositories in the first place.

    Goddamnit...stop making excuses for why my hammer doesn't have feature parity with my 10-in-1 screwdriver!


  • kills Dumbledore

    @boomzilla said:

    Begging the question about the desirability of the features to begin with

    Why wouldn't it be desirable to be able to check out only the part of the source that you're working on?



  • @dkf said:

    Easier to just avoid making mega-repositories in the first place.

    THE SIZE OF THE REPO IS DICTATED BY THE SIZE OF THE PROJECT!

    If Git can't cope with large projects, then YET ANOTHER REASON IT'S SHITTY SOFTWARE THAT'S ASS.



  • But then why is the project so large? If it's so large that neither Git nor TFS behave sanely on it, how are the humans expected to be able to do so?

    @Gaska said:

    I'll try this. Do you happen to have some idea how long it takes in TFS?
    About half a second, since the changeset only includes changed files. But the server has to be responding and reachable, and no one else can have locked any files you're trying to check in. Then again, TFS doesn't compute the SHA-1 hash of every single file in the work tree every checkin.


  • ♿ (Parody)

    @Jaloopa said:

    @boomzilla said:
    Begging the question about the desirability of the features to begin with

    Why wouldn't it be desirable to be able to check out only the part of the source that you're working on?

    I'm not sure. I can't say I've wanted to check out a partial repository. Sounds like doing that is asking for trouble.


Log in to reply