版本控制
CRDT
★★★★★
Manyana: 版本控制的未来
核心发现
Bram Cohen(BitTorrent发明者)发布了一个基于CRDT的版本控制系统原型Manyana,提出了版本控制未来的连贯愿景。
关键洞察:传统Git冲突只是显示两个模糊代码块,而Manyana显示"谁做了什么",让冲突可以被理解而非猜测。
CRDT带来的变革
- 合并永不失败:CRDT最终一致性保证无论分支以何种顺序合并,结果总是相同的
- 冲突是信息性的:冲突不再阻塞合并,而是作为审查提示
- 历史保存在结构中:使用"weave"结构,包含文件的每行历史和元数据
- Rebase不破坏历史:可以保留完整历史的同时实现rebase效果
对比示例
传统Git冲突:
<<<<<<< HEAD
=======
def calculate(x):
a = x * 2
logger.debug(f"a={a}")
b = a + 1
return b
>>>>>>> branch
Manyana冲突:
<<<<<<< begin deleted left
def calculate(x):
======= begin added right
logger.debug(f"a={a}")
======= begin deleted left
b = a + 1
return b
>>>>>>> end conflict
项目状态
- 约470行Python代码
- 仅操作单个文件的概念验证
- 尚未实现cherry-picking和本地撤销
- 代码使用公共领域(Public Domain)授权
- 完整设计文档在GitHub README中