TE
科技回声
首页24小时热榜最新最佳问答展示工作
GitHubTwitter
首页

科技回声

基于 Next.js 构建的科技新闻平台,提供全球科技新闻和讨论内容。

GitHubTwitter

首页

首页最新最佳问答展示工作

资源链接

HackerNews API原版 HackerNewsNext.js

© 2025 科技回声. 版权所有。

Show HN: A version control system based on rsync

249 点作者 zdgeier超过 2 年前
Hi everyone! I'm trying to create a version control system that solves some of the problems that Git and other version control software has when working in a team. Let me know if you have any feedback!

25 条评论

jerpint超过 2 年前
One thing that could be useful for this is writing code locally and testing it on a remote server. I assume the simple act of editing reflects the change on the other machine? No need to commit, push, then pull to do a one-liner experimental change
评论 #34439841 未加载
评论 #34439911 未加载
评论 #34440215 未加载
评论 #34440117 未加载
joveian超过 2 年前
Two comments from a quick look:<p>1) I recall a comment a while back from the xdelta author about how most history tools store a sequence of changes from nothing (as it sounds like yours does), but this isn&#x27;t ideal since usually you want a recent version which then needs to be produced from the potentially long sequence of changes. Caching various revisions could help in your case but that is less than ideal when the files are large.<p>2) It isn&#x27;t clear how you go from live editing type thing to revision control. If you haven&#x27;t yet, you might want to look at the Aegis paper[1] (it is short) for a quick overview of the framework it used to form a revision control system from a collection of more specific tools that could be customized. That type of framework might go well with your rapid branch synchronization. Sadly the author, Peter Miller[2], died in 2014. As far as I know no one picked up development (it isn&#x27;t the easiest name to search for :&#x2F;). The User Guide [3] from the documentation page [4] gives a bit more info about the model.<p>[1] <a href="https:&#x2F;&#x2F;aegis.sourceforge.net&#x2F;auug93.pdf" rel="nofollow">https:&#x2F;&#x2F;aegis.sourceforge.net&#x2F;auug93.pdf</a><p>[2] <a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Peter_Miller_(software_engineer)" rel="nofollow">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Peter_Miller_(software_enginee...</a><p>[3] <a href="https:&#x2F;&#x2F;aegis.sourceforge.net&#x2F;user-guide.pdf" rel="nofollow">https:&#x2F;&#x2F;aegis.sourceforge.net&#x2F;user-guide.pdf</a><p>[4] <a href="https:&#x2F;&#x2F;aegis.sourceforge.net&#x2F;documents.html" rel="nofollow">https:&#x2F;&#x2F;aegis.sourceforge.net&#x2F;documents.html</a>
评论 #34456968 未加载
hardwaregeek超过 2 年前
There seem to be a few projects that try to be a live, collaborative git. Perhaps it’s just me, but I don’t necessarily think I’d want this for my main system. Maybe a short term collaboration&#x2F;pair programming session, but not in general. I like how git is not immediate. I like that I can take time before sharing my code to clean it up. The issues that a tool like this purports to solve are not issues to me. Live collaboration is a great idea, but maybe not as a version control system. But hey if other people get use out of it, why not!
评论 #34446164 未加载
评论 #34442684 未加载
评论 #34446515 未加载
评论 #34447391 未加载
KerrAvon超过 2 年前
I don&#x27;t understand the use case. Very large file support aside, are you saying you&#x27;ve observed people looking at git and say &quot;I wish I could use this like I use a chat server?&quot;
评论 #34444041 未加载
评论 #34448381 未加载
quintussss超过 2 年前
Would be nice if you could talk about the problems you had with git and how jamsync solves them.
评论 #34439824 未加载
评论 #34445761 未加载
forgotpwd16超过 2 年前
Question, due to a recent thread on an rsync-like CDC-based tool, for this problem how rsync compares to CDC?
评论 #34440124 未加载
samwillis超过 2 年前
What&#x27;s the particular use case for this tool?<p>Would it be better for projects with large static&#x2F;binary assets, such as game dev or CAD?
评论 #34440003 未加载
tuukkah超过 2 年前
It&#x27;s not yet clear to me whether Jamsync has the concept of commits and tracks the history of locally made changes. (Rsync obviously hasn&#x27;t and doesn&#x27;t.)<p>Does Jamsync have 3-way merging (e.g. of local and remote changes on top of a shared ancestor)?
评论 #34440522 未加载
frogperson超过 2 年前
I don&#x27;t think I would want this for code, but it sounds really interesting for a shared drive. I would love to version control the dir where my team dumps all of its docs and spreadsheets and everything else.
评论 #34443171 未加载
richardwhiuk超过 2 年前
I&#x27;m curious whether there are common operations which cause extremely expensive resyncs - it&#x27;s unclear, depending on the hash.<p>e.g. does adding a space at the start of a file causing all of the blocks to be misaligned?
评论 #34440646 未加载
remram超过 2 年前
An option for mounting the files with fuse and&#x2F;or doing a sparse checkout would probably be good. Otherwise your working copy may use a lot of disk space with redundant data.
评论 #34440564 未加载
sigmonsays超过 2 年前
how does this even work with merges or conflicts?<p>How do you review changes easily?<p>It seems like a lot is actually missing. Rolling hashes over blocks is not exactly revision control.
评论 #34442489 未加载
pmeunier超过 2 年前
Btw, Pijul (<a href="https:&#x2F;&#x2F;pijul.org" rel="nofollow">https:&#x2F;&#x2F;pijul.org</a>) already does this for binary files and large files. But it also has other advantages such as easier workflows, provably correct merge and cherry-picking.
kypro超过 2 年前
I have nothing much to add about the tool, but just want to say this is some beautiful documentation.
评论 #34443481 未加载
billconan超过 2 年前
reminds me of <a href="https:&#x2F;&#x2F;xethub.com&#x2F;assets&#x2F;docs&#x2F;xet-specifics&#x2F;how-xet-deduplication-works" rel="nofollow">https:&#x2F;&#x2F;xethub.com&#x2F;assets&#x2F;docs&#x2F;xet-specifics&#x2F;how-xet-dedupli...</a>
replwoacause超过 2 年前
This looks great. Keep going!
评论 #34440339 未加载
ipid超过 2 年前
I wonder whether this system works for zip-compressed files, such as large .docx, .npz, etc. These are common large files, but it seems that rsync cannot handle compressed files.<p>Would Jamsync solve this problem?
评论 #34446953 未加载
评论 #34445063 未加载
kinleyd超过 2 年前
Sounds very useful to me. rsync is my go to tool - I use it to manually maintain versions of my workstation as I find it the most reliable and usable among all options I&#x27;ve tried.
JoeyBananas超过 2 年前
It might be better to limit the scope to &quot;Live editing&quot; or &quot;source code syncing&quot; rather than &quot;version control&quot;.
评论 #34457864 未加载
account-5超过 2 年前
How does this compare with fossil? I use fossil for personal projects.
评论 #34444892 未加载
zabzonk超过 2 年前
so is this kind of a better replacement for subversion? thinking about large file support. i&#x27;m not aware of major problems that git and&#x2F;or hg have when working with a team.
评论 #34440750 未加载
Dave3of5超过 2 年前
If two users are editing the same file this looks like you&#x27;ll see my edits in your file in near real-time. This is being used to do way with merging &#x2F; merge conflicts. A few observations:<p>* I think this makes two devs changing the file basically unusable as you&#x27;re changing the file and potentially the same line simultaneous which could cause me to overwrite your changes without realising<p>* It still presumable doesn&#x27;t get away from the fact I can edit the file with the jam command not running then run it after in which it&#x27;ll just overwrite my local changes onto the remote without merging<p>* What does it do if my editor has changes in the change buffer that aren&#x27;t saved and an update comes in on the same line, then I save. Will my now out of date change buffer overwrite the server version ?<p>I don&#x27;t think you can do away with merging and merge conflicts it&#x27;s a vital part of source control so that two devs can work on the same file simultaneously.<p>How often does the thing sync, none of the demos really show this. The demo&#x27;s showed the thing running very often i.e. every few seconds. Does that mean if I&#x27;m making large changes to a file it automatically upload every time I save the file ? I definitely do not want that as typically when editing code as I edit I will save something that is in a partially broken &#x2F; incomplete state. It also precludes the main CI&#x2F;CD workflows which will normally trigger from a dev uploading something they think will work.<p>Where is the actual source, the source page links me to here: <a href="https:&#x2F;&#x2F;jamsync.dev&#x2F;download" rel="nofollow">https:&#x2F;&#x2F;jamsync.dev&#x2F;download</a><p>This just gives a link to a .zip which is presumably out of date now. I presume you are trying to self host this but since you haven&#x27;t ironed out the details it would be better to use an open source code tool like github &#x2F;gitlab ...etc for the time being.<p>You are allowing me to register &#x2F; login to an &quot;account&quot; on something with basically no terms of service or privacy policy. Not only are you not GDPR compliant but more importantly at the moment you are not limiting your liability! The fact you&#x27;ve stuck this up without limiting your liability you are now partially liable for whatever stuff people are putting up on here baffles me. Seriously for your own good please get some terms of service with at least limitation of liability.<p>You&#x27;ll have to also sort the problem of copyright as I wouldn&#x27;t push code to a service that attempts to claim any copyright of that which I assume you&#x27;re not doing but I would need that in writing.<p>Given the frequency of commits that this solution will introduce you&#x27;ll need to offer way more than 5GB of hosting.<p>How will that version slider work when I have 500k commits. Even squashing branches, the repo I&#x27;m working on at the moment has 10k commits. This is a team of about 30-40 devs and each day is about 15ish PRs. With Jamsync syncing every save I could easily see this going up to millions of commits.
评论 #34441777 未加载
brendoncarroll超过 2 年前
This is a very similar to one of my projects &quot;Got&quot;.<p><a href="https:&#x2F;&#x2F;github.com&#x2F;gotvc&#x2F;got">https:&#x2F;&#x2F;github.com&#x2F;gotvc&#x2F;got</a><p>The algorithms it uses are superior to rsync and git in a few ways. It comes short on features, especially for software development compared to Git. The motivation is more for personal file storage.<p>I notice you&#x27;re using Go and AGPL licensed, so you could borrow any of Got&#x27;s libraries without issue. (Got is GPL licensed.) Definitely reach out in a GitHub issue.
评论 #34440619 未加载
评论 #34443534 未加载
评论 #34440192 未加载
评论 #34445749 未加载
harryvederci超过 2 年前
Nice, I hope you won&#x27;t get an avalanche of comments here by grumpy old devs that are afraid this will somehow mean they&#x27;ll have to learn something new.<p>I think it&#x27;s great to look into possibilities of doing things in a better way, even if the majority of people think the current way is the only correct way.
评论 #34440937 未加载
评论 #34440148 未加载
评论 #34439913 未加载
评论 #34444061 未加载
评论 #34445754 未加载
aliqot超过 2 年前
&gt; We&#x27;re currently not taking contributions but feel free to email us for feature requests.<p>why
评论 #34439886 未加载
评论 #34439888 未加载
评论 #34447396 未加载