News for hackers. Stuff that matters.
Re:Gitless: a version control system by rplst8 on Sunday October 02, 2016 @09:22AM (#12622196)
When people say they don't like git, I lose a little faith in them as a programmer and/or engineer. This is probably due to my own biases of having worked with folks that just don't want to invest the time in learning it. That or they are afraid of branching/merging. To me this indicates intellectual laziness which isn't the kind of laziness that makes a good programmer (as is with the quote from Larry Wall and the kind of laziness he speaks of).
Re:Gitless: a version control system by Certhas on Sunday October 02, 2016 @09:35AM (#12622248)
I work with a whole bunch of scientists that program. Some mathematicians, some theoretical physicists. We run into git issues more often than we should.

It's lazy to blame git issues on intellectual laziness. Any human designed system can be learned with enough effort but in git there seems to be significant superfluous effort. Effort that probably makes sense for some use-cases that git was developed for, but as it has become ubiquitous and now we all have to live with it, programmers or not.

In my view, git has too much state. The state of my directory, the state of my branch, the staging area, the stash, etc.. these all interact in non-trivial ways when merging/branching. Gitless shows that it can be done with less state.

And the design of the interface _is_ atrocious:

http://stevelosh.com/blog/2013/04/git-koans/

Re:Gitless: a version control system by zajd on Sunday October 02, 2016 @10:00AM (#12622353)
It's really not though. And posting articles that pretend like "git rev-parse --abbrev-ref HEAD" is the best way to view what branch you're working on just makes you look dumber than you do for acting like git is difficult to work with. If people writing blog posts about "how bad the git interface is" and more time instructing newer programmers (the only ones who have any reason to complain about git) on how to correctly use the tools maybe we wouldn't have to hear so much whining about the tool.

Anyone who has been in the field understands that for all it's tradeoffs git is an incredible breath of fresh air from systems like CVS/SVN.

Re:Gitless: a version control system by Certhas on Sunday October 02, 2016 @12:56PM (#12623201)
"It's really not though."

That's not an argument. Especially vis a vis the detailed reasoning behind gitless. In my view gitless has a superior experience without losing any power.

Also no one is comparing git to CVS/SVN. It can stand miles above these and still have severe usability flaws.

And I don't work with programmers.

Re:Gitless: a version control system by zajd on Sunday October 02, 2016 @01:34PM (#12623369)
It's not an argument because that Koans article is horrible satire that people are trying to pass off as a legitimate argument. I detailed in my post one direct example as to why that post shouldn't be taken seriously.

Now, if you have some legitimate gripes about git's usability I'd love to respond to them and have a real discussion, but Gitless doesn't make those arguments, it's just a wrapper around git (which could all be done with aliases) that adds an additional layer of abstraction for no benefit (or at least none that they've felt confident mentioning)

Re:Gitless: a version control system by Certhas on Sunday October 02, 2016 @06:09PM (#12624532)
It wasn't entirely obvious what you were responding to in my post exactly. That article is satire, but if you don't even want to accept that maybe the git commands are badly named (and besides your one bad example, there are plenty of real examples in the satire) I don't see much point in having a discussion.

It being "just a wrapper around git" is an excellent argument that the user interface and usability are problematic. Nobody is arguing with the mathematical model underlying git. Gitless manages to expose a lot less state by default. That's a usability win. It's still there when you need it. There is no expressiveness lost. I find the examples they give on their website very persuasive:

http://gitless.com/#vs

If you want the detailed analysis of weaknesses of git that led to the design of gitless, it's here:

https://people.csail.mit.edu/sperezde/onward13.pdf

I don't necessarily agree with everything in there but I think it's an excellent analysis overall and worth reading as a case study anyways.

Re:Gitless: a version control system by zajd on Sunday October 02, 2016 @07:17PM (#12624771)
Thank you so much for posting that pdf, that really should be posted somewhere on that site because without the context just throwing out "it's git without a staging area" seems like a pretty poor argument. After reading the whitepaper I would still say that I'm not sure there's much value in the project, that being said they did manage to simplify the "mental model"... although honestly not by much. I'm not sure the cost is worth the benefit here.
Re:Gitless: a version control system by Certhas on Monday October 03, 2016 @05:19AM (#12626159)
No problem, BTW, in my mind it's getting rid of the (need to) stash and improved management of untracked files that are the major simplifications, not staging.

In my workflow I also see no cost, but I am happy to accept that that's because we don't have very sophisticated needs.

Re:Gitless: a version control system by dhimes on Sunday October 02, 2016 @10:31AM (#12622480)
Is there a gentle introduction, comparable to hginit.com for mercurial? When I first started version control I was trying to choose between hg and git. The site hginit was huge for getting me to swing towards hg.
Re:Gitless: a version control system by zajd on Sunday October 02, 2016 @10:38AM (#12622521)
https://www.atlassian.com/git/tutorials/

This is generally where I point people who have a technical background

Re:Gitless: a version control system by rplst8 on Sunday October 02, 2016 @11:19AM (#12622737)
Atlassian has put some great "mind abstractions" on top of git to help people understand how to use it.

It's definitely fashionable these days to hate on complicated tools. I wonder if the same is true in other professions. Simple tools are easy to use, yes. But anyone who as worked on a Bicycle or other equipment that requires specialized tools knows that the having the correct, often more complicated tool beats the hell out of wacking on it with the wrong type of wrench.

Re:Gitless: a version control system by rkangel on Monday October 03, 2016 @05:15AM (#12626146)
Software allows a better abstraction of a problem than anything in the mechanical world. Progression in software craftsmanship has shown us that powerful functionality can be hidden behind a simple interface, if sufficient thought and design is put into it.

Our expectations of how we interact with software have risen over the years, and that's a good thing.

Re:Gitless: a version control system by dhimes on Sunday October 02, 2016 @12:18PM (#12623002)
Right tool definitely wins. Mecurial is excellent, though; it solves all of my problems. But I feel like I should at least know some git basics. And I want to start at the simple beginning just in case I have some misunderstandings about what I'm doing in hg.
Re:Gitless: a version control system by dhimes on Sunday October 02, 2016 @11:09AM (#12622690)
Thank you.
Re:Gitless: a version control system by bluejekyll on Sunday October 02, 2016 @09:47AM (#12622292)
I use git all the time and prefer it for all types of workflow as a VCS, but this idea that git is perfect and it's your own fault for not learning it properly is ridiculous.

UX/UI in programs is important. I believe that git has one of the worst, most inconsistent UX's of all time. You can see this by the fractured commands.

Quick examples:

'git reset' vs. 'git revert' and sometime 'git checkout'

'git checkout' vs. 'git clone' vs. 'git pull' vs. 'git fetch' vs. 'git cherrypick'

'git rebase' vs. 'git merge' vs. 'git merge --squash'

Each one of these performs actions on a repo giving you immense power and control to do specific actions, but it's horrible UX. It's very easy to end up in a detached HEAD state, or have accidentally rebased a repo so it's out of alignment with a remote, leaving you with the trouble of dealing with that. It's crap experience, and all I want to do is code. What does it say when resolving these problems the easiest thing is to just reclone the remote repo?

I commend this project for trying to apply some sanity to the entire thing.

Re:Gitless: a version control system by fail2fail2ban on Sunday October 02, 2016 @11:21AM (#12622751)
Agree. There needs to be a higher level git command interface for those of us who appreciate git's power but would prefer to just get common stuff done without worrying if we just messed up months of work and have to unwind and fix the screwed up code base. git reminds me of C, super powerful and super easy to mess up.
Re:Gitless: a version control system by zajd on Sunday October 02, 2016 @10:08AM (#12622377)
> What does it say when resolving these problems the easiest thing is to just reclone the remote repo?

It says the git works really well because the CLI offers a simple way to "undo" any mistakes you've made. The real reason people struggle with git, and I've seen this in many other programs/places is that they rely on discoverability and just randomly try commands until they work.

Git's simplicity is it's downfall. You don't see people wrapping Angular2 in other frameworks to deal with the warts.

There's a reason people are told to look at man pages all the time, the command line is not the place to play "discoverability". There's already plenty of suggestions and help features built into the tool.

> It's crap experience, and all I want to do is code.

- every engineer when first experiencing version control

Re:Gitless: a version control system by bluejekyll on Sunday October 02, 2016 @10:52AM (#12622588)
> It says the git works really well because the CLI offers a simple way to "undo" any mistakes you've made.

This let's the design off the hook to easily. Yes, on the one hand this is a great feature, but on the other, you are deleting and restarting your workspace. It's not a great UX, it's just a simple workaround for a bad one.

> - every engineer when first experiencing version control

no, wrong. git is unique in the amount of information that you need to know just to get started with it.

Re:Gitless: a version control system by zajd on Sunday October 02, 2016 @10:56AM (#12622611)
> no, wrong. git is unique in the amount of information that you need to know just to get started with it.

Have you ever worked with a different VCS? How is setting up subversion or CVS any more difficult than going

git init

git add .

git commit -m "initial commit"

Yes, truly a monumental barrier to entry to get started.

http://vasc.ri.cmu.edu/old_help/Archiving/Cvs/cvs_tutorial.t...

If you think git is unique in the amount of information it takes to get started... I pray you work on nothing that even broaches complex.

Re:Gitless: a version control system by bluejekyll on Sunday October 02, 2016 @11:05AM (#12622668)
> Have you ever worked with a different VCS?

Yes, I've worked with RCS, CVS, SVN, SourceSafe, Perforce and some others, though know them less well.

Git is bar none the best of all (of which I've had experience) the VCS' out there. I would pick it over anything else. The issues I'm pointing out are not because I don't use it, don't understand it, or don't appreciate it. I just believe that it's too complex.

If git was literally just the set of commands you listed, that would be great. As a single user experience it's hardly ever an issue. But that doesn't mean that it can't be better! And that's why I like this gitless project (and some of the other similar ones out there), it's trying to create a decent experience that will scale.

Also, your example is about creating a new git repo, I find this to be much more rare than getting involved in an already built and multi-member team, which may have all sorts of rules about proper merges or rebases, and such.

Re:Gitless: a version control system by zajd on Sunday October 02, 2016 @11:10AM (#12622691)
It can be though. That's like saying Linux would be better if they only gave you ls, cat and nano because vi, sed and xargs were too complicated.

There is nothing about gitless that provides a decent experience (compared to git) and certainly nothing about gitless that has anything to do with operating at "scale".

The truth is commands like filter-branch, rebase, cherry-pick, etc. which are notoriously difficult to use... you don't even have to use them.

I'm not saying the git experience can't get better, but the way forward is to modify the existing tools and contribute to the project, not make git wrapper number 84 that does nothing special.

Re:Gitless: a version control system by fail2fail2ban on Sunday October 02, 2016 @11:28AM (#12622778)
> That's like saying Linux would be better if they only gave you ls, cat and nano because vi, sed and xargs were too complicated.

That's a rather condescending thing to say and not accurate or supportive of the view of git you seem to hold.

> The truth is commands like filter-branch, rebase, cherry-pick, etc. which are notoriously difficult to use... you don't even have to use them.

Until someone on the team _does_ use them and then things can become messed up in ways it takes a git expert to figure out how to fix. I've used git for several years and had never even come across filter-branch, I'd have to chase down the git docs to see what it even does. I never had to filter anything with CVS, Continuus, Perforce, SourceSafe or Subversion.

Re:Gitless: a version control system by zajd on Sunday October 02, 2016 @11:38AM (#12622813)
Here in the real world if you fuck up your local repo by running commands you don't understand there isn't a "git expert" to come by and fix it for you, in the same way if you make a VM and fuck up your local machine there isn't going to be a "linux expert" to come in and explain how to fix what you did wrong.

Part of the benefit of the tool is that you can blow everything away and restart. It's distributed, which means you CAN fuck up your local copy and there are no consequences. It's been years since I've had a repository be in an "unrecoverable" state and part of that is actually taking the time to understand what I'm doing as opposed to just crossing my fingers and hoping shit works.

The fact that other version control systems don't even have some of the power features git has is a big reason git is so popular.

Again, if you don't understand the more complicated commands, don't use them (although you should- they are incredibly powerful and worth learning about). If your team is forcing some bizarre workflow on newer developers that involves using filter-branch and cherry-pick all over the place without good reason, that's an organizational issue, not one with git.

Re:Gitless: a version control system by fail2fail2ban on Sunday October 02, 2016 @11:45AM (#12622844)
Your points would be more salient if you could make them without falling back on profanity.
Re:Gitless: a version control system by zajd on Sunday October 02, 2016 @11:55AM (#12622884)
They'd also be more salient if I didn't have to make them 10 times in a thread because everyone feels like their opinion on how "git is too hard" is worth sharing. It gets tiring defending git from the uneducated masses and hearing the same stuff trotted out over and over again that has no value whatsoever.
Re:Gitless: a version control system by fail2fail2ban on Sunday October 02, 2016 @10:49PM (#12625318)
If that many people are making the point, maybe they have a point.
Re:Gitless: a version control system by arielb1 on Sunday October 02, 2016 @12:00PM (#12622903)
How are `git reset` and `git revert` related? How are `git fetch` and `git cherrypick` related?
Re:Gitless: a version control system by bluejekyll on Sunday October 02, 2016 @03:41PM (#12623869)
In my mind you use many of those commands to perform actions in the repo or locally which are related.

For example: 'git reset HEAD~1' is something I use often, it is vaguely like 'git revert <last-hash>'. Therefore I see them as providing similar functions semantically, but not literally.

'git fetch' and 'git cherrypick' are again similar in my mind where one is pulling changes from a remote, while the other pulls a set of changes from one branch into another locally. This is not as good an example though, but I do think they have slightly overlapping concepts.

Re:Gitless: a version control system by amag on Sunday October 02, 2016 @10:39AM (#12622533)
I'm a programmer because I love to see things I imagine come to life, not because I love to learn arcane CLI interfaces. I can appreciate the beauty of the underlying design and structure of git, but the git CLI is just a horrible turd IMHO. Am I lazy? Sure, my mental ability is not infinite (ASFAIK) and I rather focus it on solving my actual problem rather than trying to find the right git-incantation for making git shut up and leave me the f* alone... I have a decent understanding of the underlying structure of git and I often know what needs to be done in terms of how one commit relates to another but git CLI...
Re:Gitless: a version control system by kasey_junk on Sunday October 02, 2016 @09:36AM (#12622251)
When people suggest that git is great I lose a little faith in them as a programmer cause it indicates to me they don't have much breadth if experience with source control systems & they are too intellectually lazy to investigate alternatives.

Could just be my biases I guess.

Re:Gitless: a version control system by musicnarcoman on Sunday October 02, 2016 @12:04PM (#12622928)
So, what alternatives are you suggesting?

I have tried and used Mercurial, SVN, RCS, CVS, Bitkeeper, TFS, Bazaar, Perforce, Darcs and of course Git. Granted, Git may not be great, but it is still my first choice.

Re:Gitless: a version control system by kasey_junk on Sunday October 02, 2016 @12:16PM (#12622987)
Hg is a very similar model to git but doesn't have the cli problems it does.

Darcs is distributed with a different (and interesting) model that doesn't have the cli problems get does.

But honestly for lots of teams dvcs is not that big an advantage (how many teams are syncing around github right now) which means something like Accurev might be a better choice. It uses a concept of streams which is pretty interesting and is GUI oriented which some people like.

Re:Gitless: a version control system by Grue3 on Sunday October 02, 2016 @02:28PM (#12623583)
Hg has a lot of problems. It has bookmarks AND branches (for some reason). To edit your commit history you need to pray to the elder gods and sacrifice a newborn. I consider myself pretty smart and yet my mind went completely blank every time I read about anything related to Mercurial Queues. The default install lacks too many features, you need to enable extensions to do even the most basic stuff, like stashing.

Darcs is obviously better than git, but very few people know it exists. And none of free web repositories support it.

Re:Gitless: a version control system by kasey_junk on Sunday October 02, 2016 @08:49PM (#12625020)
My original comment was really hyperbolic as a response to the comment above, I don't actually think being pro-git is a sign of intellectual weakness.

That said, my main issue is that git is a good set of primitives for file change management. But its main design principles are not about SCM. It sacrifices ease of workflow for source control, in favor of making centralized maintainer worflows simpler. This is a perfectly fine trade off for a system largely optimized for a few linux kernel maintainers, dealing with lots of distributed and unorganized contributors (frequently over email).

Those same workflows are not necessarily the best way to organize a small (tens of developers) team with a linear history product.

Some time try to onboard a new-grad developer to a team like the former. You spend way more time explaining git internals and data structures than you do source control management. This just isn't true if you do the same thing with other source control systems. Its easier to explain TFS, SVN, hg, perforce or accurev (the systems I have actual working experience with) in every instance.

My opinion is, if bitbucket and github had switched business models early on (ie hg repos for free if they were public and git repos free for private repos) hg would have become the defacto standard. Its just much easier to work with for most development workflows.

Re:Gitless: a version control system by __david__ on Sunday October 02, 2016 @04:48PM (#12624160)
Darcs is not obviously better than git, and I say that as a person that's used Darcs for many, many years (and who has at least patch in the Darcs codebase).

Darcs main feature is the simplicity of its data model. Just a pile of patches that compose to produce some code. Push and pull them at will. It's very neat.

Darcs used to have the advantage a nice interactive UI, but git pretty much stole it wholesale with all the '-p' options (git add -p, git checkout -p, git reset -p) so it doesn't win there any more.

Darcs also has the massive downside of not being able to hold more than one branch at a time in a directory. Do you want to switch contexts? 'darcs get' to a new directory and start over. On my most active darcs project I have about 50 directories all with random unpushed WIP patches in them. In git that would just be a bunch of stashes, which are much easier to search through.

Nowadays, if I start tweaking a project that is still in Darcs, I'll immediately switch it to git: https://github.com/purcell/darcs-to-git

Re:Gitless: a version control system by favadi on Sunday October 02, 2016 @10:49AM (#12622565)
I still think that git is great, only git - the cli is bad.
Re:Gitless: a version control system by jcranmer on Monday October 03, 2016 @01:20AM (#12625627)
My first experience with a VCS was using Mercurial, about a decade ago. In that time, I've only had at most three or four instances where I so borked the repository that I had to destroy it and start again. This includes the time when I didn't know anything about VCS and was liable to foot-gun myself. I probably first used Git about 5, 6 years ago, and, despite using it at a much reduced frequency (virtually all my git usage is via hg-git nowadays), I've easily had a dozen times where it was easier to blow away a repository than fix it.

Obviously, heavy prior experience with Mercurial does color one's views about UX, but the experience with Git that I have had--and that I have seen many others concur with--is that the UX makes it way too easy to get you in states that you don't know what to do. But that's not the biggest flaw with Git. The biggest flaw is the community: when you don't know what to do, and you start trying to find the answer, instead of being told "this is how you fix it," you instead get a lecture on the full internals of Git, and why the crazy incantation should be really obvious to any user. Is it any surprise that one would find it easier to blow away the directory and recreate the five-line build system fix whose merge conflict caused the mess in the first place?

Your comment is a picture-perfect of this community hostility that I see with Git that I don't see with other VCS. There definitely seems to be a sentiment that there is One True Way™ to do things, and if you're not doing it like that, you are wrong. I care to disagree: a VCS is a tool--it should support my workflow, not dictate it. I find that the community around Mercurial is much more in agreement with the philosophy I hold, and unsurprisingly, I've generally found Mercurial to be superior than Git.

Re:Gitless: a version control system by cmrdporcupine on Sunday October 02, 2016 @09:26AM (#12622208)
Or we've used other DVCS systems like Mercurial or Bazaar or Bitkeeper that had sane CLIs with consistent and self-explanatory user interfaces.

Git is powerful. And also seems to have a powerfully elitist community around it, as evidenced from your comment.

Re:Gitless: a version control system by CJefferson on Sunday October 02, 2016 @04:40PM (#12624132)
Some reasons I don't like git, straight off the top of my head.

* Some commands require remote branch, others require remote/branch. I can never remember which.

* git lets you create branches with names like 'remote/branch', at which point it starts going crazy because when I then write remote/branch, it doesn't know if I mean branch on remote, or the local branch remote/branch.

* When merging / rebasing goes wrong, it can be hard (or impossible) to recover back to the state I started from.

Re:Gitless: a version control system by zwieback on Sunday October 02, 2016 @10:58AM (#12622627)
I like git a lot and wish everyone standardized on it. I use the CLI almost exclusively but from my perspective it's terrible: cryptic and very inconsistent.

Looking back at my RCS history (RCS->VSS->MKSSI->CVS->SVN->git) I have to say that all of them were either hard to use or plain bad (VSS).

The problem RCSs are trying to solve is hard, that's why the tools are simultaneously indispensible and frustrating.

Re:Gitless: a version control system by na85 on Sunday October 02, 2016 @04:12PM (#12624001)
I don't like git because I have zero confidence that it won't do something dumb like fail to diff properly requiring me to merge 980 diffs in a single file while it puts the <<<<<<<< and >>>>>>>> markers in the wrong places, randomly transposing lines from one part of a file to another for no discernible reason.

You know, like happened to me today.

Re:Gitless: a version control system by fail2fail2ban on Sunday October 02, 2016 @11:17AM (#12622726)
Git works really well but I've had some exposure to Canonical's Bazaar (bzr) in the past and at a high level; I'd say it's easier to not shoot yourself in the foot with bzr while still accomplishing pretty much what Git does. I'm not knocking Git at all, just bringing some background on an alternative tool I'd say is in the same class.
Re:Gitless: a version control system by twic on Sunday October 02, 2016 @12:36PM (#12623105)
Whereas when people say they do like Git, I lose a little faith in them as a programmer and/or engineer. Because the only ways you could like Git are either to be so lazy and incurious as to be unfamiliar with the alternatives (Mercurial, and everything else that's come along since), or to have such bad judgment that you prefer Git to them.