我想分享一个恐怖的开发故事,它仍然让我到今天都无法忘记。
我是在用Godot开发项目,这时候,我听说文件名最好用蛇型命名法,所以我决定把所有的项目文件都改成蛇型命名法。这好像是有道理的。然而,我发现我有很多文件需要更新,当时已经开了整整一年,虽然Godot更新非常慢,但是也没有造成任何问题,因此我使用bash脚本在powershell下批量修改文件名。
但问题来了,Git并不喜欢这种方式。Godot编辑器改文件名会自动更新内部资源路径,包括.tscn和.tres文件。不仅如此,一次批处理改名根本不管内部资源路径,结果导致有数百个场景和资源文件指向了不再存在的路径。
接着,我花了两个星期,一一去查找每个文件找错位的路径,一个一个修改。时日紧迫,因为涉及的文件数量高达8000个,过程非常痛苦。整个修复过程包括:找到一个文件名不一致的文件(Godot会弹出错误提示),然后修改它的原名,接着是给它加个修订名称,比如card_name_2,然后再最后改成新的蛇型命名法。回想起来,问题似乎只是因为不更新文件一致性,导致代码引用没有更新。引擎自己保留了一个内部资源映射表,如果不通过它修改会导致问题慢慢积累。
回过头来看,现在问题显现得很明显:在Godot编辑器内修改文件名,永远不要从外部脚本来修改。虽然我看到这样的警告很多次了,但现在我也永远不能把它忘了……修复问题花了我两周时间才能找到原因,然后再花了两周时间才彻底修复。差一点我就放弃这个项目了。
这样的错误你只会犯一次……希望你以后不要碰到这种事! - Dan
评论 (0)