[{"data":1,"prerenderedAt":375},["ShallowReactive",2],{"project-36924267":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":29,"sentiment":30,"stance_mix":31,"scored_comments":36,"aspects":37,"strip":40,"post_text":42,"what":43,"said":76,"maker_in_thread":146,"shape":157,"grid":161,"attempts":337,"same_week":338,"maker_shows":307,"maker_hidden":367,"reader_version":368,"card":369},"36924267","Gogit","Just enough Git (in Go) to push itself to GitHub","title","Show HN: Gogit – Just enough Git (in Go) to push itself to GitHub","https:\u002F\u002Fbenhoyt.com\u002Fwritings\u002Fgogit\u002F","benhoyt.com","benhoyt",1690662866,2023,176,73,335,3109,11,"notable","dev_tools","git client","cli",[24,25,26,27,28],"git","go","github push","git implementation","golang","curious",0.111,{"positive":32,"neutral":33,"mixed":34,"critical":35},2,5,0,1,8,{"idea":38,"execution":39},{"positive":34,"critical":35},{"positive":34,"critical":34},[34,34,34,34,34,34,34,41,34,34,34,34,34,34,34,34,41,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,33,41,33,35,34,34,41],3,null,{"problem":44,"audience":42,"pricing":42,"motivation":42,"time_to_build":42,"stack":60,"openness":75,"stage":75,"team_size":75},{"value":45,"source":46,"evidence":47},"Git implementations in Go are heavy or incomplete; a minimal one can do basic push","inferred",[48,52,56],{"id":49,"by":50,"text":51},"36924751","diarrhea","The other day I was trying to work with git LFS. I was very surprised to find out git-lfs, as in the binary, CLI application is the only (open) implementation in existence. There…",{"id":53,"by":54,"text":55},"36924638","38","I have been wanting something like this, but with a few more features such as \"git diff\". I took a crack at it, but the popular (and maybe only) Go Git implementation has some…",{"id":57,"by":58,"text":59},"36924878","lopkeny12ko","Why would someone use this instead of git? The value add is not clear to me. > This is going to be a short section, because I don’t care about speed in this program, and the Go…",[61,67],{"value":62,"source":63,"evidence":64},"Go","maker",[65],{"id":66},"post",{"value":68,"source":69,"evidence":70},"Python","commenter",[71],{"id":72,"by":73,"text":74},"36929624","JaDogg","Nice, I'm liking the python version too. Good stuff","unknown",{"praise":77,"objections":86,"requests":99,"questions":107,"alternatives":112},[78],{"value":79,"source":69,"evidence":80},"Nice work and a fun project",[81,85],{"id":82,"by":83,"text":84},"36924569","zdgeier","Nice work!",{"id":72,"by":73,"text":74},[87,95],{"value":88,"source":69,"evidence":89},"Unclear why to use this instead of git; missing most features",[90,91],{"id":57,"by":58,"text":59},{"id":92,"by":93,"text":94},"36924970","tedunangst","I don't think you're expected to use a git client that's missing just about every wanted feature.",{"value":96,"source":69,"evidence":97},"Performance comparison is against the author's Python version, not git",[98],{"id":57,"by":58,"text":59},[100],{"value":101,"source":69,"evidence":102},"Add git pull support",[103],{"id":104,"by":105,"text":106},"36929222","amedvednikov","Looks really cool! Any chance you could add `git pull` support as well?",[108],{"value":109,"source":69,"evidence":110},"Why use this over git itself",[111],{"id":57,"by":58,"text":59},[113,124,131,135,139],{"value":114,"source":69,"evidence":115},"go-git",[116,117,121],{"id":53,"by":54,"text":55},{"id":118,"by":119,"text":120},"36925813","evanelias","In my opinion github.com\u002Fgo-git\u002Fgo-git is a very high-quality project. Just because it doesn't solve some super-specific use-case that you have, doesn't mean the project isn't…",{"id":122,"by":119,"text":123},"36927165","Sorry to hear that, but go-git is good enough to be useful to Vault, Pulumi, kubernetes\u002Ftest-infra, and many other projects which directly import it. Some folks seem to expect it…",{"value":125,"source":69,"evidence":126},"libgit2 \u002F git2go",[127],{"id":128,"by":129,"text":130},"36926109","TkTech","> It seems a similar story with the rest of git. Dulwich[1] is a pure-python Git implementation that's been around for many years, meant to be used as a library. I used it a long…",{"value":132,"source":69,"evidence":133},"gitoxide",[134],{"id":49,"by":50,"text":51},{"value":136,"source":69,"evidence":137},"Dulwich",[138],{"id":128,"by":129,"text":130},{"value":140,"source":69,"evidence":141},"Isomorphic Git",[142],{"id":143,"by":144,"text":145},"36928871","strogonoff","Isomorphic Git is a Git implementation purely in JS (no WASM). I wrote a minimal library to handle LFS with it, it’s not that hard, the spec is pretty small.",{"comments":41,"answered":34,"key":147},[148,151,154],{"id":149,"text":150},"36926904","I'm guessing you're being sarcastic. If so, it's not really a fair criticism. Go has properly-typed return values (not just parsing text from stdout) and any type can implement…",{"id":152,"text":153},"36927346","I think that's a fair critique. You have to really put thought into good error messages and error handling. When you do, they're nicer and more informative than an ugly stack…",{"id":155,"text":156},"36926964","> Putting error nil checks into a function is an anti-pattern in Go. I assume you mean into a helper function like I've done with check()? If so, I agree with you for normal…",{"commenters":158,"max_depth":36,"maker_replies":41,"first_comment_mins":159,"lifespan_hours":160},44,30,50,[162,164,167,169,171,174,176,178,181,184,188,191,194,196,199,200,202,203,206,209,212,214,217,220,223,224,227,230,233,237,238,241,243,246,247,250,251,253,255,257,259,261,263,265,267,270,272,275,278,281,283,286,288,291,294,297,298,300,302,304,306,309,310,312,314,317,319,321,324,328,331,334],[49,34,34,163,50,34],"other\u002Fneutral\u002Fidea",[165,34,34,166,54,34],"36924788","commenter\u002Fneutral\u002Fnone",[168,34,34,166,50,34],"36924899",[170,34,34,166,54,34],"36925108",[172,34,34,166,173,34],"36925352","IggleSniggle",[175,34,34,166,54,34],"36925410",[177,34,34,166,173,34],"36925459",[179,34,34,166,180,34],"36925687","Brian_K_White",[182,34,34,166,183,34],"36925404","yjftsjthsd-h",[185,34,34,186,187,34],"36925980","other\u002Fneutral\u002Fnone","dang",[189,34,34,186,190,34],"36926912","dmoy",[192,34,34,186,193,34],"36928116","jrockway",[128,34,41,195,129,34],"project\u002Fneutral\u002Fidea",[197,34,34,166,198,34],"36926516","coryrc",[149,34,34,166,11,35],[201,34,34,186,198,34],"36927273",[152,34,34,186,11,35],[204,34,34,186,205,34],"36927432","stouset",[207,34,34,186,208,34],"36927741","ttymck",[210,34,34,166,211,34],"36927813","zaphirplane",[213,34,34,166,180,34],"36944130",[215,34,34,186,216,34],"36929213","maccard",[218,34,34,163,219,34],"36929300","_ph_",[221,34,34,163,222,34],"36928114","jacoblambda",[143,34,34,186,144,34],[225,34,34,163,226,34],"36928939","adrianmsmith",[228,34,34,186,229,34],"36930093","diamondo25",[231,34,34,186,232,34],"36929416","alexhornby",[234,35,41,235,236,34],"36924713","project\u002Fneutral\u002Fexecution","Smaug123",[53,32,34,186,54,34],[239,32,34,186,240,34],"36925363","anacrolix",[242,32,34,186,54,34],"36926548",[244,32,34,186,245,34],"36929889","pravus",[118,32,34,186,119,34],[248,32,34,186,249,34],"36926834","xyzzy_plugh",[122,32,34,186,119,34],[252,32,34,186,249,34],"36930211",[254,32,34,186,119,34],"36931043",[256,32,34,186,249,34],"36933462",[258,32,34,186,54,34],"36927262",[260,32,34,166,119,34],"36927392",[262,32,34,166,54,34],"36927485",[264,32,34,166,119,34],"36927704",[266,32,34,166,54,34],"36927750",[268,41,34,186,269,34],"36925109","c7DJTLrn",[271,41,34,186,54,34],"36925152",[273,41,34,186,274,34],"36925597","pmarreck",[276,41,34,186,277,34],"36928677","Kwpolska",[279,41,34,186,280,34],"36928698","dgb23",[282,41,34,186,245,34],"36929848",[284,41,34,186,285,34],"36935124","tester457",[287,41,34,186,274,34],"36949611",[289,41,34,186,290,34],"36927315","alex_lav",[292,41,34,186,293,34],"36928905","lawn",[295,41,34,186,296,34],"36929043","jstanley",[155,41,34,186,11,35],[299,41,34,186,280,34],"36928634",[301,41,34,186,226,34],"36928965",[303,41,34,166,236,34],"36928978",[305,41,34,166,226,34],"36929319",[72,307,33,308,73,34],4,"project\u002Fpositive\u002Fnone",[104,33,41,195,105,34],[311,33,41,235,236,34],"36929574",[82,313,33,308,83,34],6,[57,315,35,316,58,34],7,"project\u002Fcritical\u002Fidea",[92,315,34,318,93,34],"commenter\u002Fcritical\u002Fidea",[320,315,34,318,58,34],"36925048",[322,315,34,166,323,34],"36925145","Matl",[325,315,34,326,327,34],"36925001","commenter\u002Fneutral\u002Fidea","zeroxfe",[329,315,34,326,330,34],"36925030","Chico75",[332,315,41,195,333,34],"36925097","egypturnash",[335,315,34,186,336,34],"36925193","patmorgan23",[],[339,344,349,354,359,363],{"id":340,"name":341,"points":342,"category":343},"36933603","San Francisco Compute",727,"infrastructure",{"id":345,"name":346,"points":347,"category":348},"36933452","Khoj",565,"ai",{"id":350,"name":351,"points":352,"category":353},"36944152","Markwhen",327,"productivity",{"id":355,"name":356,"points":357,"category":358},"36973400","Pretty Polly",325,"learning_science",{"id":360,"name":361,"points":362,"category":353},"36942308","Linkwarden",280,{"id":364,"name":365,"points":366,"category":20},"36958731","Magic Loops",248,false,"v2",{"id":370,"name":5,"line":6,"ai":367,"cat":20,"year":13,"points":14,"comments":15,"rec":29,"s":371,"top":18,"kw":372,"maker":11,"domain":10,"tier":19,"attempts":34,"strip":373,"url":9,"mix":374,"praise":79,"objection":88,"sub":21},36924267,0.11,[24,25,26,27,28],"0000000300000000300000000000000005351003",[32,33,34,35],1794036639127]