我正在研究一种新的基于编织的数据结构,用于存储版本控制历史记录.这无疑会引发一些宗教战争,当它出现时是否是正确的做事方式,但现在这不是我的问题.
我的问题与输出责任应该给予什么有关.当一行代码被添加,删除并多次合并到自身时,并不总是清楚哪些修订应该归咎于它.值得注意的是,这意味着当一段代码被删除时,它的所有记录都已消失,并且没有责任去除.我已经解决过这个问题的每个人都说过,努力做得更好根本就不值得.有时候人们会把删除部分之后的行更改为从删除部分时的实际修改版本.据推测,如果该部分在最后,那么最后一行就会改变它的责任,如果文件结束为空,那么责任确实会消失在以太中,因为实际上没有任何地方可以归咎于责备信息.由于各种技术原因,我不会使用这个hack,但是假设继续但是这个完全没有文档但事实上的标准实践将是无可争议的(但是随意点燃我并将其从你的系统中取出).
继续我的实际问题.通常对每一行都负责,你会看到它在历史中添加和删除的完整历史记录,并使用三向合并(或者,在纵横交错合并的情况下,随机废话)并基于这些之间的关系您根据其历史记录确定该行是否应该在那里,如果它不应该,那么您使用当前版本将其标记为新的.如果一条线出现在具有不同blame的多个祖先中,那么它会选择哪一个任意继承.同样,我认为继续这种完全无证但事实上的标准做法将是无可争议的.
我的新系统分歧的地方在于,不是根据整个历史的复杂计算对一个给定的行是否应该在当前修订中进行复杂的计算,而是简单地查看直接的祖先,如果该行是在任何一个他们选择任意一个继承责任.我在很大程度上是出于技术原因而做出这种改变(并且由于类似的技术原因和缺乏关心,完全有可能其他责任实现做同样的事情)但在考虑之后,我的一部分实际上更喜欢新的行为.比旧的更直观和可预测.每个人都在想什么?
我在 OSX 上并在 Atom 中打开了一个我没有命名的文件。我不得不重新启动计算机,当它再次返回时,我点击了错误的东西,它忘记了所有旧文件名,而未命名的文件似乎消失得无影无踪。如果我使用 Time Machine 将 .atom 文件恢复到旧状态,它会检测到某些“错误”并从其他位置提取最新状态(它从某处获取最近的文件名)。知道它从哪里获得这种状态吗?