Live data from Hacker News

GitHub Sunsetting Subversion Support

github.blog

201–210 of 238 posts

Re: GitHub Sunsetting Subversion Support

#201
post #12

As one of the GitHub cofounders and the brainchild of this particular feature, I want to let everyone know that this is maybe the funniest thing I've ever done. We released this feature and published the announcing blog post, on April Fool's Day, 2010. I remember demoing it to the other GitHub guys and saying how funny it would be if we made this an April Fool's day post as though it was a big stupid joke but then it…

I've always been really curious how this works - from what I remember back in my subversion days, both sides have things which are very hard to represent in one another.

I imagine some of those are overcome by enforcing heuristics (e.g. the branches/tags/trunk hierarchy is mandatory and has business logic run based on it), but I'm really curious if there was ever a more detailed writeup on how it works?

Re: GitHub Sunsetting Subversion Support

#202
post #143

Earlier quoted context omitted.

It fails if someone merges main into their feature branch, and then performs a fast-forward merge of their feature branch to main. Now the two parents are in the opposite of the expected order, and --first-parent will follow along the feature branch. This can cause the new state of main to have a lower number of first-parent-commits than prior to the merge! However, if you have infrastructure that prevents fast-forwa…

> However, if you have infrastructure that prevents fast-forward merges to main I did say merge, did I not? Yes. > > If you have a main branch which is always merged into then If fast-forward is a “merge” too then fuck it, I can’t be bothered to use Git lingo since every idiotic little thing needs to be qualified (see also: Git tag, which is sometimes only an annotated tag but also sometimes also its cousin “lightwei…

> I did say merge, did I not? Yes.

You said "git merge feature", which _does_ perform a fast-forward when possible. In my experience, developers on a large enough project will inevitably break Git in a creative way, and this is one of them.

This is the default because "git pull" performs a merge by default. You _want_ that to fast-forward when possible or everyone will create a merge commit every time they pull updates.

Re: GitHub Sunsetting Subversion Support

#203

Earlier quoted context omitted.

Instead add FTP version control support with the ability to create backup files.

i'm still angry at mozilla and google for deprecating that, being able to set up a simple anonymous FTP server and send normies a link to it that they can open in their browsers was really convenient. Now if I want to use FTP i have to explain to them that they have to copy it into the windows file explorer or download filezilla.

Not just FTP is being deprecated, but WebDAV (DeltaV) is deeply based on Apache's mod_dav_svn subversion integration as well. WebDAV maps over regular HTTP GET/POST routes to provide quite sophisticated versioning of web resources at the same endpoint using just additional HTTP verbs (though also is/was often routed at URLs with a special prefix).

Re: GitHub Sunsetting Subversion Support

#204
post #37

This reminds me of the time on Something Awful that radium banned the one user that was using WebTV. > About 91% of visitors are on Windows. Mac users make up 5% and Linux is 2%. The other 2% are permabanned IRC trolls browsing the forums with a text-based browser written in Ruby on OpenBSD. Oh yeah, we have one guy using WebTV but I banned him because WTF.

He may very well have just made that up.

Re: GitHub Sunsetting Subversion Support

#205
post #37

This reminds me of the time on Something Awful that radium banned the one user that was using WebTV. > About 91% of visitors are on Windows. Mac users make up 5% and Linux is 2%. The other 2% are permabanned IRC trolls browsing the forums with a text-based browser written in Ruby on OpenBSD. Oh yeah, we have one guy using WebTV but I banned him because WTF.

Lowtax banned Phoenix/Firebird at one point, early on. He didn’t like people complaining that stuff didn’t render correctly. He only allowed Internet Explorer for some time. It wasn’t funny.

Re: GitHub Sunsetting Subversion Support

#206
post #12

As one of the GitHub cofounders and the brainchild of this particular feature, I want to let everyone know that this is maybe the funniest thing I've ever done. We released this feature and published the announcing blog post, on April Fool's Day, 2010. I remember demoing it to the other GitHub guys and saying how funny it would be if we made this an April Fool's day post as though it was a big stupid joke but then it…

> brainchild I have to point out that you've reversed the meaning of this word...

Oops, so I have. Or perhaps GitHub’s svn invented me…

Re: GitHub Sunsetting Subversion Support

#207
post #173
post #12

As one of the GitHub cofounders and the brainchild of this particular feature, I want to let everyone know that this is maybe the funniest thing I've ever done. We released this feature and published the announcing blog post, on April Fool's Day, 2010. I remember demoing it to the other GitHub guys and saying how funny it would be if we made this an April Fool's day post as though it was a big stupid joke but then it…

> As one of the GitHub cofounders and the brainchild of this particular feature, I want to let everyone know that this is maybe the funniest thing I've ever done. Obviously it's unimportant compared to the rest of the post, but, in case you like to know, the feature is your brainchild. You would be its brainparent, I guess.

It sounded right in my brainpan.

Re: GitHub Sunsetting Subversion Support

#208

Earlier quoted context omitted.

> However, if you have infrastructure that prevents fast-forward merges to main I did say merge, did I not? Yes. > > If you have a main branch which is always merged into then If fast-forward is a “merge” too then fuck it, I can’t be bothered to use Git lingo since every idiotic little thing needs to be qualified (see also: Git tag, which is sometimes only an annotated tag but also sometimes also its cousin “lightwei…

> I did say merge, did I not? Yes. You said "git merge feature", which _does_ perform a fast-forward when possible. In my experience, developers on a large enough project will inevitably break Git in a creative way, and this is one of them. This is the default because "git pull" performs a merge by default. You _want_ that to fast-forward when possible or everyone will create a merge commit every time they pull updat…

All these technicalities.

For someone to break the mainline parentage they would have to:

1. Do that ugly merge of mainline into their feature branch[1]

2. When they are ready to “incorporate” their commits into mainline: do a fast-forward since that’s apparently possible

But the proposed setup contradicts this chain of events: if their Git config was set up to do a fast-forward when possible, then a proper merge (a merge commit) wouldn’t have happened in stage 1 if mainline and `feature` had not diverged. And since that means that the two have diverged (evidenced by the merge commit), you cannot do a fast-forward in step 2.

And even if the above somehow is not true: step 2 is impossible because now `feature` contains a merge commit from mainline into `feature`, which mainline does not have. So a fast-forward is impossible.

What am I missing here?

[1] Oh right, I have to be specify now: a proper merge, a merge commit. The one with two parents, not an octopus one. Explicit enough already?

> You _want_ that to fast-forward when possible or everyone will create a merge commit every time they pull updates.

Surely this makes only a tiny difference in practice. We’re just a handful of developers and people usually diverge from mainline before they get their PR merged. So there are merge commits going from mainline into feature branches absolutely everywhere, because only two or three of us use rebase.

But I do in fact seem to recall talking to one of the other developers about him breaking the conventional commit parentage at some point in the history. So there is some bump there, a few years back.

But the usual story is that the people on our project do all those nasty merges on their own branches and then use the “merge” button in the Web UI when they get their PR approved. And there is in fact a fast-forward option there, but it’s not like we ever get to use it (unless we rebase) since mainline has diverged already. (I wouldn’t personally use it for “merging” (incorporating my changes) into mainline.)

Re: GitHub Sunsetting Subversion Support

#209

Earlier quoted context omitted.

Why not an HTTP server with a directory index? FTP is a pretty clunky protocol: it's round-trip heavy, not friendly to NAT on the client-side when you don't use PASV, not friendly to firewalls on the server-side when you do. I'm not sure what benefits there are to it these days.

Yeah a simple `python3 -m http.server` works pretty well.

Python http.server doesn't handle concurrent requests, so it works pretty well until it doesn't. Example don't use it to serve an ISO to iLO/iDRAC, boot will fail.

Re: GitHub Sunsetting Subversion Support

#210
post #73

Earlier quoted context omitted.

What's better about git? I haven't used svn, but have used perforce/mercurial professionally/git professionally, and use git personally, but I find all of them to provide the same "feature set" when doing basic development: have your own branch, and merge it in to the main branch when done/reviewed. Merging seems the same on all 3 version control systems I've used... I've heard that git branching is better(?), but ha…

> I've heard that git branching is better(?), but haven't seen that being used anywhere really. How are you merging without branches? Git is mostly faster and more flexible than svn, and the merging works far better. Unless svn's merging has improved in the past decade or so, which is entirely possible. When I switched to git from svn, the main differences were: merging was usable, making new branches and switching b…

I meant, using branches in a way that's "better" - whatever people who use git mean when they say that.

As I said, I haven't used SVN. It just seems like perforce and mercurial are basically "identical" for the ways I use them at least.

Post reply on HN