|
| mgsloan2 wrote:
| Pretty cool!
|
| One idea I really like for avoiding VCS operation anxiety for
| beginners and experts alike is a filesystem layer that allows
| revert to any historical state. You just have your bash prompt
| output the current snapshot number, and then can use that as the
| revert target if there's a botched rebase or so. Unfortunately I
| do not know of a nicely packaged way to do this, or how to do it
| at all with OSS tools (but I bet it is feasible!).
| b5n wrote:
| If your fs already supports snapshots/versioning it might be
| convenient, but it doesn't solve the actual hard part which
| generally comes after changes have been merged upstream.
|
| If we're only concerned with local changes I'd rather introduce
| beginners to `reset`, experts will already be doing something
| similar dependent on circumstance. git reset
| --hard git tag BEFORE git reset --hard
| BEFORE git reset --hard ORIG_HEAD git
| reflog git reset --hard HEAD@{}
| tempodox wrote:
| I've had VCS operation anxiety since the days of CVS. With
| Subversion it was largely a non-issue but Git made it return
| with a vengeance. This tool will presumably calm my frayed
| nerves.
| mdaniel wrote:
| > You just have your bash prompt output the current snapshot
| number, and then can use that as the revert target if there's a
| botched rebase or so.
|
| That is what the ref-log is designed to do, but in my
| experience with git the risk is not about getting historical
| content, because git is very good about that: it's the
| _current_ operation that 's the risk
|
| If I had any advice for beginners, it'd be to commit early and
| often, because git is disciplined about managing commits, but
| is a razor blade about anything in the working copy. There is
| no ref-log for "but I just typed that..." unless you told git
| to save it in something with a sha
| DenisM wrote:
| You could also use VM snapshots to undo any damage during the
| learning process.
|
| Ironic, I know.
| psychoslave wrote:
| - Dear padawan, here is your powerful elegant lightsaber. Yes, it
| can cut the vegetables you eat on a daily basis. You can even cut
| your hands easily with it. That's why I'll teach you the art of
| forecasting most probable outcomes of your next moves when you
| are using it.
|
| - Thank you Master, finally I see the light and understand the
| the fork or chopsticks dilemma is a fallacy. Millions of jedi
| knights can't be wrong after all.
| [deleted]
| prettyStandard wrote:
| This looks fantastic!
|
| I think this is what we need more of for new git users. I
| struggled for the longest with git until I came across
| learngitbranching[0]. I believe having an interactive/visual
| experience while I typed in commands is what I needed, and what
| most people need.
|
| I tell junior developers they should take a day to learn this and
| more often than not they dismiss me. Meanwhile these people will
| run into git conflicts or something and their strategy is to
| "save their work somewhere else and redownload the repo"[1]. I
| know of a "senior developer" that will do that. I basically told
| him, in my eyes, if you don't know how to use git, you are not a
| senior. Or a bad senior at a minimum. See the stack overflow
| survey. Git is used basically by all developers. How do you
| expect to be a good developer by dismissing such a ubiquitous
| tool. I think I can make an exception for people who aren't using
| git at their current company and any company before.
|
| [0]: https://learngitbranching.js.org/
|
| [1]: https://xkcd.com/1597/
| initialcommit wrote:
| Thanks for checking it out!
|
| Would be great to get any feedback you might have if you get
| the chance to install/test it out.
| prettyStandard wrote:
| Will do!
| enriquto wrote:
| > save their work somewhere else and redownload the repo
|
| Not that there's anything wrong with that, is there?
|
| As a "bad senior developer" who uses git daily, one of the
| things that I love about git is that in the end everything is
| regular files. So there's nothing wrong with just copying your
| git repository elsewhere, re-cloning it, and fixing your fuckup
| by hand. No need to feel guilty about it.
|
| Your comment sounds like criticizing somebody that does not
| know all the keyboard shortcuts that you do.
| int0x80 wrote:
| Because most problems like merging and resolving correctly,
| or rebasing or squashing if needed don't get resolved by
| cloning a new repo. If you avoid learning the tool and you
| just clone a new repo when you have a problem you won't be
| able to do any non-trivial task in git.
| prettyStandard wrote:
| Do you understand how merge conflicts happen in the first
| place? If you are to be a senior leading others, you should
| be able to explain this to juniors so they don't shoot
| themselves in the foot.
|
| Do you disagree that it's a fundamental tool to being a
| developer(today), or do you disagree that it's necessary to
| know fundamental developer tools to be a good senior
| developer?
| maccard wrote:
| Ther'es a difference between understanding how merge
| conflicts happen, and understanding how git handles basic
| operations in order ot be able to use it effectively.
|
| > If you are to be a senior leading others, you should be
| able to explain this to juniors so they don't shoot
| themselves in the foot.
|
| Firstly, not all seniors are managers. Secondly, it is not
| a good use of a senior engineer's time to be teaching
| fundamentals to a junior developer. I am a decent
| developer, a passable manager, and a poor teacher. It's
| much better for me to point my team in the direction of
| existing tools.
|
| > Do you disagree that it's a fundamental tool to being a
| developer(today), or do you disagree that it's necessary to
| know fundamental developer tools to be a good senior
| developer?
|
| Other VCS tools exist, it's possible to have gone a decade
| in the industry as an effective developer without using
| git. Many large companies use Perforce, other companies use
| internal tools. I disagree that it's necessary to
| understand the working model of fundamental tools to use
| them. We don't require truck drivers to understand the
| difference between the Otto and Diesel cycles to drive a
| truck, why is it ok to force developers to undersatnd the
| many, many, many different operations that `git checkout`
| can perform depending on the state of your repository/what
| you've asked it to do?
| spyremeown wrote:
| This is really good!
|
| I generally have a good mental model of my repo and I try to KISS
| as much as possible, but I can see the value of this in a
| teaching scenario, for example (as well as on extremely complex
| git situations).
|
| Check out the quickstart page as well, seems to have more
| content[1].
|
| [1] https://initialcommit.com/tools/git-sim
| initialcommit wrote:
| Haha wow you posted this before I could! I created Git-Sim and
| hope that folks can get some use and value out of it. Happy to
| answer any questions anyone might have, and especially looking
| for feedback so that I can improve the tool. Also if anyone is
| interested in contributing let me know and also check out the
| project Github page:
|
| https://github.com/initialcommit-com/git-sim
| user3939382 wrote:
| It doesn't matter how much I look at them, and I get the
| reasoning, but the right->left flow orientation of VCS diagrams
| will always be disorienting for me.
| initialcommit wrote:
| You can use the --reverse flag to reverse the direction of the
| graphs in Git-Sim.
|
| However the fact that time flows in the opposite direction of
| the parent/child relationships, is inevitable based on Git's
| design.
| mpolichette wrote:
| I always have to remind myself that they're dependency arrows
| and not a sequence ordering.
|
| They make it look like it flows right to left even though time
| (or at least sequence) flows left to right.
| yeputons wrote:
| Looks great!
|
| I'm really missing support for remotes. There are lots of tools
| for local-only development (like
| https://gitexercises.fracz.com/), but very few allow to
| demonstrate stuff like "Syncing a GitHub fork with the original
| repository" which involves two remotes and three copies of the
| same branch at the very least.
| initialcommit wrote:
| This is a great point. I thought about how I could simulate
| commands like "git pull" and "git push", but like you said that
| would require communicating with the remote to determine ...
| stuff ... like what objects need to be synched, and potentially
| even doing some of the actual data transfer before an accurate
| simulation would be possible.
|
| My initial goals for this tool are to purely simulate actions
| on Git repos without actually modifying them, but I might be
| flexible on that going forward, as I mention in the article
| with the --execute flag.
| capableweb wrote:
| > simulate actions on Git repos without actually modifying
| them
|
| One way around this could be to create a new temporary
| directory in /tmp, copy .git over there and symlink the rest,
| then run whatever operation in the newly copied workspace and
| compare it with the original.
|
| Then you can mutate things however you want and the original
| stays the same.
| initialcommit wrote:
| Hey cool idea! I'll definitely consider that and variations
| on it. This could work for Pull-direction operations like
| fetch/pull, but maybe not as well for push since the remote
| would still be affected in some way.
|
| Will need to think about it more...
| jfcnotagain wrote:
| You can push to a folder too. So you can just do the same
| thing. Clone the remote into a folder and push into it.
| capableweb wrote:
| Was gonna suggest the same! I use this countless of
| times. It's really cool how you can push/pull to a bunch
| of different things, including directories, ssh hosts,
| anything that can act as a directory (network mounted
| FUSE directories) and more.
|
| Personally I use it a lot for backing up git repositories
| to a USB stick where I have a backup of every single
| repository + its branches and commits in case I ever need
| to recover from them. And I can keep my GitHub remotes
| clean without 100s of branches.
| xwowsersx wrote:
| I have always wanted something like this. Will be giving this a
| try. Nice work!
| lumb63 wrote:
| This looks promising as a teaching aide. At my previous company,
| I transitioned our project from Clearcase to Git to save us
| licensing and administration fees. Many of the senior developers,
| who had never used Git, had a hard time understanding it, and I
| spent many whiteboard sessions explaining by drawing similar
| graphs. This would give those developers more autonomy, and stop
| the "let me blow it away and start over", which would drive me
| nuts. Devs spent a lot of time and frustration performing that
| operation.
|
| I believe the core issue is devs like above never take the time
| to "grok" Git. I believe part of this is due to the lack of a
| tool like above to teach easily, but also because devs want to
| ignore the "how" of their tool working to find out the exact
| commands they need to run in their current situation.
|
| One could argue users should not need to understand how their
| tool works to use it effectively and this is a leaky abstraction.
| Others could argue some commands are not intuitive (git reset can
| do many things, and git rebase swapping ours/theirs comes to
| mind). I don't claim Git is perfect, and sometimes I need to
| Google to learn more than I wanted to, to get out of an obscure
| scenario (e.g. someone put classified intelligence into a
| repository we need to transfer to a lower classification network;
| how do I rewrite the entire history while correcting this error
| that occurred 487 commits ago?). However, understanding the tree
| structure of Git, what git rebase does under the covers, what
| branches and tags are, how remotes work, how merging works, etc.
| would go a LONG way. The folk I worked with struggled to pick it
| up.
| philsnow wrote:
| > I believe the core issue is devs like above never take the
| time to "grok" Git. I believe part of this is due to the lack
| of a tool like above to teach easily, but also because devs
| want to ignore the "how" of their tool working to find out the
| exact commands they need to run in their current situation.
|
| Github is largely to "blame" for this. It mostly only exposes
| the happy path and using git kind of like any other VCS, but
| above all it ossifies the idea of git repositories being
| centralized (both because the canonical repo is always on
| github.com but also because of the forking/ownership model). A
| lot of the power (and sharp edges, and messiness) of git are in
| scenarios where everybody has a local repo and nobody's is
| really "canonical".
|
| Git is really well-suited to development of the linux kernel.
| It's not.. amazingly well-suited for the job that 95% of people
| these days press it into?
| dev_snd wrote:
| I think that the bigger problem is the misuse of Tags as the
| sole method of marking a commit for release for example.
|
| Tags could be utilised for naming commits which would make it
| much easier to reason about where in the process of your
| development you are instead of referencing commits by hash.
| Hashes are hard to remember after all.
| bornfreddy wrote:
| Except, if you rebase, your tags get "lost" (not really,
| but they still point to the same old commit unless
| explicitly changed). Log is your friend, and making sure
| that the commits make sense (they do a single well-defined
| thing) helps a lot, because you always know which commit
| does what. But yes, that means using `git commit --fixup
| && git -i --autosquash ^1`
| frequently to fix existing (older) commits instead of
| making new trivial ones.
| airtonix wrote:
| [dead]
| viraptor wrote:
| Why not use branches for that? That's often for people to
| it.
| cdcarter wrote:
| My company is currently transitioning from a 20+ year old
| Perforce depot to a git workflow. We're certainly having issues
| like you describe, where people don't know (and don't care to
| learn) the mechanics of git. And I agree, git is the kind of
| tool where once you understand the primitives, you can quickly
| start making lateral leaps to solve problems.
|
| But I do think that there's room for a better mechanism for
| orchestrating "macros" or building other workflows on top of
| git. I know a lot of developers who'd love the ability to
| pretend they're using p4.
| IshKebab wrote:
| Were you trying to teach them with the CLI though? That's a
| terrible approach. The CLI is awful and Git is a visual thing.
|
| It's like teaching someone to drive a car using LOGO.
|
| The way to teach Git is:
|
| 1. Explain the mental model ( _correctly_ ). Basically a commit
| is a _snapshot_ with deduplication to avoid huge file sizes.
|
| 2. Show them how to use a good Git GUI. There are a lot of bad
| ones. I would recommend Git Extensions (terrible name but it's
| actually quite good). Or maybe GitX on Mac.
|
| 3. Let them learn the CLI slowly in their own time.
| lumb63 wrote:
| I never found a GUI that was more intuitive than the CLI,
| personally. I am a bad person to consult for this, since I
| live in vim and tmux (my coworkers hid my mouse for April
| Fool's Day and I went the day without it to make a point)
| while others blaze ahead in VS Code and know the bare minimum
| command line to get their job done.
|
| I'll take a look at Git Extensions, thanks for the
| recommendation! Some of our devs took to using the
| integration with VS Code, which I didn't like because I
| didn't understand how its terminology (e.g. "sync" mapped to
| underlying Git operations). Others tried the Git GUI which I
| found very confusing.
|
| I focused on the graphical operations and then tried to show
| them what commands they could run to execute those
| operations. Next time I'm in the situation, maybe I'll adopt
| a GUI-first approach.
| bornfreddy wrote:
| My issue with gui is that sometimes I need to work with git
| in terminal, over ssh, so I need to know it. Once I learned
| it, what's the point of using a gui? [0]
|
| [0] there is one operation where gui is more convenient for
| me - exploring branches in gui or GitLab ("repository ->
| graph") has no equivalent in cli that I know of
| (interestingly, GitHub doesn't have that either, but many
| gui tools do).
| counttheforks wrote:
| Terrible advice, you should absolutely start with the
| official UI, which is the CLI. Avoiding it because "it's
| hard" will just complicate everything down the line.
| renox wrote:
| Ahem, let's avoid the over-generalisation thanks!
|
| I learned git at 45yo after many years using ClearCase (even
| licensed as CC admin) and .. I really liked learning git, I do
| admit that it took me two full days of self study to start
| groking git but I wouldn't call it 'struggling'.
|
| Obviously it depends a lot of your background.. git is the 5th
| version controls I've used , while it is far from being perfect
| (submodules.. :-( ), it's my favourite.
| andyjohnson0 wrote:
| > I believe the core issue is devs like above never take the
| time to "grok" Git.
|
| The problem I have with git us that it's just too complicated.
| When I'm juggling project complexities and design complexities
| and implementation complexities, I frequently don't want to
| have to deal with git too.
|
| I understand how to stage and check in and squash, and branch
| and merge, and how to manage remotes. But last week I still
| managed to get a new repo into a state where I couldn't push
| local changes to github without doing a pull first, and I
| couldn't do a pull without (apparently) first updating the
| remote. I had a hard deadline and ended up deleting the repo
| and starting fresh. Nothing much was lost. I never had this
| trouble with tfs...
|
| Maybe I'm just not clever enough, but I've never come across a
| dev tool with as much surface complexity as git.
|
| (Not a git hater. Use it every day. Have had a personal github
| profile for a decade. Etc etc.)
| fortran77 wrote:
| I teach git professionally. I have a 3-day 12-hour course I
| give.
|
| I'm amazed how many people who have used SVN or CVS just
| assume git works like that but with different commands. And,
| of course, they get very screwed up. (GitHub contributes to
| this problem, too, with their own set of commands like
| "forks" and "pull requests" that aren't really a part of
| git.)
|
| One you understand the Merkle DAG that's at the heart of git,
| understanding the rest is simple. Yes the commands are named
| badly, but get past that and it's a great system.
| greazy wrote:
| 12 hour days? That seems way too long. How did the
| participants handle the amount of information over the time
| period?
| fortran77 wrote:
| No! It's 12 hours over 3 days.
| [deleted]
| howinteresting wrote:
| You're not alone. Git is an embarrassment to our profession.
| SavageBeast wrote:
| Finally someone comes out and says it - I totally agree. I
| don't recall ever having to have a "tutorial" on
| Subversion. Git solves a problem the average dev really
| doesn't have in the first place.
| fortran77 wrote:
| It was painfully difficult to branch in subversion. And
| remember the agony of asking someone to check in a file
| so another developer can check it out?
| capitainenemo wrote:
| Branching was just a copy? What was so hard about that?
|
| As for check-out locks. you only had to ask them to do
| that if they'd requested a lock on the file which was not
| the default. I hope people weren't doing that too often
| at your workplace.
| howinteresting wrote:
| To be fair, Subversion had plenty of serious limitations.
| Local commits are a really good thing. It's just that Git
| itself is a terrible UI around a bunch of decent ideas.
| capitainenemo wrote:
| Sure. Absolutely but there were some benefits to its
| simple model that are still attractive for a corporate
| env.
|
| https://www.bitquabit.com/post/unorthodocs-abandon-your-
| dvcs...
|
| One of my fav rants on this subject.
| rubyist5eva wrote:
| Mercurial should have won, it's superior in every way. For
| pesonal projects I use Fossil, which is fantastic.
| crispyambulance wrote:
| I've resigned myself to accepting git because I have to use
| it. But JFC, I've hated it from the first time I tried it.
|
| We now have a large selection of tools that allow you to
| visualize what's going on (I use git-kraken), as well as
| google for help on doing something that isn't in muscle
| memory.
|
| But, really, SO MUCH pain and suffering could have been
| resolved by refactoring the damn commands to something more
| coherent and consistent. Git people sometimes call this
| "porcelain"-- which I guess is an apt name because it makes
| one think of a toilet (but an improvement to a hole in the
| ground).
| fisherjeff wrote:
| This is maybe the most cogent version of my exact feelings
| on git I've ever read. In theory, I have no issues with
| git! In practice, the UX is often very very bad.
| jacquesm wrote:
| Seconded. Git, like Linux is used everywhere, you can't
| avoid them. And even though I use it externally locally I
| use subversion, whose commands make a lot more sense to me.
| But Linus has something going for him: he knows how to
| establish critical mass for his projects, and how to create
| viable ecosystems.
| airtonix wrote:
| [dead]
| capableweb wrote:
| > I believe the core issue is devs like above never take the
| time to "grok" Git
|
| I believe the same, and it's not just a problem you see with
| git, it's all over the place. Some developers seems eager to
| use something so they just skim the documentation in order to
| do the least amount of reading and understanding in order to
| implement something, but often miss some fundamental detail and
| have to jump back. Or, they fundamentally misunderstand the
| tool at all, but push forward with their own idea what the tool
| is, rather than stepping back and start learning again.
| wpietri wrote:
| You say that like it's bad, but that's just life. We're
| trying to fit a whole universe into 3 pounds of meat. If we
| stopped to truly understand anything before taking action,
| we'd never get anywhere.
|
| That's especially true in technology, where whole armies of
| people are working to complicate things as fast as possible.
| For the best of reasons, of course. But when I started out, I
| could read one short book and have a pretty good
| understanding of my computer's processor, and from there it
| wasn't much further to understanding the whole computer. Now
| I could spend days just understanding, say, processor cache
| strategies [1]. A field that is super interesting, but if I
| am to get any of my actual work done, I can't afford to dig
| into that and the many, many other similar subtopics. I'm
| going to get a casual understanding of something, do my best
| to make something useful, and only dig in further when I'm
| forced to.
|
| When I do have to dig in, it comes in two cases for me. One
| is where there is something necessary complexity that I would
| have to learn about regardless. E.g., if something is too
| slow, I need to learn about what happens under the hood to do
| proper performance tuning. Great, fine, I will learn it.
|
| But then there's the other bucket, which includes unnecessary
| complexity, bad abstractions, poorly considered UX, and the
| like. For me, git is clearly in that bucket. I intentionally
| have very simple development flows. Git can do a great deal,
| 98% of which I not only don't need, I actively don't want.
| [2] So I'm going do my best to remain ignorant of its inner
| workings, stick with my small number of commands, and very
| occasionally refer to "Oh Shit, Git!?!" [3] And I'm perfectly
| happy with that until it gets replaced with a technology that
| better matches the domain.
|
| [1] e.g.: https://chipsandcheese.com/2022/05/21/igpu-cache-
| setups-comp...
|
| [2] An example of what I don't want:
| https://www.tiktok.com/t/ZTRpPPuKf/
|
| [3] https://ohshitgit.com/
| pdimitar wrote:
| I'm very happy to fundamentally misunderstand GIT's internals
| because I want to do a finite (and small) set of operations
| with it, not HOW it operates under the covers.
|
| Conflating the two, like you do, is elitism.
|
| "If you just stopped and read to understand...", a-ha, sure,
| I'll do that for every one of the no less than 500 tools I've
| used over the course of my career and will never get anything
| done on time.
|
| There's no time. We got real work to do and no we can't
| switch to a company that gives us this time. There's a big
| world outside the Silicon Valley.
|
| GIT is a huge UX failure and seeing people pretend otherwise
| makes me question my -- or their -- sanity.
| dbalatero wrote:
| I agree with you, but I also have the thought of "well, git
| is one of the _top_ tools of the 500 I use," so I think I'm
| a bit more inclined to fill in a few more gaps as I
| encounter them. Ultimately though if you have the right
| balance of knowledge about the tool, you can always stop
| learning more about it until you learn otherwise...
| pdimitar wrote:
| Also true, and I agree. As mentioned in a sibling
| comment, with time I kind of started loathing the idea of
| learning GIT's internals so here we are. We'll see, these
| things tend to fall away with time.
| capableweb wrote:
| You won't have to put your entire life on break in order to
| understand the fundamentals of git and why it works the way
| it works. Going through https://jwiegley.github.io/git-
| from-the-bottom-up/ and really understanding the material
| will take you a couple of hours at max, but will save you a
| lot of time in the future.
|
| Wanting to understand things before using them is hardly
| elitism, not sure why you would think that.
|
| Just like you probably don't want to fix bugs without
| understand the cause, it's hard to use a tool correctly
| unless you know how the tool works.
| maccard wrote:
| Git is one (egregious) example though; Do I need to
| understand the fundamentals of every tool that I
| use/interact with every day? That's just not feasible. If
| not, where do you draw the line? To many, git is a means
| to an end, in the same way that
| $(insert_internal_tool_here) is. Nobody expects you to
| know the details of a B-tree and an R-tree to use MySql,
| so why is it ok to expect people understand the
| implementation details of git to use centralized version
| control?
| pdimitar wrote:
| I like your analogy because it outlines the flaw of GIT:
| we have to "fix bugs" in its UX so we can get our job
| done with it. :\
|
| Also yeah, I agree learning GIT is not a huge sacrifice
| but with time I built a huge internal resistance against
| it so... dunno. -\\_(tsu)_/-
|
| Maybe I'll get to it one day, in the meantime I am OK
| relearning cherry-pick and a few others every time I need
| them. I don't know, it just doesn't make sense to me.
| Guess to this day I don't see why it had to be a graph
| DB.
| counttheforks wrote:
| Do you have an alternative tool which everyone already
| uses? No? Then stop complaining and spend an afternoon
| learning it. You'll save yourself, and everyone who is
| forced to interact with you, a massive headache.
| TylerE wrote:
| Serious Stockholm syndrome on display
| pdimitar wrote:
| The only one complaining here is you. Also this is not
| Reddit, chill.
| counttheforks wrote:
| You can either learn the tools of the trade, or you can
| go online and complain about how your hammer is too hard
| to use and so you refuse to hold it right. How is that
| not complaining?
| TylerE wrote:
| You tell the guy using a brick as hammer that it isn't
| actually a good hammer, no matter how many other people
| are also using bricks as terrible hammers. Git is a
| brick.
| arcanemachiner wrote:
| Memories of the "PHP Is A Fractal of Bad Design"
| article...
| maccard wrote:
| That's not a good analogy. A better analogy is someone
| telling you that you need to understand material sciences
| to be able to use an impact driver properly.
| counttheforks wrote:
| Can you learn material sciences in an afternoon of
| minimal effort?
| bornfreddy wrote:
| Mercurial.
|
| Also, not having another option would hardly make git
| optimal (or even good).
| counttheforks wrote:
| No, it doesn't. It does make learning it practical
| considering it's what everyone uses.
|
| If you think you can do better, please do! Let me know
| when you've gotten a few projects to switch over and I'll
| gladly learn that, too. Not a lot of projects using
| mercurial these days.
| capitainenemo wrote:
| How many projects/companies do you need? There's still a
| fair number using it.
| counttheforks wrote:
| It's insane to me how many developers simply refuse to read
| documentation or spend _any_ time at all learning the new
| tools they 're supposed to use.
| charlie0 wrote:
| How to tell apart the professionals from those who just do
| the equivalent of button mashing to get something to work.
| howinteresting wrote:
| This is all Stockholm syndrome. Git has a lot of random
| accidental complexity, from reset and checkout doing too
| many things (yes I'm aware of switch and restore), to
| stacks being a pain to work with. The idea that you're
| supposed to just be in the middle of an interactive rebase
| most of the time is mind-boggling.
|
| A better thing to say is "yeah we've been saddled with this
| horrible tool, yeah we know it sucks, but it'll suck a bit
| less when you learn it. Oh and sorry if you're not a
| professional developer and have to use git, I hope we can
| do better next time."
| counttheforks wrote:
| Yes, we all know it has some rough edges and could be
| more convenient. Unless someone actually makes that
| idyllic more convenient tool and it becomes widespread,
| none of that matters. We're stuck with the hammer that
| everyone else is using. No sense refusing to learn how to
| use it just because you're stubborn, everyone else
| managed just fine.
| bornfreddy wrote:
| Well no, that's not the case. In fact many projects
| (gitless for example) clearly show that a consistent UI
| for git _is_ possible, but unless git developers decide
| to rework the tool completely, we are stuck with what we
| have. And no, using a 3rd party tool and convincing every
| team that gitless is better is simply not going to
| happen. The way out is for someone to swallow their
| pride, admit they did a half-assed job and fix it. Not
| holding my breath though.
|
| I say that as someone who uses git daily, who has learned
| git internals, who uses cli almost exclusively, who helps
| the teammates out of their git problems and who still
| hates the cli inconsistencies.
| initialcommit wrote:
| Yes much agree!
|
| A big reason I wanted to pursue this idea is exactly what you
| mentioned - a lack of ability to easily create presentation-
| quality Git structures that can apply specifically to the
| situation a user is in, NOW.
|
| A super annoying thing about troubleshooting Git issues is when
| you find a similar solution online but it's done in someone's
| random repo which could be very different that yours. Your
| whiteboard sessions are another good example down this line of
| thought.
| NeutralForest wrote:
| Git is an amazing tool with terrible UX. It's very difficult to
| know what the right thing to do is and the mental model is a
| bit weird. For example, undoing an operation is another, new
| commit.
| mooneater wrote:
| Its... cool?
|
| Alternative would be: clone the repo, do your changes, run gitk
| to be sure.
|
| Which has advantage that result looks _exactly_ the same as it
| will in production (no new diagram type b /c only using git and
| gitk), with zero risk that sim differs from reality.
| initialcommit wrote:
| Ew clone a repo to simulate a command?!
|
| Hehe jk you make a fair point, and in fact I do have a bunch of
| work left to do to make sure my simulations do match up with
| Git's behavior as closely as possible.
|
| One big benefit I was going for with Git-Sim though is to
| interrupt the developer workflow as little as possible.
|
| Changing directories, running a new clone (which could take a
| mildly annoying amount of time), and running gitk is a pretty
| big context-switch.
| xwowsersx wrote:
| I tried to get manim and its dependencies installed and ran into
| some issues: error: subprocess-exited-with-error
| x Building wheel for manimpango (pyproject.toml) did not run
| successfully. | exit code: 1 +-> [27 lines of output]
| Error in sitecustomize; set PYTHONVERBOSE for traceback:
| AssertionError: running bdist_wheel running
| build running build_py creating build
| creating build/lib.macosx-13-arm64-cpython-310 creating
| build/lib.macosx-13-arm64-cpython-310/manimpango
| copying manimpango/_version.py ->
| build/lib.macosx-13-arm64-cpython-310/manimpango
| copying manimpango/__init__.py ->
| build/lib.macosx-13-arm64-cpython-310/manimpango
| copying manimpango/utils.py ->
| build/lib.macosx-13-arm64-cpython-310/manimpango
| copying manimpango/cmanimpango.pxd ->
| build/lib.macosx-13-arm64-cpython-310/manimpango
| copying manimpango/cairo.pxd ->
| build/lib.macosx-13-arm64-cpython-310/manimpango
| copying manimpango/register_font.pxd ->
| build/lib.macosx-13-arm64-cpython-310/manimpango
| copying manimpango/pango.pxd ->
| build/lib.macosx-13-arm64-cpython-310/manimpango
| copying manimpango/glib.pxd ->
| build/lib.macosx-13-arm64-cpython-310/manimpango
| copying manimpango/enums.pyx ->
| build/lib.macosx-13-arm64-cpython-310/manimpango
| copying manimpango/register_font.pyx ->
| build/lib.macosx-13-arm64-cpython-310/manimpango
| copying manimpango/cmanimpango.pyx ->
| build/lib.macosx-13-arm64-cpython-310/manimpango
| running build_ext building 'manimpango.cmanimpango'
| extension creating
| build/temp.macosx-13-arm64-cpython-310 creating
| build/temp.macosx-13-arm64-cpython-310/manimpango clang
| -Wno-unused-result -Wsign-compare -Wunreachable-code -fno-common
| -dynamic -DNDEBUG -g -fwrapv -O3 -Wall -isysroot
| /Library/Developer/CommandLineTools/SDKs/MacOSX13.sdk
| -I/opt/homebrew/opt/openssl/include
| -I/opt/homebrew/Cellar/pango/1.50.12/include/pango-1.0
| -I/opt/homebrew/Cellar/harfbuzz/6.0.0_1/include/harfbuzz
| -I/opt/homebrew/Cellar/pango/1.50.12/include/pango-1.0
| -I/opt/homebrew/Cellar/glib/2.74.5/include
| -I/opt/homebrew/Cellar/fribidi/1.0.12/include/fribidi
| -I/opt/homebrew/Cellar/harfbuzz/6.0.0_1/include/harfbuzz
| -I/opt/homebrew/Cellar/graphite2/1.3.14/include
| -I/opt/homebrew/Cellar/cairo/1.16.0_5/include/cairo
| -I/opt/homebrew/Cellar/glib/2.74.5/include
| -I/opt/homebrew/Cellar/glib/2.74.5/include/glib-2.0
| -I/opt/homebrew/Cellar/glib/2.74.5/lib/glib-2.0/include
| -I/opt/homebrew/opt/gettext/include
| -I/opt/homebrew/Cellar/pcre2/10.42/include
| -I/opt/homebrew/Cellar/pixman/0.42.2/include/pixman-1
| -I/opt/homebrew/Cellar/fontconfig/2.14.1/include
| -I/opt/homebrew/opt/freetype/include/freetype2
| -I/opt/homebrew/Cellar/libpng/1.6.39/include/libpng16
| -I/opt/homebrew/Cellar/libxcb/1.15/include
| -I/opt/homebrew/Cellar/libxrender/0.9.11/include
| -I/opt/homebrew/Cellar/libxext/1.3.5/include
| -I/opt/homebrew/Cellar/libx11/1.8.3/include
| -I/opt/homebrew/Cellar/libxcb/1.15/include
| -I/opt/homebrew/Cellar/libxau/1.0.11/include
| -I/opt/homebrew/Cellar/libxdmcp/1.1.4/include
| -I/opt/homebrew/Cellar/xorgproto/2022.2/include -I/Library/Develo
| per/CommandLineTools/SDKs/MacOSX12.sdk/usr/include/ffi
| -I/opt/homebrew/Cellar/pango/1.50.12/include/pango-1.0
| -I/opt/homebrew/Cellar/harfbuzz/6.0.0_1/include/harfbuzz
| -I/opt/homebrew/Cellar/pango/1.50.12/include/pango-1.0
| -I/opt/homebrew/Cellar/glib/2.74.5/include
| -I/opt/homebrew/Cellar/fribidi/1.0.12/include/fribidi
| -I/opt/homebrew/Cellar/cairo/1.16.0_5/include/cairo
| -I/opt/homebrew/Cellar/pixman/0.42.2/include/pixman-1
| -I/opt/homebrew/Cellar/libpng/1.6.39/include/libpng16
| -I/opt/homebrew/Cellar/libxcb/1.15/include
| -I/opt/homebrew/Cellar/libxrender/0.9.11/include
| -I/opt/homebrew/Cellar/libxext/1.3.5/include
| -I/opt/homebrew/Cellar/libx11/1.8.3/include
| -I/opt/homebrew/Cellar/libxcb/1.15/include
| -I/opt/homebrew/Cellar/libxau/1.0.11/include
| -I/opt/homebrew/Cellar/libxdmcp/1.1.4/include
| -I/opt/homebrew/Cellar/glib/2.74.5/include
| -I/opt/homebrew/Cellar/harfbuzz/6.0.0_1/include/harfbuzz
| -I/opt/homebrew/Cellar/graphite2/1.3.14/include
| -I/opt/homebrew/Cellar/glib/2.74.5/include/glib-2.0
| -I/opt/homebrew/Cellar/glib/2.74.5/lib/glib-2.0/include
| -I/opt/homebrew/opt/gettext/include
| -I/opt/homebrew/Cellar/pcre2/10.42/include
| -I/opt/homebrew/Cellar/fontconfig/2.14.1/include
| -I/opt/homebrew/opt/freetype/include/freetype2
| -I/opt/homebrew/Cellar/xorgproto/2022.2/include -I/Library/Develo
| per/CommandLineTools/SDKs/MacOSX12.sdk/usr/include/ffi -I/opt/hom
| ebrew/opt/python@3.10/Frameworks/Python.framework/Versions/3.10/i
| nclude/python3.10 -c manimpango/cmanimpango.c -o
| build/temp.macosx-13-arm64-cpython-310/manimpango/cmanimpango.o
| clang: error: no such file or directory:
| 'manimpango/cmanimpango.c' clang: error: no input files
| error: command '/usr/bin/clang' failed with exit code 1
| [end of output] note: This error originates from a
| subprocess, and is likely not a problem with pip. ERROR:
| Failed building wheel for manimpango Building wheel for srt
| (setup.py) ... done Created wheel for srt:
| filename=srt-3.5.2-py3-none-any.whl size=22467 sha256=ef7a967b7b3
| 225064d5e8eecf84934ec066e759d288fcddbe104d26954b1df35
| Stored in directory: /Users/me/Library/Caches/pip/wheels/2b/4a/52
| /216182e898297499cfe0947127f551712c4169ea2e69bcf9d7
| Successfully built click-default-group srt Failed to build
| manimpango ERROR: Could not build wheels for manimpango,
| which is required to install pyproject.toml-based projects
|
| I'm not sure what the underlying problem is here. Anyone have any
| ideas?
| xwowsersx wrote:
| I installed a later Python with pyenv and was able to get this
| to work.
| initialcommit wrote:
| Ah good! Glad to hear it. I had some issues when trying to
| install it on Mac's using the system Python. Switching to a
| homebrew-installed version of Python >3.7 worked for me in my
| testing.
|
| But glad you got it working too!
| garganzol wrote:
| This is why I'm in love with Mercurial. It has a very simple
| mental model which is not far from Git, but Mercurial's commands
| and presentation are so much more comprehensible.
| DenisM wrote:
| Do you know of a GitHub equivalent for Mercurial? Bitbucket no
| longer supports hg. :/
| ezst wrote:
| There's also Heptapod: https://heptapod.net/
|
| > Heptapod is a community driven effort to bring Mercurial
| SCM support to GitLab(tm), started by Octobus, a company
| providing professional services around Mercurial.
| stefncb wrote:
| There's sourcehut, though it's quite a paradigm shift from
| github.
| dgfitz wrote:
| Every time I see a thread like this I echo the same sentiments.
| It's not hard to grok how hg works, git adds more mental cycles
| which just take away from solving the actual problem at hand
| initialcommit wrote:
| Nice I need to find some time to actually sit down with
| Mercurial for a nice summer afternoon
| skulk wrote:
| I want to pile on here; I switched to Mercurial for some
| projects and didn't think much of it (had to look up
| equivalents of some git commands here and there). However,
| after 2 years of that, coming back to git made me feel like a
| total newbie. I recently got myself into a detached HEAD
| state and felt like I was groping in the dark with "git
| reset". I never had this issue with mercurial, even with
| weird botched evolve/content-divergent states.
| badpromptngnir wrote:
| Trying to install it right now and wow it is taking some time.
| Running 'brew install Pango scipy' is taking more than 5
| minutes(still counting). I knows its a one time process but
| still. The number of dependencies can be reduced I guess.
| initialcommit wrote:
| Hey there fellow Mac user! And thanks for testing it out - were
| you able to get it installed or is it still chugging along?
|
| Yes I feel your pain with Homebrew which can take forever just
| to check for updates on installed packages, before it even gets
| to installing anything new.
|
| I know the current installation method of having to first
| install Manim's dependencies is not ideal, but in most of my
| testing it was relatively painless.
|
| However going forward I am going to be looking for ways to make
| it a single install instead of various steps that differ across
| platforms.
| badpromptngnir wrote:
| Yes, i am testing it now.
|
| So far seems good, initially i was getting some very slow
| animation times but adding the `--low-quality` flag seems to
| work well.
|
| I am planning to do an internal session in my company on Git,
| and will be using this tool to help them visualise some of
| the concepts :)
| initialcommit wrote:
| Sweet! Yeah the slow animation is a Manim performance
| limitation, I think (hope) their community is working on
| improving that.
|
| Yes --low-quality works for testing but the fastest way
| would be to first test without the --animate flag at all,
| so you just get a final image of the command's effect.
|
| Then once you get that you can add the --animate flag to
| generate your final video to share.
|
| And awesome to hear it will be used for your company
| session! I love teaching people about Git. Feel free to
| share the tool with them so they can try it out as well!
| jerpint wrote:
| I saw the video and instantly recognized the manim style, it
| looks great!
| initialcommit wrote:
| Manim rocks.
| eurasiantiger wrote:
| The animation would be clearer if there was also an annotation of
| what was happening at each moment.
| initialcommit wrote:
| Interesting thought - do you mean like a line of text that
| displayed above that verbally described what's happening?
|
| I was considering adding some more detailed text-based output
| on the command-line detailing what was going on, but I didn't
| think about adding it directly into the image/video.
| jerpint wrote:
| I think it would be helpful in the blog post to list the
| series of changes happening to the files before the
| animations
| initialcommit wrote:
| Good suggestion, I will add that.
___________________________________________________________________
(page generated 2023-01-22 23:00 UTC) |