News for hackers. Stuff that matters.
Re:Some bad Git situations and how I got myself out of them by ewjordan on Friday September 09, 2016 @03:56AM (#12460337)
"Not the friendliest of beasts" is putting it mildly.

Git is basically Linus in a nutshell: abrasive, unforgiving, and behaving like an absolute asshole to any non-expert struggling user.

Sure, engineers should probably get to know its quirks and learn to work around them because it's now ubiquitous in the field, but let's not pretend that there's something virtuous about it. This is a piece of truly terrible software with an even worse UX that just happened to win the PR battle against its superior foes, because...Idunno, Linux, I guess?

Re:Some bad Git situations and how I got myself out of them by Singletoned on Friday September 09, 2016 @04:32AM (#12460458)
> Git is basically Linus in a nutshell: abrasive, unforgiving, and behaving like an absolute asshole to any non-expert struggling user.

You forgot "brilliant".

Re:Some bad Git situations and how I got myself out of them by ewjordan on Friday September 09, 2016 @12:19PM (#12463615)
Fair point. For all my whining, I use both Git and Linux every day, they are incredible pieces of technology, especially compared to what came before.
Re:Some bad Git situations and how I got myself out of them by TickleSteve on Friday September 09, 2016 @05:26AM (#12460631)
not necessarily better than most other good engineers...

He knows a lot about his domain, sure, but he's no god and there are a lot of areas he knows diddley-squat about.... user interface design for one!

Re:Some bad Git situations and how I got myself out of them by Singletoned on Friday September 09, 2016 @05:33AM (#12460664)
> He knows a lot about his domain, sure, but he's no god and there are a lot of areas he knows diddley-squat about.... user interface design for one!

And Einstein knew nothing about biology.

I'm sure he knows "diddley-squat" about most areas, but as long as he knows a lot about his domain then he's an expert.

And he is good at user interface design, and git is a good example of that; it's just not aimed at beginners. It was designed by and for expert users, and the interface fits that very well.

Re:Some bad Git situations and how I got myself out of them by TickleSteve on Friday September 09, 2016 @05:45AM (#12460714)
no, its not a good UI.

admittedly "expert" UIs are different from "noob" UIs, but the number of "git magic spell" followers out there mean that it isn't a good UI for the majority of people who use git.

Re:Some bad Git situations and how I got myself out of them by dozzie on Friday September 09, 2016 @06:35AM (#12460909)
Well, if you treat git as Torvalds intended it in the beginning (framework for building VCS-es) and accordingly limit the discussion to git's plumbing command set, you get a sensibly good UI+architecture that is targeted at programmers that write VCS-es.

Git being operable with a pry bar and repairable with a hammer is a good proof that in this context it's a good design.

Re:Some bad Git situations and how I got myself out of them by SmellyGeekBoy on Friday September 09, 2016 @06:14AM (#12460803)
I'm not sure why a kernel developer would need to concern themselves with UI design?
Re:Some bad Git situations and how I got myself out of them by rakoo on Friday September 09, 2016 @05:36AM (#12460678)
Hah, so just like git then.
Re:Some bad Git situations and how I got myself out of them by wkd on Friday September 09, 2016 @04:19AM (#12460409)
I'm struggling to see which VCS you deem superior, I'm assuming you are not referring to SVN, Mercurial maybe?

The learning curve to git is not great but as far as I know nobody has publicly released an option that's improved enough over git to motivate the cost of switching technology. If it's not working for you the only advice I can give is either learn it until it is actually working for you rather than being in the way or try to find a better workflow.

Re:Some bad Git situations and how I got myself out of them by pjc50 on Friday September 09, 2016 @04:26AM (#12460435)
SVN is much easier to use for the standard corporate workflow of a group of people making commits to a project which mostly advances monotonically with continuous integration.

Edit: also in a Windows environment, svn copes slightly better than git. First project we tried it on had the worst possible environment, a mix of Windows and Linux systems. Line ending nightmares everywhere.

It also took a while to work out how to kill (with fast-forward) the spurious "merge commit" you get every time someone does a pull. You don't have that with svn, you just do the merging locally when you update and it doesn't generate a commit.

Re:Some bad Git situations and how I got myself out of them by brusch64 on Friday September 09, 2016 @05:02AM (#12460552)
I've been using Subversion since 10 years or so and I've changed completely to Git, so I've got experience with it.

For me Git was really a much needed upgrade to subversion. Working with branches (testing and production, we even have some repositories with multiple testing and production branches) are working like they are supposed to do. Changing commits (oops - I forgot to add one file) before pushing them to the repository for the other users is another big advantage. Working on multiple features in parallel - I couldn't do that with Subversion.

We've nearly completely eliminated the "handcrafted" local copies with multiple half finished features since changing to Git.

And if you want to use Git as a Subversion alternative you can use it in this mode too - altough you are missing out on some good new features.

I don't want to change back to Subversion.

The only disadvantage is that SourceTree (the GUI tool we are using) is a pretty lame duck in Windows. But the command line is excellent.

Re:Some bad Git situations and how I got myself out of them by TickleSteve on Friday September 09, 2016 @05:35AM (#12460675)
So what problems exactly did you have with SVN?

branches are branches in svn or git... your process may not have been correct, but lets not blame the tools here..

modifying commits is a big no-no for me, so thats not a drawback at all, the fact that its not possible in svn is a win for svn.

Re:Some bad Git situations and how I got myself out of them by brusch64 on Friday September 09, 2016 @05:57AM (#12460751)
I really like modifying commits (as long as they are not pushed) - but I know that this is quite a controversial topic.

For one of our biggest projects branches in SVN didn't work at all.

We have multiple production, test and development branches and merge branches (features) from one branch to the other (development -> testing -> production). Sometimes we cherry pick a single commit to another branch.

In those days SVN wasn't so flexibel with branches as we wanted to (or we didn't understand it enough), so our workflow was much more rigid.

Re:Some bad Git situations and how I got myself out of them by screwt on Friday September 09, 2016 @05:18AM (#12460602)
I'll second brusch64 here.

I used SVN for 7 or 8 years and then Git for the past 3, with about a year of overlap (on different repos).

To me, Git is vastly superior. I tend to use it in quite an "SVN-like" fashion - there's a single main trunk branch that we all share - but in terms of what I can do locally it blows SVN out of the water.

The difference is that Git makes things that are hard or impossible in SVN trivial. So for e.g. I create local branches all the time; I commit a bunch of small changes locally as I experiment with a fix, and then `merge --squash` to leave a clean history for others; merging fixes across different branches is easy and just works.

Re:Some bad Git situations and how I got myself out of them by TickleSteve on Friday September 09, 2016 @05:36AM (#12460684)
Finally someone with a real advantage that a DVCS (not necessarily git) has over SVN.... local branches.

Most people just spout the same sheep-like line "git>svn" without being able to justify it!

Re:Some bad Git situations and how I got myself out of them by tempodox on Friday September 09, 2016 @04:36AM (#12460473)
I concur. I would assume that git is the right tool for Linus's workflow, but whatever that is, it isn't mine. SVN does all I need and it has a friendly API and helpful documentation. In other words, the exact opposite of git.
Re:Some bad Git situations and how I got myself out of them by apk17 on Friday September 09, 2016 @05:14AM (#12460589)
SVN is a glorified backup - which is basically what you're saying.

The SVN UI is just horrid in other dimensions, mainly the "you can't do that at all" one.

Re:Some bad Git situations and how I got myself out of them by TickleSteve on Friday September 09, 2016 @05:37AM (#12460685)
sorry... you come across as a git-sheep.

(getting down-voted for it, but someone has to say it)

Re:Some bad Git situations and how I got myself out of them by apk17 on Friday September 09, 2016 @08:53AM (#12461670)
I'm prepared to give you a lot of examples (which other people might value differently). From the unfortunate consequences of the 'branches are files (and therefore tags are easily mutable by default and surprisingly hard to pin down)' to usual "I just committed, why does 'svn log' not show that?", to git bisect, to git clean and the stubbornness with which svn refuses to even consider implementing that.
Re:Some bad Git situations and how I got myself out of them by pjc50 on Friday September 09, 2016 @10:32AM (#12462564)
TortoiseSVN provides the "clean" functionality if you want it.
Re:Some bad Git situations and how I got myself out of them by TickleSteve on Friday September 09, 2016 @09:32AM (#12461982)
that sounds like process-issues... not SVN issues.

tags should not be committed to... end-of-story.

as for 'svn-log not showing commits'... I've never heard of that one in the last decade of using it... I'm genuinely interested in how that came about.

Re:Some bad Git situations and how I got myself out of them by ewjordan on Friday September 09, 2016 @11:58AM (#12463395)
Yep, Mercurial's the one. It's a shame that it lost the war, they actually seemed to care about providing a good experience to their users. There are, of course, a few technical differences between it and git, but I personally never felt like they were troublesome enough to make up for the vast difference in usability.
Re:Some bad Git situations and how I got myself out of them by marcinkuzminski on Friday September 09, 2016 @12:38PM (#12463813)
I think Mercurial hasn't lost it yet. I speak as a creator of Mercurial Source Code management system (RhodeCode)

We see that a lot of companies(our clients/users) adopting Mercurial, you just don't hear about it. Often those are companies with employees that don't tweet or post to HN ;)

RhodeCode is used also in around 60 universities, and we learned that in a lot of them they teach Mercurial as well as Git.

For a large company it's actually much cheaper to adapt Mercurial as they new DVCS because of learning curve.

I hope companies like Facebook and Mozilla will make soon Mercurial very very fast. There's constant work on it coming from those companies to improve it.

Re:Some bad Git situations and how I got myself out of them by RJIb8RBYxzAMX9u on Saturday September 10, 2016 @03:16AM (#12468098)
I don't think hg is going anywhere, if CVS is still alive and kicking in 2016, and especially since Facebook's using it. However, IMO hg lost when even python switched to git.
Re:Some bad Git situations and how I got myself out of them by brusch64 on Friday September 09, 2016 @04:25AM (#12460431)
What are the superior foes in your opinion ?

I don't know any of the other distributed version control systems. The only other version control system I have much (too much) experience with is Subversion and it can't hold a candle against Git.

In my opinion Git is the C language of version control systems. If you are careless it's not the tool for you. Otherwise you have a really great tool with lots of power.

Re:Some bad Git situations and how I got myself out of them by ubernostrum on Friday September 09, 2016 @05:32AM (#12460657)
I don't know any of the other distributed version control systems.

In an ideal world -- one where network effects of GitHub hadn't crushed all competition -- I'd get to choose Mercurial as my daily version-control system. It has similarities to git, in that both are largely user interfaces to a DAG, but its guiding philosophy and approach to the interface it exposes are far better in my opinion.

In my opinion Git is the C language of version control systems. If you are careless it's not the tool for you.

You probably don't want to make that assertion; we now have close to half a century of evidence that no human currently living can use C safely, and I don't think you'd want that to carry over to git. And it's not a matter of "careless" or not -- extremely intelligent, extremely-well-trained, extremely-careful people still write unsafe C.

Re:Some bad Git situations and how I got myself out of them by brusch64 on Friday September 09, 2016 @05:59AM (#12460758)
>we now have close to half a century of evidence that no human currently living can use C safely How many operating systems are written in C ? How many of the more mainstream operating systems are written in other languages ?

You're right that C is the wrong tool for a lot of applications. But if you need total control and speed and power it still works for many projects.

Re:Some bad Git situations and how I got myself out of them by pluma on Friday September 09, 2016 @05:58AM (#12460755)
I've heard a lot of people who seem to know their stuff say that Mercurial is superior to Git in almost every way, especially when it comes to integrating with other tooling (i.e. Mercurial seems to have an API whereas automating Git boils down to spawning shell commands). This also seems to be why Facebook switched from Git to Mercurial: they needed to be able to check out individual folders from a branch and Git simply didn't provide any way to do that without first checking out the entire branch.

Be that as it may, it's a common misconception that the more popular tool is always the better tool. There are a lot of factors to a tool's success and the technical ones are generally far less important than most people think.

Re:Some bad Git situations and how I got myself out of them by majewsky on Friday September 09, 2016 @08:36AM (#12461544)
What's so bad about spawning shell commands?
Re:Some bad Git situations and how I got myself out of them by ewjordan on Friday September 09, 2016 @12:12PM (#12463552)
People have already mentioned it, but since I made the original comment, I'll pile on and say that Mercurial was (well, still is, but it's out of fashion now) awesome. It matches Git on most axes and blows it out of the water when it comes to usability and "don't shoot yourself in the foot"-ishness.

Brushing aside some relatively minor differences, Mercurial is very similar to Git, except that it was designed by people that don't have an all-consuming disdain for all of humankind.

Re:Some bad Git situations and how I got myself out of them by TickleSteve on Friday September 09, 2016 @05:31AM (#12460653)
Can you justify git>subversion or are you just following the sheep?

Not saying I disagree... but subversion is still king in the corporate-engineering companies and it tends to work well in those types of setups.

Just beware of having unjustified-opinions. SVN may not be trendy... but neither will git in a few years time.

BTW: Mercurial still beats them all.

Re:Some bad Git situations and how I got myself out of them by Grue3 on Friday September 09, 2016 @07:17AM (#12461084)
>subversion is still king in the corporate-engineering companies and it tends to work well in those types of setups.

For some values of "work". We're using SVN at my new job, with a single trunk branch. Not having the ability to commit locally, and mess around with local branches is a pain in the ass. I found a solution though. I cloned SVN repo using git-svn and now I can make local commits like a pro, and use my beloved magit (Emacs git interface).

Re:Some bad Git situations and how I got myself out of them by apk17 on Friday September 09, 2016 @08:59AM (#12461709)
Yes, git-svn is probably the reason why the mutiny didn't happen yet in some departments. You can identify their users by having several SVN commits in as many seconds.

(I used git in an cvs-to-svn migration, and stayed since.)

Re:Some bad Git situations and how I got myself out of them by brusch64 on Monday September 12, 2016 @03:53AM (#12477905)
for me the biggest advantage is working in my own repository and then pushing the changes upstream. I can develop features independent of other features. If there is a bug I can fix it, merge it into the productive branch and carry on working on other features.

I know that many people don't like it, but I can fix up commits in my local repository and push the change upstream in one.

With SVN I wasn't able to do this, so it was a big pain if you had to fix a bug if you were in the middle of a big feature, or if you had an experimental feature you wanted to clean up and release a month later.

Re:Some bad Git situations and how I got myself out of them by rootlocus on Friday September 09, 2016 @04:04AM (#12460356)

  > just happened to win the PR battle against its superior foes, because...Idunno, Linux, I guess?
I would assume GitHub is to blame for that
Re:Some bad Git situations and how I got myself out of them by infodroid on Friday September 09, 2016 @01:10PM (#12464142)
> terrible software

The Git DAG and its content-addressable file system are an elegant solution to the problem of distributed version control. The implementation is clean and dead-simple, yet immensely powerful. This is the basis of good engineering.

> an even worse UX

Git was designed to expose its underlying implementation and not to isolate the user from it. Unlike other systems, its subcommands give the user the ability to manipulate the underlying data structure directly.

That doesn't mean it has a bad UX. Just that it has the UX of a power tool.

I also think that Git played a big role in the growth and popularity of command-line tools over the past decade. And that its interface inspired the subcommand pattern that is now commonplace in docker, vagrant, and others.

Re:Some bad Git situations and how I got myself out of them by dboreham on Friday September 09, 2016 @08:40AM (#12461568)
First time I've wanted to upvote twice!

I think besides a PR battle (there's PR people for RCS'es??) I think Git won out because "the server was free". Competitors at the time needed a big (if there were large numbers of committers) server that someone had to pay for. By that I mean the hardware to host the server -- Git needs either none, or a very lightweight machine for a server.

Re:Some bad Git situations and how I got myself out of them by tempodox on Friday September 09, 2016 @04:33AM (#12460462)
> ... that just happened to win the PR battle ...

Chalk that up to the power of fashion. Otherwise, people would use an SCM that doesn't destroy their work in the blink of an eye and actually has an API that deserves the name.

Re:Some bad Git situations and how I got myself out of them by EdiX on Friday September 09, 2016 @07:46AM (#12461256)
The only way to lose work with git is either to (a) not commit it or (b) run a garbage collection.
Re:Some bad Git situations and how I got myself out of them by apk17 on Friday September 09, 2016 @09:02AM (#12461728)
...and having commits that are not referenced by any branch.

And (c) lose the entire subtree the repo is in.