V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
lstz
V2EX  ›  程序员

笔记类软件,内部用 git 实现版本控制,用户会喜欢吗?

  •  
  •   lstz · 362 天前 via iPhone · 10948 次点击
    这是一个创建于 362 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近在思考一个开源笔记类软件,它的版本控制应该怎么设计版本控制。突然想到 git 不正是我所需要的吗?

    • 有版本控制,细腻到文件级别
    • 格式开源,用户可控,遥遥领先
    • 能 push 能 pull ,还能多节点备份
    • 甚至能多用户协同

    最最重要的是,实现起来不会困难,简直就是完美的解决方案啊。

    当然,不会把命令行放在 UI 上让用户去输入,那样太硬核了,拿 git 简单包一包,应该也是不错的。

    想做个调研,问问大家,如果你们用一款开源软件,它的版本控制哪种形式最好呢?

    • 1 ,Sqlite 数据库(db 文件)    
    • 2 ,定期全量 zip 归档  
    • 3 ,定期增量 zip 归档
    • 4 ,git 版本控制

    或者更多想法期望见到,谢谢大家

    第 1 条附言  ·  362 天前
    谢谢各位大佬意见,这个产品还在开发中,欢迎拍砖 star ,https://github.com/work7z/LafTools
    第 2 条附言  ·  362 天前
    抱歉中文不好,应该是说这个开源项目
    88 条回复    2023-11-22 17:05:31 +08:00
    lonewolfakela
        1
    lonewolfakela  
       362 天前
    作为一款软件,用户为啥要关心你的底层实现技术?不是都看你上层包得好不好么。
    fortynine
        2
    fortynine  
       362 天前
    啊?你是想让用户编辑之后手动点保存吗?不能实时保存的笔记软件不可能推广出去
    qizheng22
        3
    qizheng22  
       362 天前   ❤️ 15
    曾经看到一个评论,一说要做个产品,程序员最先想到的就是笔记,天气,书签,博客。都是自娱自乐,瞎折腾。
    lstz
        4
    lstz  
    OP
       362 天前 via iPhone
    @lonewolfakela 因为产品会是开源的,不想闭门造车,关乎到性能和技术可行性,想听取一下各位大佬的建议。

    我用过一些大厂笔记类软件,他们都用的是私有文件格式,甚至还加密过的,感觉用公开格式会更让用户放心
    lstz
        5
    lstz  
    OP
       362 天前 via iPhone
    @fortynine 不不不,保存是程序自己完成的,其实说格式用 git 。

    用户感知不到内部实现
    lstz
        6
    lstz  
    OP
       362 天前 via iPhone
    @qizheng22 哈哈哈哈每个人想法都不同,追求的人生意义也不同,何必说"瞎折腾"呢

    而且这个项目将不局限于笔记,还有更多功能
    cb01435781
        7
    cb01435781  
       362 天前   ❤️ 1
    看看基于文件的笔记,比如 logseq
    choah
        8
    choah  
       362 天前   ❤️ 1
    用 git 的话,就没有安全性了吧,谁都可以看到内容
    April5
        9
    April5  
       362 天前   ❤️ 1
    git 需要用户自己解决冲突,想过这一点吗?
    lstz
        10
    lstz  
    OP
       362 天前 via iPhone
    @choah 这一点确实也是,用户也许更担心数据泄露,谢谢同学补充
    AoEiuV020JP
        11
    AoEiuV020JP  
       362 天前   ❤️ 1
    纯 git 会不会有太多 commit ,感觉并不好用,应该还是要结合一些其他技术实现短期的保存,
    另外这 git 是打算放在服务器还是各端客户端本地控制, 会不会有冲突,
    lstz
        12
    lstz  
    OP
       362 天前 via iPhone
    @April5 程序上可以实现,将命令行的冲突解决方案呈现到 UI 上。虽然是麻烦点,但不会让用户接触底层的东西
    wjx0912
        13
    wjx0912  
       362 天前   ❤️ 4
    op 说的不就是 obsidian+git 吗,超越它应该很难,创业需谨慎~~~
    lstz
        14
    lstz  
    OP
       362 天前 via iPhone
    @AoEiuV020JP git 仓库可以放本地也可以放服务端,本地就是一个 repo ,远程就是设置个 private repo ,有任何冲突就让用户解决


    (技术上我再想想)
    riluolvshe
        15
    riluolvshe  
       362 天前
    同事远程修改了文档内容,我得先打电话让同事 commit push 一下,我本地再 pull 一下么🤔
    lstz
        16
    lstz  
    OP
       362 天前 via iPhone
    @wjx0912 嗯嗯,我希望做的不只是笔记,只是顺带笔记功能,谢谢同学补充
    lstz
        17
    lstz  
    OP
       362 天前 via iPhone
    @riluolvshe 目前还没想到怎么实现多用户协同,我再想想交互 捂脸
    Masoud2023
        18
    Masoud2023  
       362 天前
    会,太会了,你能集成 Github 或者 Gitlab 就更棒了
    April5
        19
    April5  
       362 天前
    @lstz 认真的吗?等你解决完冲突,这个文件可能已经被其他人改得面目全非了。
    XavierLing
        20
    XavierLing  
       362 天前   ❤️ 1
    作为程序员的我,之前也是这个想法。然后我看了各个 Android 端的 git 客户端,使用起来或多或少都有瑕疵。后面直接装了 Termux ,上命令行搞 😂
    lstz
        21
    lstz  
    OP
       362 天前 via iPhone
    @Masoud2023 是的,有朝一日收购苹果微软,征服宇宙

    @April5 明白(⊙…⊙)
    weilai99
        22
    weilai99  
       362 天前   ❤️ 1
    git ,数据加密后上传同步,并且加锁保证先写后读
    lekai63
        23
    lekai63  
       362 天前   ❤️ 1
    logseq 不就是用 git 来控制版本吗。

    就是多端情况下,偶尔要处理 merge 冲突,对于小白用户比较麻烦。

    如果是面向 dev ,我估计你干不过 obsidian 和 logseq

    如果是面向普通人,也许你直接基于 onedrive 的版本管理来就完事了?
    bravecarrot
        24
    bravecarrot  
       362 天前
    用户自己用 git 太麻烦了, 不如花钱用印象笔记的会员
    geelaw
        25
    geelaw  
       362 天前   ❤️ 1
    楼主可以从上面的回复了解绝大多数用户的想法,但我也想鼓励楼主:存在着对底层技术在意的用户的。
    AlanBrian
        26
    AlanBrian  
       362 天前   ❤️ 1
    我感觉可以考虑 idea 的设计。git 历史记录归历史记录,应该还有个本地历史记录。你可以让用户自己手动操作 git 来归档,本地历史记录由软件来自动保存记录。
    firefoxer
        27
    firefoxer  
       362 天前   ❤️ 1
    有人做过一个 gitnote ,好像不更新了
    zypy333
        28
    zypy333  
       362 天前
    坚果云那样的是咋搞的
    cwcc
        29
    cwcc  
       362 天前   ❤️ 1
    我其实对文档类和 C/S 端 CRUD 类最后合并的分布式内容版本控制一直都有需求,但是现阶段的方案做得都不是很好。

    比如 Git ,Git 其实更适合代码类文本流片段,而文档可能会含有富文本、文件、表格、格式等内容,使用 Git 不能很好地处理这些内容,或者现阶段直接把 docx 文件放入 Git 仓库显然是个不可行的方案。

    再比如 MS Office 自带的修订,它仅适用于文本段落,对立面的表格比如删除一行的时候,它就会提示无法标记为修订。

    我现阶段还没有找到一个可以完美解决以上文档类版本管理的工具,所以插眼等个方案。
    stantoncurry
        30
    stantoncurry  
       362 天前
    这不就是 webdav + typora 吗
    smdbh
        31
    smdbh  
       362 天前   ❤️ 1
    过来人觉得不行,说的就是 obsidian ,版本冲突天天见,立即放弃
    tyzandhr
        32
    tyzandhr  
       362 天前 via Android   ❤️ 1
    git 对于解决现在笔记软件版本冲突问题的解决方案是多分支,只要吸收这个点就行了
    Betsy
        33
    Betsy  
       362 天前 via iPhone   ❤️ 1
    IntelliJ 全家桶自带一个 history 管理,要不研究下它是怎么实现的,然后抄一波?
    subframe75361
        34
    subframe75361  
       362 天前   ❤️ 1
    考虑 crdt 的方案吗
    BlueHat514
        35
    BlueHat514  
       362 天前 via Android
    @qizheng22 我要做一个聊天机器人,使用人工智能的,能进行多轮对话,还可以提供 api 接口供第三方调用,这个主意怎么样(づ ●─● )づ
    leokun
        36
    leokun  
       362 天前
    ma3252788
        37
    ma3252788  
       362 天前   ❤️ 1
    @lstz #10 私有 git 也可以呀,反正笔记是给自己看的,建个私有仓库不就行啦
    nullboy
        38
    nullboy  
       362 天前
    有 obsidia 丝滑吗
    realJamespond
        39
    realJamespond  
       362 天前   ❤️ 1
    vscode 不也有 history 功能
    lstz
        40
    lstz  
    OP
       362 天前 via iPhone
    @nullboy 会的,持续改进 ui


    @subframe75361
    @leokun
    谢谢同学,学到了新概念,去学习 ing
    justwkj07
        41
    justwkj07  
       362 天前
    直接用 obsidian
    BUHeF254Lpd1MH06
        42
    BUHeF254Lpd1MH06  
       362 天前
    你只是想用 git 做个笔记,于是有了笔记,现有的笔记满足不了你吗?你的软件亮点就是用 git 实现的笔记?
    lstz
        43
    lstz  
    OP
       362 天前 via iPhone
    @v135ex 没有打算拿这个作为软件亮点,只是探讨一下技术可行性... 我是想做一个工具软件,顺便把笔记也加进去
    starrycat
        44
    starrycat  
       362 天前 via Android   ❤️ 1
    根据我使用 logseq git 功能的经验,体验极差,经常会出现莫名其妙的报错,然后建议关掉 git 功能😅
    djangovcps
        45
    djangovcps  
       362 天前
    但凡需要操作三步的功能,用户都觉得烦,add commit push
    bequt
        46
    bequt  
       362 天前
    git 大文件会比较麻烦。
    amiaaaz
        47
    amiaaaz  
       362 天前
    @qizheng22 #3 可能还要加个记账
    yc8332
        48
    yc8332  
       362 天前   ❤️ 1
    用户管你怎么实现啊。用了你也要弄个 gui ,用户就是点一点。
    0o0O0o0O0o
        49
    0o0O0o0O0o  
       362 天前   ❤️ 1
    想起来 v 站有人发过个 git + note 的个人闭源作品,很难想象他这种维护状态下用户的感受 https://github.com/zhaopengme/gitnote/issues

    此外,我一直很喜欢这种特性,但我觉得贡献给已有的活跃社区会更好

    - https://github.com/GitJournal/GitJournal
    - https://github.com/laurent22/joplin/issues/753
    NullPointerExce
        50
    NullPointerExce  
       362 天前   ❤️ 1
    自己 DIY 了一个,大致如下:
    1. 用 typora 作为写笔记的软件,写完的笔记就是 markdown 格式,程序员狂喜
    2. typora 配置图床,图片保存在 GitHub
    3. 准备一个文件夹,比如就叫 mynote ,这个文件夹设置成 git 管理的,写的笔记都在这个文件夹里
    4. 准备一个 GitHub 仓库,用来保存笔记
    5. macOS 可以设置自动化命令,写一个脚本,每分钟执行一次,先 pull ,再 push
    6. windows 可以设置自动化任务,同样写了脚本,每分钟执行一次。
    完美~
    Nullnode
        51
    Nullnode  
       362 天前
    obsidian
    lstz
        52
    lstz  
    OP
       362 天前 via iPhone
    @0o0O0o0O0o 谢谢同学补充,我这个开源项目将会一直保持开源,而且提供其他集成的方式
    tool2d
        53
    tool2d  
       362 天前   ❤️ 1
    我项目代码是对 2 周内修改的文件,增量 zip 打包。

    单用户很少有合并文本的需求,文件都是一个人修改的。

    又不是代码,存在同时多个分支在修改。
    leconio
        54
    leconio  
       361 天前
    想问下给每个用户开一个库吗?还是让用户自己开自己的库,小白可不太会。
    GP1
        55
    GP1  
       361 天前
    你这 UI 界面还需要继续优化,这太面向开发人员了。
    jqtmviyu
        56
    jqtmviyu  
       361 天前
    obsidian 有 git 功能吗? 我都没用过.
    直接丢 onedrive 里同步了.
    OceanRs
        57
    OceanRs  
       361 天前
    语雀好像就是这样吧
    narmgalaxy
        58
    narmgalaxy  
       361 天前
    https://github.com/openneno/neno 我的笔记就是用 git 控制的
    Serif
        59
    Serif  
       361 天前
    Foam 瞭解一下
    Andywoo
        60
    Andywoo  
       361 天前
    我直接包了 git(远程管理) + hugo(部署): https://github.com/rangwea/swallow-wails
    lstz
        61
    lstz  
    OP
       361 天前
    @GP1 谢谢反馈,我们这边改进


    @leconio 明白,我们也在思考...
    SenLief
        62
    SenLief  
       361 天前 via iPhone
    一个笔记 app 如果做不到 Joplin 的水平,那也没什么发展额。
    netabare
        63
    netabare  
       361 天前 via Android   ❤️ 1
    感觉不如参考一下 git 的实现原理然后自己想一下怎么把这个机制移植到记事软件上。

    而不是说直接在 git 上面盖个记事软件。
    lstz
        64
    lstz  
    OP
       361 天前
    @SenLief 跟自己比,不断进度就好啦,发展总是需要点时间


    @netabare 可以的,谢谢同学回复,思考 ing
    xbleey
        66
    xbleey  
       361 天前 via iPhone
    参考 confluence 不就行了吗
    leang521
        67
    leang521  
       361 天前 via Android   ❤️ 1
    最好支持 webdev 。
    格式开源,方便转 word 和 pdf 。
    最重要的,方便快速搜索
    momo1pm
        68
    momo1pm  
       361 天前
    能不能有点新花样,天天搁着笔记 日历 记账来回折腾,程序员三大妈?
    haleyJen
        69
    haleyJen  
       361 天前   ❤️ 2
    所以写程序和设计程序是二回事情,下面只是我个人的观点:

    1. 版本控制真的必要吗?我想版本控制应用最广的应该是程序代码这块,因为他们有各种的版本迭代。

    2. 笔记软件?

    1. 笔记的本质是吗?因为你大脑可能是不靠谱的,所以将一些东西记下来,将来需要的时候,可以很快找到他。所以笔记最核心的功能有三个:1 、记录支持的格式; 2 、记录时的体验; 3 、智能化的搜索功能。苹果笔记没有版本控制,但依然很多人用,为什么?因为它刚好满足了这些核心功能。
    2. 你的目标用户是谁?因为不同的用户,需求是不一样的。不要想着将所有的需求全部满足,这是不可能的,因为人的精力是有限的。
    3. 为什么别人要用你的软件?本地 Obsidian 、网络 Notion ;手写 Goodnote 、Onenote ;传统笔记:Evernote 、Upnote ;轻量笔记:Apple note 、Google keep ;极简笔记:Typora + 云盘、vim 、Emacs 、记事本。

    3. 笔记的功能

    1. 核心功能:1 、记录支持的格式; 2 、编辑时的体验; 3 、智能化的搜索功能。
    1. 支持的格式:文字和图片是基本的。另外还有,声音、视频、链接、手写……
    2. 编写的体验:程序员可能需要 Markdown ,代码还需要代码高亮和代码块;理科生可以需要手写,或者公式的语法;文科生可能需要文本高亮显示、想法笔记;长文档还需要支持悬浮目录等。并且,在写内容的时候,还要尽可能的减少干扰。苹果滚动条就是一个很好的例子,可以设置只在需要的时候显示。
    3. 搜索:主要有查看和排序二大块。笔记中附件、手写的内容能否被找到,查找是否足够快;排序是否合理,用户经常使用的是否在最上面。这都需要算法的支持。
    2. 附加功能
    1. 分享功能:因为可以要分享给别人。( Notion 这块做得很好)
    2. 版本控制:因为有的时候,你需要看之前的笔记。(其实我不是很明白,除了程序代码这块,我自己几乎没有使用过版本控制这个功能)
    3. 跨平台:有的人全平台,这可能也是一个因素。
    4. 安全性 | 加密:是的,对有的人而言,这也是刚需。
    5. 页面相关
    1. 分页功能:是的,因为有的时候,你需要两者同时参考。
    2. 多个标签:就像浏览器那样,方便切换。
    3. 目录功能:长文档刚需。
    6. 好看的 UI:为什么很多人用 Mac 而不是 Windows ,有多少是因为苹果更好看?颜值也是生产力的一部分。
    7. ……

    ---——————————————————————————————————————————————

    所以,这是一条劝退建议。开源是一种很好的想法,但可能真的回不去了。就笔记软件而言,现在有名的是 Joplin ,人家为什么要用你的笔记软件呢?现在的社会是专才的社会,每个人只是干自己最擅长的事情。就笔记软件而言,有的人收集需求,有的人设计,有的人写代码,还有的人只是宣传。这种模式是好的,只是现在的社会出了某些问题,从国产软件可以看出来这点。所以根本上,不是软件的问题,而是社会的问题。在程序员眼中,也许是 XXX 软件不好;在老师眼中,也许是 XXX 学生不好;在普通消费者眼中,为什么现在工资越来越少……

    就我个人而言,现在更多的使用 Apple note ,Notion ( Typora 、Obsidian )前面是生活,后面是工作。我从来不觉得现在缺少笔记软件,相反,我觉得现在不需要笔记软件,因为缺少内容,所以根本没什么需要记的。琐碎的知识有搜索引擎,有 GPT——一个更加强大智能的搜索引擎;系统性的知识有书——一个更加系统的笔记。有没有一种可能,之所有有太多的笔记要记,是因为书没有写好?

    ……

    所以,这是一条劝退帖。
    wupher
        70
    wupher  
       361 天前   ❤️ 1
    喜欢,至少对于程序员来说
    lstz
        71
    lstz  
    OP
       361 天前 via iPhone
    @haleyJen 哇,写的很详实,感谢回复,我会根据这些意见进行软件设计调整的
    body007
        72
    body007  
       361 天前
    @haleyJen 我仔细看了你的回复,我在用的 https://github.com/zadam/trilium 感觉有些能满足。我最喜欢的是克隆笔记,以及手写 js 和 html 自定义自己的笔记(甚至让笔记实现 web 相关功能的需求,我自己的 2fa 验证码就做成笔记了)。

    cndenis
        73
    cndenis  
       361 天前
    git 只对文本友好, 笔记一般都要嵌图片和其他文件, 得想办法
    而且笔记即便要版本管理, 线性的也足够了, 我几乎想不到有啥分支的需求, 用 SVN 的逻辑可能更好
    kenvix
        74
    kenvix  
       361 天前
    git 对于你们的项目就是一个底层的库,你不要封装好不要让用户感知到不就行了吗

    @cndenis 这倒是可以用 Git-LFS 实现
    qhy0802he
        75
    qhy0802he  
       361 天前   ❤️ 1
    笔记类软件,现在的核心需求:
    1 、支持良好的文档 tree 管理
    2 、支持云文档管理
    3 、支持多种插件

    建议参考下 lark 。 历史管理只是很小的一部分需求。
    acerphoenix
        76
    acerphoenix  
       361 天前   ❤️ 1
    笔记类,图和二进制文件挺多的,git 并不天然合适,再说现在支持 git 的笔记也挺多的。反正我记笔记没什么频繁的强大的版本比较功能,一个文件,整体覆盖就行,简单的历史 dropbox 也有。
    skwyl
        77
    skwyl  
       361 天前
    感觉 git 日积月累会比较大,为啥不再开个 sqllite 做历史存档,然后用户可以选择节点删除,git 删除不了之前的记录
    skwyl
        78
    skwyl  
       361 天前   ❤️ 1
    再加上这样做导出的时候也比较简单,历史记录以及当前记录导出会比较方便。
    yelan
        79
    yelan  
       361 天前
    Metion 这个 app 是不是就是这样实现的,可以将笔记同步到 github 上。
    LavaC
        80
    LavaC  
       361 天前   ❤️ 1
    logseq 还只有网页版的时候用的 git 同步,体验糟糕到没边
    go522000
        81
    go522000  
       361 天前   ❤️ 1
    看了你的开源作品,主要是针对于程序员的工具箱。
    那么选择 GIT 来版本控制(或者说是用来自动备份),作为程序员群体,这个选择我觉得更加适合,这个作品又不是为普通用户设计。
    既然是程序员专用的工具箱,对于执行过程,反而不要无感知这个过程,建议是在底部或右侧显示 GIT 命令行过程,并支持用户自己输入 GIT 命令。
    我是支持这个项目的。
    lstz
        82
    lstz  
    OP
       361 天前 via iPhone
    @go522000 明白的,谢谢同学支持,我也是这么想的,为程序员而做的产品,技术细节更多掌控反而可能是优点
    leang521
        83
    leang521  
       361 天前 via Android   ❤️ 1
    以我项目管理的经验,SVN 确实比 GIT 好用。项目中很多 word 文档都是用 SVN 同步多人编辑的。必过 Word 不开放,做笔记用不方便。
    笔记主要需要轻量级,方便打开。然后最重要的是方便搜索。我至今还用有道的原因是很容易将我十年前的笔记搜索出来。
    但是有道越来越大。没以前好用了。
    MENGKE
        84
    MENGKE  
       361 天前   ❤️ 1
    首先版本控制无所谓。我觉得要是整合一下能把 md 和图片视频的整合到一块,并且方便备份、解析就完美了
    Lojii
        85
    Lojii  
       361 天前
    我写的: https://github.com/Lojii/TreeDiary
    基于 Git 的日记 APP ,除了几个搞技术的会感兴趣,普通用户看都懒得看
    celiachu207
        86
    celiachu207  
       361 天前
    Chipmunker
        87
    Chipmunker  
       361 天前
    @leang521 SVN 可以一眼看出版本的先后顺序,这点确实比 GIT 好。
    zbowen66
        88
    zbowen66  
       361 天前
    @qizheng22 #3 还有记账
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2755 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 09:30 · PVG 17:30 · LAX 01:30 · JFK 04:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.