重启后引用失效

还发现一个问题,虽然开了关闭时保持 ID 选项,但依旧有些引用在重启后失效,多次尝试后,发现每次重启后同一块的 ID 确实变了。但是貌似只是若干个文件有这个问题。

赞助商 我要投放

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • abbj
    支持者 订阅者 作者

    image.png

    例如上图,当时嵌入是正常的,重启就失效,再次重新链接后,发现 ID 确实变了。但是又不是同次设置的所有嵌入都会重启失效。

  • 88250
    订阅者

    请帮忙观察一下重现步骤,谢谢。

    4 回复
  • abbj
    支持者 订阅者 作者

    D 大,给你发了邮件,请查收。不知道是不是我这几个笔记有什么特殊的地方。

  • abbj
    支持者 订阅者 作者

    看了一下源文件,貌似这几个失败的链接导向的文件还是普通的 md 文件,不是思源格式的每段后附有 id 样式的文件,可能是这个原因。

    但是这几个文件已经是思源笔记本内的文件了,不知道为什么没有处理成思源的格式。

  • abbj
    支持者 订阅者 作者

    又试了删掉笔记本内的.git 文件夹,删掉家目录下的.sisyuan 文件夹之后重新打开笔记所在文件夹,对应的文件依旧没有被处理成思源的带有 ID 的格式。

  • abbj
    支持者 订阅者 作者

    我自己搞定了。

    原因就是因为思源笔记此前导入 md 文件时,虽然选择了退出保持 ID,但很多文件仅在文件末尾添加了 id,并没有每段后都添加 id。因此导致每次引用当时正常,重启后无法找到相应内容(因为被引用内容的 id 并未保留在文件中。)

    我的方法是:用思源笔记手动逐个修改文件并保存,此时会思源笔记会在每段后添加固定 id,之后再引用或者嵌入,都没有问题了。

    所以具体 bug 应该是:目前导入常规 md 文件后,思源笔记仅在文件尾部添加 id,没有逐段添加。

    1 回复
  • 88250
    订阅者

    谢谢帮忙排查,应该是保持 ID 的实现上有缺陷,稍后会排查。这个选项我们计划在后面的版本直接去掉,你觉得呢?

    1 回复
  • abbj 1
    支持者 订阅者 作者

    退出保留 id 的选项吗?我也觉得这个其实没必要保留,既然都用链接了,当然希望链接持久化。

    另外,其实我觉得执着于源文件是 md 格式也没有必要,只要给用户提供随时批量导出成标准 md 格式的选项,程序运行中想采用啥格式都行,比如是不是用数据库便于搜索或者引用?或者更便于支持大量数据?(这个我实在不懂,就是想想)。

    总之,只要能够提升程序体验(反应速度、功能等)且保证能方便的导出通用格式,其实可以大胆的使用任何格式来保存数据。

    还得补充一点,除了保证能随时批量导出,还要保证能随时批量导入标准 md 文件,这样,思源笔记自己用什么格式做内部处理或者存储,就都随意了,其实不影响用户数据的安全性或者通用性,而且我觉得多数用户其实也不会关心思源笔记自身用了什么格式来储存数据,只要数据能随时完整导出成标准 md。

    1 回复
  • 88250
    订阅者

    嗯,是这个选项。之前加上这个选项主要是考虑到有的用户可能需要用其他编辑器打开 md 文件,加一堆 ID 以后存在一定“污染”问题。

    随着时间推移,思源自身的编辑器也在改进,所以这个选项应该可以去掉了。存储方面目前底层是 md 文件和数据库都有,数据库主要是用于只读查询,最终物理存储格式估计短期内还是会基于 md 文件,这样即使没有启动思源的情况下也基本能够让用户进行笔记查看和修改。导入导出方面也会继续改进,近期计划是支持批量导出标准 Markdown 文件。

    下个版本直接去掉保持 ID 好了,感谢讨论 🙏

请输入回帖内容 ...