[{"data":1,"prerenderedAt":376},["ShallowReactive",2],{"project-34563851":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":10,"maker":11,"posted_at":12,"year":13,"points":14,"comments":15,"rank_in_year":16,"shown_in_year":17,"top":18,"tier":19,"category":20,"subcategory":21,"format":22,"keywords":23,"reception":28,"sentiment":29,"stance_mix":30,"scored_comments":35,"aspects":36,"strip":43,"post_text":46,"what":47,"said":98,"maker_in_thread":232,"shape":243,"grid":248,"attempts":339,"same_week":340,"maker_shows":45,"maker_hidden":368,"reader_version":369,"card":370},"34563851","Git Heat Map","a tool for visualising git repo activity for each file","title","Show HN: Git Heat Map – a tool for visualising git repo activity for each file","https:\u002F\u002Fgithub.com\u002Fjmforsythe\u002FGit-Heat-Map","github.com","jmforsythe",1674954575,2023,173,39,345,3109,12,"notable","dev_tools","git visualisation","web_app",[24,25,26,27],"git heat map","git activity visualization","file churn","git log visualizer","mixed",0.171,{"positive":31,"neutral":32,"mixed":33,"critical":34},7,8,2,4,21,{"idea":37,"performance":40,"execution":41,"docs":42},{"positive":38,"critical":39},5,0,{"positive":33,"critical":39},{"positive":39,"critical":33},{"positive":39,"critical":33},[39,39,39,39,39,39,44,38,39,44,44,38,44,45,44,44,39,39,39,38,39,39,38,38,38,38,44,44,44,39,39,45,39,45,39,44,39,45,39,39],3,1,null,{"problem":48,"audience":46,"pricing":46,"motivation":46,"time_to_build":46,"stack":60,"openness":95,"stage":96,"team_size":97},{"value":49,"source":50,"evidence":51},"Shows which files in a git repo change most often","inferred",[52,56],{"id":53,"by":54,"text":55},"34569395","pushedx","This will show the 30 \"hottest\" files in a repo. ``` git log --pretty=format: --name-only | sort | uniq -c | sort -rg | head -n 30 ```",{"id":57,"by":58,"text":59},"34566291","ozim","Great that is one of the tools I had somewhere on the back of my head. Nice to see which parts are changing the most in a project to maybe see if it should be improved or at…",[61,72,77,88],{"value":62,"source":50,"evidence":63},"Python",[64,68],{"id":65,"by":66,"text":67},"34566387","jemmyw","It didn't work for me: ``` File \"git-database.py\", line 263, in \u003Cmodule> main() File \"git-database.py\", line 247, in main last_commit = handle_commit(cur, lines) File…",{"id":69,"by":70,"text":71},"34564329","aren55555","After cloning, I had to change the perms of the .sh files, install flask via pip and hope for the best. I wasn't sure what Python version to use, I used some 3.x. It would be…",{"value":73,"source":74,"evidence":75},"Flask","commenter",[76],{"id":69,"by":70,"text":71},{"value":78,"source":50,"evidence":79},"SQLite",[80,84],{"id":81,"by":82,"text":83},"34565054","nonethewiser","How much faster are your benchmarks using WAL mode? https:\u002F\u002Fwww.sqlite.org\u002Fwal.html",{"id":85,"by":86,"text":87},"34565796","avinassh","I experimented earlier to push the limits of SQLite inserts and wrote a blog post[0] about it. We can apply some of the learnings here. I reviewed the OP's code and did some…",{"value":89,"source":50,"evidence":90},"Shell scripts",[91],{"id":92,"by":93,"text":94},"34566520","thrdbndndn","i'm not sure why it needs sh to begin with. At a glance the sh script can be trivially replaced by native python. And it would make it work cross-platform (i.e. on Windows).","open_source","prototype","unknown",{"praise":99,"objections":123,"requests":145,"questions":178,"alternatives":188},[100,115],{"value":101,"source":74,"evidence":102},"Looks useful and cool, treemap visualisation appreciated",[103,107,111],{"id":104,"by":105,"text":106},"34567753","thecodrr","I wonder if this can be done faster using the same approach as git-filter-repo or bfg. 68 minutes for something like this is a long time. Otherwise looks really cool.",{"id":108,"by":109,"text":110},"34568079","phaer","Looks useful on big repositories! https:\u002F\u002Fgithub.com\u002Fnixos\u002Fnixpkgs\u002F would be a great benchmark for a tool like this :) One of the larger repos on github, close to half a million…",{"id":112,"by":113,"text":114},"34564626","darknavi","This is cool. The visualization reminds me of the visualization of QDirStat\u002FWinDirStat. Also shout out to the (mostly useless but cool looking) git history visualizer, Gource[0].…",{"value":116,"source":74,"evidence":117},"Useful for finding hot spots and refactoring targets",[118,119],{"id":57,"by":58,"text":59},{"id":120,"by":121,"text":122},"34570073","nativecoinc","I want to do some whitespace refactoring on the files in our project. File activity is useful for that since then I can change files that no one is likely to be touching.",[124,132,136,141],{"value":125,"source":74,"evidence":126},"Install process is unclear and needs manual steps",[127,128],{"id":69,"by":70,"text":71},{"id":129,"by":130,"text":131},"34564603","matt_trentini","Looks great! Thanks for your work on this. I had the same minor install issue, specifically needed to do the following: ``` >chmod +x git-log-format.sh generate-db.sh >python -m…",{"value":133,"source":74,"evidence":134},"Crashes on some input",[135],{"id":65,"by":66,"text":67},{"value":137,"source":74,"evidence":138},"Slow on large repos",[139,140],{"id":104,"by":105,"text":106},{"id":85,"by":86,"text":87},{"value":142,"source":74,"evidence":143},"Depends on shell scripts and is not cross-platform",[144],{"id":92,"by":93,"text":94},[146,153,164,168],{"value":147,"source":74,"evidence":148},"Show additions, deletions and modifications separately",[149],{"id":150,"by":151,"text":152},"34566532","hamasho","I love this, thanks! It would be nice if the heatmap showed addition, deletion, and possibly modification separately. I can't think of suitable visualization methods, but if I…",{"value":154,"source":74,"evidence":155},"Add function or line level granularity",[156,160],{"id":157,"by":158,"text":159},"34565537","herrvogel-","I sometimes think of similar tool that would give you this information on a more fine grained level. Like functions, scopes or lines.",{"id":161,"by":162,"text":163},"34566424","pizza","This is really cool. Some other things might want to be able to visualize are this + a recency filter, or this + treesitter support, in order to be able to query eg which classes…",{"value":165,"source":74,"evidence":166},"Provide Docker setup",[167],{"id":69,"by":70,"text":71},{"value":169,"source":74,"evidence":170},"Support non-GitHub hosts",[171,175],{"id":172,"by":173,"text":174},"34567313","toastal","The OP works on Git. This project only works on Microsoft GitHub.",{"id":176,"by":173,"text":177},"34570299","The GitHub Actions on only references `\u002Fgithub\u002F` and is only available through the proprietary forge. The gallery only shows `$USER_ORG\u002F$REPO_NAME`. While seemingly subtle, it's…",[179,184],{"value":180,"source":74,"evidence":181},"Can it be made faster using batch inserts or parallelism",[182,183],{"id":104,"by":105,"text":106},{"id":85,"by":86,"text":87},{"value":185,"source":74,"evidence":186},"How does the email highlighting work",[187],{"id":129,"by":130,"text":131},[189,193,197,204,211,218,225],{"value":190,"source":74,"evidence":191},"Gource",[192],{"id":112,"by":113,"text":114},{"value":194,"source":74,"evidence":195},"WinDirStat \u002F QDirStat",[196],{"id":112,"by":113,"text":114},{"value":198,"source":74,"evidence":199},"Repography",[200],{"id":201,"by":202,"text":203},"34565348","arraypad","This is similar to the Structure dashboard in Repography [1] which is a web app I built, with the added advantage that it's kept up to date automatically so you can embed it in…",{"value":205,"source":74,"evidence":206},"CodeScene",[207],{"id":208,"by":209,"text":210},"34565890","nickcox","There's also Adam Tornhill's [0] Codescene. [1] [0] https:\u002F\u002Fwww.amazon.com\u002FBooks-Adam-Tornhill\u002Fs?rh=n%3A283155%2Cp_27%3AAdam+Tornhill [1] https:\u002F\u002Fcodescene.com\u002F",{"value":212,"source":74,"evidence":213},"Seerene",[214],{"id":215,"by":216,"text":217},"34565700","jeffreygoesto","If you are an org with a large codebase and want to get many more insights, there is Seerene, it's commercial but takes the idea of repo analysis to the extremes (not affiliated,…",{"value":219,"source":74,"evidence":220},"WakaTime",[221],{"id":222,"by":223,"text":224},"34566159","welder","WakaTime just released the same feature 4 days ago using IDE activity instead of commits. [0] Scroll to the bottom to see the bubble chart screenshot. [0]…",{"value":226,"source":74,"evidence":227},"codeatlas.dev",[228],{"id":229,"by":230,"text":231},"34566247","Weidenwalker","If you think this is useful, you might also like codeatlas.dev and its Github Action (https:\u002F\u002Fgithub.com\u002FcodeatlasHQ\u002Fcodebase-visualizer-action). It currently does not support…",{"comments":38,"answered":39,"key":233},[234,237,240],{"id":235,"text":236},"34564922","The size of the boxes is fairly customisable on the back end, the webpage just needs to be sent the right JSON data, and the only real criteria is that the size of each directory…",{"id":238,"text":239},"34566963","Unfortunately the commit info is not independent at the moment, and that is mostly due to wanting to track renaming\u002Fdeletion of files.",{"id":241,"text":242},"34564115","What exactly do you mean? The README describes how to run the website, and how to mentions the only dependency.",{"commenters":244,"max_depth":245,"maker_replies":38,"first_comment_mins":246,"lifespan_hours":247},32,6,48,63,[249,251,254,256,260,261,264,266,268,271,272,274,278,279,281,284,287,289,291,294,296,298,299,301,302,304,306,309,311,312,313,316,321,323,324,327,329,331,332,336],[229,39,39,250,230,39],"other\u002Fneutral\u002Fnone",[252,39,39,250,253,39],"34567005","ArchieMaclean",[172,39,39,255,173,39],"other\u002Fcritical\u002Fnone",[257,39,39,258,259,39],"34569324","commenter\u002Fneutral\u002Fnone","bilekas",[176,39,39,250,173,39],[262,39,39,258,263,39],"34597362","zulban",[201,45,44,265,202,39],"project\u002Fneutral\u002Fidea",[112,33,38,267,113,39],"project\u002Fpositive\u002Fidea",[269,33,39,250,270,39],"34566003","KronisLV",[53,44,44,265,54,39],[104,34,44,273,105,39],"project\u002Fmixed\u002Fperformance",[275,34,38,276,277,39],"34570844","project\u002Fpositive\u002Fperformance","ByronBates",[157,38,44,265,158,39],[65,245,45,280,66,39],"project\u002Fcritical\u002Fexecution",[282,245,44,283,277,39],"34571880","project\u002Fneutral\u002Fexecution",[285,31,44,265,286,39],"34564896","abhishekbasu",[235,31,39,288,11,45],"maker\u002Fneutral\u002Fnone",[222,32,39,290,223,39],"other\u002Fneutral\u002Fidea",[292,32,39,250,293,39],"34569154","minton",[108,295,38,276,109,39],9,[215,297,39,250,216,39],10,[208,297,39,250,209,39],[57,300,38,267,58,39],11,[150,18,38,267,151,39],[161,303,38,267,162,39],13,[120,305,38,267,121,39],14,[81,307,44,308,82,39],15,"project\u002Fneutral\u002Fperformance",[310,307,44,308,86,39],"34565484",[85,307,44,308,86,39],[238,307,39,283,11,45],[314,307,39,315,82,39],"34569434","commenter\u002Fneutral\u002Fperformance",[317,318,45,319,320,39],"34564090",16,"project\u002Fcritical\u002Fdocs","llagerlof",[241,318,39,322,11,45],"maker\u002Fneutral\u002Fdocs",[69,318,45,319,70,39],[325,318,39,326,11,45],"34564366","maker\u002Fneutral\u002Fdesign",[129,318,44,328,130,39],"project\u002Fmixed\u002Fdocs",[330,318,39,326,11,45],"34564640",[92,318,45,280,93,39],[333,334,39,250,335,39],"34564153",17,"breck",[337,334,39,250,338,39],"34564556","MrOwnPut",[],[341,345,350,355,359,364],{"id":342,"name":343,"points":344,"category":20},"34610686","Trigger.dev",745,{"id":346,"name":347,"points":348,"category":349},"34534615","Lungy",666,"consumer_social",{"id":351,"name":352,"points":353,"category":354},"34551000","SearchTheDeck",219,"productivity",{"id":356,"name":357,"points":358,"category":20},"34555283","CollabUML",185,{"id":360,"name":361,"points":362,"category":363},"34548154","Eightify",147,"ai",{"id":365,"name":366,"points":367,"category":349},"34604281","KnifeGeek",140,false,"v2",{"id":371,"name":5,"line":6,"ai":368,"cat":20,"year":13,"points":14,"comments":15,"rec":28,"s":372,"top":18,"kw":373,"maker":11,"domain":10,"tier":19,"attempts":39,"strip":374,"url":9,"mix":375,"praise":101,"objection":125,"sub":21},34563851,0.17,[24,25,26,27],"0000003503353133000500555533300101030100",[31,32,33,34],1794036630564]