Closed Ancientwood closed 5 years ago
建议升级一下版本试一下,然后最好提供一下复现repo,不然光这么说也不好确认是什么问题
关于版本我看了 vssue
组件里面代码 onTitleChange
onOptionsChange
onIssueIdChange
的确都没有再调用 init()
的方法,另 测试 repo:
vuepress - https://github.com/Ancientwood/vssue-test 静态页面 - https://github.com/Ancientwood/vssue-test-blog 访问地址 - http://vssue.ancientwood.club/
然后尴尬的是结果我这个测试的repo并没有复现...(我复制了原来的项目然后删掉了所有文章
然后我测试了有问题的repo,vssue 重复创建的情况只在第52篇post之后...
把post全部加回去,开始重复创建了。 https://github.com/Ancientwood/vssue-test/issues
是不是无限重复创建。。。如果是的话,我一直没做处理的问题可能暴露了:sweat_smile:
是无限重复...
这就要说到 Github API 有多么坑爹了……
GitHub 没有提供根据标题查找 issue 的 API,现在的做法是把 issues 列表取下来然后用 js 筛选里面的标题,然后每次取下来的 issues 数量其实有限,现在看来应该是50个……
所以用 title 的话就是用 list-issues-for-a-repository 这个 api 遍历 https://developer.github.com/v3/issues/#list-issues-for-a-repository 这个...好像...没有...分页...
而用 issue id 的话就是用 get-a-single-issue https://developer.github.com/v3/issues/#get-a-single-issue
所以同一个 id 总能找到不会重复创建对吧
目前是这样的。我刚去看了一眼 gitment 和 gitalk ,他们居然是用一个单独的 label 当 id 😅
我开发完 vssue 最大的感觉就是 Github 的 API 真的辣鸡……
Github 的分页非常不好使 https://developer.github.com/v3/#pagination
莫名想到,init的时候创建一个 issue id 为1的 issue,在里面维护所有自动创建了的issue的列表 :(
现在想到的解决方案:
在 GitHub 中像 gitment 和 gitalk 那样用 label 作为 id (#25),但是会导致现在已经在用 Vssue + GitHub 的项目重新生成 issues 或者手动补充上 label,算是某种 breaking changes。
在文档里写清楚 GitHub 存在这个问题,然后建议用手动给 options 传入 labels 的方式来解决。
还是决定不引入 breaking changes 了……于是这个问题其实还是应该挪到主题下面解决,哈哈
post
页面指定vssue-id
=> 不自动重复创建post
页面使用vssue-title
=> 重复创建post
页面未指定vssue
选项 => 重复创建版本
可能还是这个问题还是版本太旧? https://github.com/meteorlxy/vssue/issues/12