V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
williamfzc
V2EX  ›  分享创造

将仓库演进历史转换为 html 动画

  •  1
     
  •   williamfzc · 2022-12-13 13:32:31 +08:00 · 2467 次点击
    这是一个创建于 703 天前的主题,其中的信息可能已经有所发展或是发生改变。

    背景

    偶然在其他人的 README 里看到了 gourcecodecity ,思考:

    • 没有逻辑层数据:我知道改了文件但不知道改了幅度跟影响
    • 有些渲染依赖:能否替换为现代的渲染技术,放进浏览器

    刚好我们正在做静态解析工具(真的是刚好),想着把这两个东西结合起来。

    效果

    release 页面 下载对应二进制包,用一行命令行:

    ./sibyl history --src . --output hello.html --full
    

    就可以得到(发现主页视频播不了,我放评论里或者直接点链接跳)

    https://vimeo.com/780616138

    可以看到动画会标识出每个 diff 影响到的相关方法,并逐步演进,看到你的仓库逐渐成长。

    链接

    因为这个项目一开始不是为了干这个事情的(果然走着走着就歪了),主要是用来从代码里提取元信息(方法、类等),所以仓里还有很多不相关的内容。

    另外,这个视频里所有的原始信息( diff 影响哪些方法、方法又额外调用了哪些方法、每个 commit 完整的快照信息)都是可以拿到并且被 dump 出来的。

    这个发出来首先是因为好玩,其次是为了给主功能做一些测试吧~ 感兴趣可戳:

    https://github.com/opensibyl/sibyl2

    中文文档在这,但貌似一直被提示有访问风险,想弃了,还是看 README 就好吧:

    https://opensibyl.github.io/doc/docs/intro

    12 条回复    2022-12-13 15:28:48 +08:00
    williamfzc
        1
    williamfzc  
    OP
       2022-12-13 13:33:29 +08:00
    Tanf
        2
    Tanf  
       2022-12-13 13:52:47 +08:00
    看起来不错,👍
    williamfzc
        3
    williamfzc  
    OP
       2022-12-13 14:05:31 +08:00
    @williamfzc 当前支持 golang 、java 、python
    wfhtqp
        4
    wfhtqp  
       2022-12-13 14:07:17 +08:00
    docker compose 启动
    upload 成功
    但是接口查询 repo 没有
    wfhtqp
        5
    wfhtqp  
       2022-12-13 14:10:48 +08:00
    > ./sibyl history --src . --output hello.html --full

    运行一会儿卡住了,top 查看 100% cpu. 但是毫无反应.
    williamfzc
        6
    williamfzc  
    OP
       2022-12-13 14:19:09 +08:00
    @wfhtqp

    服务端:有队列,可以先看看服务那边有没有日志打出来,如果没有的话过会儿应该就有数据了
    卡住:仓的规模大概多大?
    wfhtqp
        7
    wfhtqp  
       2022-12-13 14:21:48 +08:00
    没有多协程吗?仓库 230M ,使用 upload 很快
    wfhtqp
        8
    wfhtqp  
       2022-12-13 14:24:45 +08:00
    用到 kafka ? docker-compose.yaml 里并没有这个的配置
    williamfzc
        9
    williamfzc  
    OP
       2022-12-13 14:25:37 +08:00
    @wfhtqp

    https://github.com/alibaba/jvm-sandbox

    history 这个功能我用这个仓测的,貌似没什么问题,也算比较传统大厂仓了。比较怀疑是仓里面有些大文件使得解析直接走到里面去把 cpu 打满了,使得没法继续往下了
    后续考虑把过大的源码文件忽略掉,目前只是忽略掉 binary
    williamfzc
        10
    williamfzc  
    OP
       2022-12-13 14:30:47 +08:00
    @wfhtqp

    暂时不带 kafka ,因为这类中间件一般由公司里的基建来承接,就不进 compose 了;

    默认情况下请求会打到 server 里的 in-memory 队列,然后有一批 worker 来处理并写进 db ;
    没入库目测是 neo4j 还在写,db 是目前最大的问题,太慢了;

    试用的话可以先不用 compose 玩玩看,看看流程能走通不: https://opensibyl.github.io/doc/docs/usage/usage-prod#%E5%BF%AB%E9%80%9F%E8%AF%95%E7%94%A8
    wfhtqp
        11
    wfhtqp  
       2022-12-13 14:57:16 +08:00
    不用 compose 也不行 看日志有 kafka 报错
    williamfzc
        12
    williamfzc  
    OP
       2022-12-13 15:28:48 +08:00
    @wfhtqp

    知道了.. 因为默认配置被不小心提交上去了,这次只是想来 share 下衍生 idea ,没有仔细测 server 这块,感谢!
    用 0.7.4 亲测 ok ,compose 也可以,可尝试
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3013 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 10:57 · PVG 18:57 · LAX 02:57 · JFK 05:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.