[{"data":1,"prerenderedAt":199},["ShallowReactive",2],{"project-38641857":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":34,"aspects":35,"strip":39,"post_text":41,"what":42,"said":64,"maker_in_thread":123,"shape":129,"grid":133,"attempts":161,"same_week":162,"maker_shows":31,"maker_hidden":191,"reader_version":192,"card":193},"38641857","Klunok","Fully automatic Git alternative\u002Fcompanion","title","Show HN: Fully automatic Git alternative\u002Fcompanion","https:\u002F\u002Fklunok.org\u002F","klunok.org","Kharacternyk",1702565108,2023,23,13,1576,3109,51,"shown","dev_tools","version control","cli",[24,25,26,27],"git alternative","automatic backup","file versioning","fanotify","debated",0.044,{"positive":31,"neutral":32,"mixed":33,"critical":31},2,3,0,7,{"privacy":36,"idea":38},{"positive":33,"critical":37},1,{"positive":31,"critical":37},[32,33,32,33,37,33,37,32,33,33,40,33,40],5,null,{"problem":43,"audience":41,"pricing":41,"motivation":41,"time_to_build":41,"stack":53,"openness":62,"stage":63,"team_size":63},{"value":44,"source":45,"evidence":46},"Automatically saves versions of files as they are edited, without manual commits","inferred",[47,50],{"id":48,"by":11,"text":49},"38646551","inotify doesn't tell which process writes to a file, and Klunok is all about tracking only files edited by a human. Also, monitoring entire subtrees with inotify is painful and…",{"id":51,"by":11,"text":52},"38655237","That's all right if they are not integrated into an IDE. The typical scenario is: a file is edited by a human -> linter\u002Fformatters run -> 60 seconds delay -> the file is backed…",[54],{"value":55,"source":56,"evidence":57},"Linux fanotify API","commenter",[58],{"id":59,"by":60,"text":61},"38644912","mdaniel","AGPLv3 https:\u002F\u002Fgithub.com\u002FKharacternyk\u002Fklunok\u002Fblob\u002Fv1.0.2\u002FLICENSE but also > Klunok uses the Linux kernel fanotify API, which as of now requires root privileges. Therefore,…","open_source","unknown",{"praise":65,"objections":77,"requests":90,"questions":102,"alternatives":114},[66],{"value":67,"source":56,"evidence":68},"Useful idea that works alongside Git for backup commits",[69,73],{"id":70,"by":71,"text":72},"38668115","quickthrower2","Nice idea! You would need fewer “backup commits” then :-)",{"id":74,"by":75,"text":76},"38649328","pushfoo","tl;dr: Can this be used alongside a Git repo? I have an odd use case in mind: 1. Git handles intentional releases \u002F commits 2. Klunok handles \"timelapse\" recording of development…",[78,86],{"value":79,"source":56,"evidence":80},"Requires root privileges via sudo because of fanotify",[81,82],{"id":59,"by":60,"text":61},{"id":83,"by":84,"text":85},"38663719","az09mugen","Shouldn't it be simpler to just specify just a directory (of a project for example) in which klunok tracks and saves modifications of all the files inside that said directory ?…",{"value":87,"source":56,"evidence":88},"Could become messy with many or large files and frequent saves",[89],{"id":83,"by":84,"text":85},[91,95],{"value":92,"source":56,"evidence":93},"Support watching a whole directory without special handling",[94],{"id":83,"by":84,"text":85},{"value":96,"source":97,"evidence":98},"Rootless operation","maker",[99],{"id":100,"by":11,"text":101},"38645081","Yes, the sudo bit is a drawback. The daemon drops privileges early, though. There is some work in the kernel space for rootless fanotify, which I look forward to. There is…",[103,110],{"value":104,"source":56,"evidence":105},"Why fanotify instead of inotify",[106],{"id":107,"by":108,"text":109},"38645847","enasterosophes","What would be the reason they used fanotify instead of inotify? I used inotify before and didn't require special permissions. I want to suppose that inotify supports the klunok…",{"value":111,"source":56,"evidence":112},"Does it work alongside a Git repo",[113],{"id":74,"by":75,"text":76},[115,119],{"value":116,"source":56,"evidence":117},"Git",[118],{"id":74,"by":75,"text":76},{"value":120,"source":56,"evidence":121},"inotify",[122],{"id":107,"by":108,"text":109},{"comments":40,"answered":124,"key":125},4,[126,127,128],{"id":100,"text":101},{"id":48,"text":49},{"id":51,"text":52},{"commenters":130,"max_depth":40,"maker_replies":40,"first_comment_mins":131,"lifespan_hours":132},8,159,55,[134,136,137,138,140,143,144,146,150,152,156,158,160],[59,33,32,135,60,33],"project\u002Fneutral\u002Fprivacy",[100,33,33,135,11,37],[107,33,32,135,108,33],[48,33,33,139,11,37],"project\u002Fneutral\u002Fidea",[141,33,37,142,75,33],"38654845","project\u002Fcritical\u002Fidea",[51,33,33,139,11,37],[83,33,37,145,84,33],"project\u002Fcritical\u002Fprivacy",[147,37,32,148,149,33],"38644055","project\u002Fneutral\u002Fnone","niek_pas",[151,37,33,148,11,37],"38644149",[153,37,33,154,155,33],"38645372","other\u002Fneutral\u002Fnone","pimlottc",[74,31,40,157,75,33],"project\u002Fpositive\u002Fidea",[159,31,33,139,11,37],"38651678",[70,31,40,157,71,33],[],[163,168,173,178,183,187],{"id":164,"name":165,"points":166,"category":167},"38706299","moddio2",318,"games",{"id":169,"name":170,"points":171,"category":172},"38647938","Airdraw",269,"creative",{"id":174,"name":175,"points":176,"category":177},"38650570","go-sqlite3",234,"languages",{"id":179,"name":180,"points":181,"category":182},"38679453","Microagents",221,"ai",{"id":184,"name":185,"points":186,"category":20},"38673973","Google Earth as glTF",177,{"id":188,"name":189,"points":190,"category":182},"38705535","AI Video Search Engine (avse)",145,false,"v2",{"id":194,"name":5,"line":6,"ai":191,"cat":20,"year":13,"points":14,"comments":15,"rec":28,"s":195,"top":18,"kw":196,"maker":11,"domain":10,"tier":19,"attempts":33,"strip":197,"url":9,"mix":198,"praise":67,"objection":79,"sub":21},38641857,0.04,[24,25,26,27],"3030101300505",[31,32,33,31],1794036646185]