TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

The Biggest and Weirdest Commits in Linux Kernel Git History

394 pointsby gary_bernhardtover 8 years ago

14 comments

curuinorover 8 years ago
Clauset Shalizi Newman 2007 has not-nice things to say about the classic physicist&#x27;s idiot trick of fitting power law distributions by drawing a straight line on a log-log graph: it&#x27;s got huge bias. <a href="https:&#x2F;&#x2F;arxiv.org&#x2F;abs&#x2F;0706.1062" rel="nofollow">https:&#x2F;&#x2F;arxiv.org&#x2F;abs&#x2F;0706.1062</a><p>However, the other difficult thing about power law distributions is that the dataset size requirements for proper determination of the fact that it&#x27;s a power law distribution are occasionally incredibly difficult. So their critique is very strong, given the comparative lack of data. It is often the case that computer systems, with the overflowing reams of data, are still not enough. Note that the paper I cited up there suggests MLE and then a Kolmogorov-Smirnoff test, so it&#x27;ll say a lot of things aren&#x27;t power laws that could well be.<p>Another way to look at it is from a more geometric point of view. The metric entropy of any generic system of variables is defined as the sum of the positive Lyapunov exponents: and as an &quot;entropy&quot; that quantity does have a lot of commonalities with the other entropies. But to have positive Lyapunov exponents is often to have a chaotic dynamics, so it could just be conjectured that the time series of commits and merge octopus sizes in kernel git history is chaotic, so the evolution of the time series will be fractal in nature.<p>But it&#x27;s also really fucking hard to confirm or deny that one, because there are varied and strange definitions of chaos itself and the methods that have been suggested to measure Lyapunov exponent in real systems are arcane and difficult. You could try some synchronization methods, but they remain arcane and crap. Fractal measurement methods are also shitty and full of dark magic.<p>One neat little trick might be to discretize the series, symbolic dynamics-style (it&#x27;s already discretized but discretize further, into like percentiles or something) and run it through one of the dynamical machine learning dealies to see if there&#x27;s patterns. Not too much literature on that but it&#x27;s a thing that some randoes in like 2004 or something did
评论 #13649129 未加载
评论 #13648549 未加载
评论 #13648351 未加载
评论 #13649288 未加载
cpobrienover 8 years ago
There is a mention of the 66 parent merge from Linus himself:<p><a href="http:&#x2F;&#x2F;marc.info&#x2F;?l=linux-kernel&amp;m=139033182525831" rel="nofollow">http:&#x2F;&#x2F;marc.info&#x2F;?l=linux-kernel&amp;m=139033182525831</a>
评论 #13648187 未加载
评论 #13648196 未加载
评论 #13648269 未加载
geofftover 8 years ago
Another interesting piece of trivia: the very first more-than-two-parent merge in the kernel history is a mistake. The second and third parents are <i>the same commit</i>.<p><pre><code> commit 13e652800d1644dfedcd0d59ac95ef0beb7f3165 Merge: 4332bdd 88d7bd8 88d7bd8 Author: David Woodhouse &lt;dwmw2@shinybook.infradead.org&gt; Date: Sun May 8 13:23:54 2005 +0100 Merge with master.kernel.org:&#x2F;pub&#x2F;scm&#x2F;linux&#x2F;kernel&#x2F;git&#x2F;torvalds&#x2F;linux-2.6.git</code></pre>
SEJeffover 8 years ago
Some of my favorite commits come from Rusty Russel, who wrote the lguest toy hypervisor documentation as a story:<p><a href="https:&#x2F;&#x2F;github.com&#x2F;torvalds&#x2F;linux&#x2F;commit&#x2F;f938d2c892db0d80d144253d4a7b7083efdbedeb#diff-847230dec604827964905e0dfec81e42R1" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;torvalds&#x2F;linux&#x2F;commit&#x2F;f938d2c892db0d80d14...</a>
gsylvieover 8 years ago
I don&#x27;t like OP&#x27;s definition of divergence. I prefer to take the size of the diff along first-parent instead.<p>Here&#x27;s how I would do it:<p><pre><code> time git log -m --first-parent --shortstat --pretty=&quot;%H&quot; --min-parents=2 | grep -v &#x27;^$\|3e1dd193edefd2a806a0ba6cf0879cf1a95217da&#x27; | sed &#x27;s&#x2F;.* file.* changed,&#x2F;&#x2F;&#x27; | sed &#x27;s&#x2F;insertion.*,&#x2F;+&#x2F;&#x27; | sed &#x27;s&#x2F;deletion.*&#x2F;&#x2F;&#x27; | sed &#x27;s&#x2F;insertion.*&#x2F;&#x2F;&#x27; | sed &#x27;s&#x2F;^\ \(.*\)\ $&#x2F;\$\(\(\1\)\)&#x2F;&#x27; | xargs -d &#x27;\n&#x27; -L 2 echo echo | bash | sort -k 2,2 -g </code></pre> Note: I skip 3e1dd193edefd2a806a0ba6cf0879cf1a95217da because that commit has no diff along first-parent, and thus screws up my xargs result (which depends on every 2nd line having the --shortstat output).<p>Of course &quot;--first-parent&quot; doesn&#x27;t guarantee that we&#x27;re walking the mainline (see: <a href="https:&#x2F;&#x2F;developer.atlassian.com&#x2F;blog&#x2F;2016&#x2F;04&#x2F;stop-foxtrots-now&#x2F;" rel="nofollow">https:&#x2F;&#x2F;developer.atlassian.com&#x2F;blog&#x2F;2016&#x2F;04&#x2F;stop-foxtrots-n...</a> ), but it <i>usually</i> is.<p>On my laptop it takes 3 mins 30 seconds. Here are the 5 biggest merges by this definition:<p><pre><code> 099bfbfc7fbbe22356c02f0caf709ac32e1126ea 463702 3f17ea6dea8ba5668873afa54628a91aaa3fb1c0 466320 ce519e2327bff01d0eb54071e7044e6291a52aa6 500074 7ea61767e41e2baedd6a968d13f56026522e1207 504965 f063a0c0c995d010960efcc1b2ed14b99674f25c 569691 </code></pre> And here&#x27;s &quot;git show&quot; for those 5:<p><pre><code> 099bfbfc7fbb 2015-06-26T13:18:51-07:00 Merge branch &#x27;drm-next&#x27; of git:&#x2F;&#x2F;people.freedesktop.org&#x2F;~airlied&#x2F;linux 3f17ea6dea8b 2014-06-08T11:31:16-07:00 Merge branch &#x27;next&#x27; (accumulated 3.16 merge window patches) into master ce519e2327bf 2009-01-06T17:04:29-08:00 Merge git:&#x2F;&#x2F;git.kernel.org&#x2F;pub&#x2F;scm&#x2F;linux&#x2F;kernel&#x2F;git&#x2F;gregkh&#x2F;staging-2.6 7ea61767e41e 2009-09-16T08:11:54-07:00 Merge git:&#x2F;&#x2F;git.kernel.org&#x2F;pub&#x2F;scm&#x2F;linux&#x2F;kernel&#x2F;git&#x2F;gregkh&#x2F;staging-2.6 f063a0c0c995 2010-10-28T12:13:00-07:00 Merge git:&#x2F;&#x2F;git.kernel.org&#x2F;pub&#x2F;scm&#x2F;linux&#x2F;kernel&#x2F;git&#x2F;gregkh&#x2F;staging-2.6</code></pre>
评论 #13649116 未加载
kijinover 8 years ago
&gt; <i>&quot;Christ, that&#x27;s not an octopus, that&#x27;s a Cthulhu merge&quot;</i><p>Perhaps git should throw a warning when you try to do an octopus merge with more parents than an octopus has legs. If you really want to proceed, add the --cthulhu option. The default behavior would be --no-cthulhu.
评论 #13651084 未加载
评论 #13656646 未加载
brongondwanaover 8 years ago
It only has one parent, but this would be the commit that I&#x27;m least proud of (not in Linux, obviously):<p><a href="https:&#x2F;&#x2F;github.com&#x2F;cyrusimap&#x2F;cyrus-imapd&#x2F;commit&#x2F;fdc0eb3d09bcc2ce916d2790c98839a61d403937" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;cyrusimap&#x2F;cyrus-imapd&#x2F;commit&#x2F;fdc0eb3d09bc...</a><p>Showing 126 changed files with 14,128 additions and 20,617 deletions.<p>(ok, I&#x27;m pretty proud of reducing code size by 6k+ lines while improving lots of stuff, but the commit is a shitshow)
userbinatorover 8 years ago
GitHub&#x27;s logo always reminds me of the octopus merge; not sure if it was chosen for this reason, but I think it&#x27;s quite suitable.
评论 #13649675 未加载
metrognomeover 8 years ago
I think Gary&#x27;s commit counts are off:<p><pre><code> $ git log | wc -l </code></pre> This should count the number of lines in the entire git log, including metadata (not just commits). I think he means this:<p><pre><code> $ git log --oneline | wc -l </code></pre> The number of commits for Rails should be closer to 61,000.
评论 #13648496 未加载
评论 #13648733 未加载
评论 #13648468 未加载
cpercivaover 8 years ago
<i>Octopuses are more common than you might expect</i><p>The etymologically correct plural is <i>octopodes</i>. (Some people accuse &quot;octopodes* of being pedantic, but as I see it &quot;pedantic&quot; is just a euphemism for &quot;correct in a way I don&#x27;t like&quot;.)
评论 #13650688 未加载
smallnamespaceover 8 years ago
Slight article nitpick: a distribution that &#x27;looks like a straight line&#x27; in a log-log plot is often <i>not</i> power-law distributed.<p>One could say that the distribution has a fat one-sided tail though.
评论 #13648255 未加载
majewskyover 8 years ago
I used octopus merges once for a deployment system that I built when my team switched from SVN to Git. Since there were a lot of developers working on different parts, it was many times required to test multiple different changes in parallel in the QA system.<p>I built a small web UI where developers could select and unselect development branches, and it would octopus-merge all selected branches into the master branch, and force-push that state onto the QA branch (and deploy it to QA, of course). So QA would always be master + all development branches that were currently being verified. By using a Github webhook, it would update the QA system whenever master or one of the branches being verified was pushed to. I&#x27;m not in that team anymore, but I think that deployment tool is still humming along nicely.
评论 #13651056 未加载
tomatokillerover 8 years ago
Has anyone asked Laxman Dewangan what he was up to with that initial commit and merge thing?
评论 #13648492 未加载
评论 #13648686 未加载
behmover 8 years ago
That was the worst diagram today. &lt;1 Commits on the y-axis? Where would be 30 on the x-axis? Can&#x27;t tell if you only have 3 markers on a log axis.
评论 #13648745 未加载