最近在思考一个开源笔记类软件,它的版本控制应该怎么设计版本控制。突然想到 git 不正是我所需要的吗?
最最重要的是,实现起来不会困难,简直就是完美的解决方案啊。
当然,不会把命令行放在 UI 上让用户去输入,那样太硬核了,拿 git 简单包一包,应该也是不错的。
想做个调研,问问大家,如果你们用一款开源软件,它的版本控制哪种形式最好呢?
或者更多想法期望见到,谢谢大家
1
lonewolfakela 2023-11-21 10:38:30 +08:00
作为一款软件,用户为啥要关心你的底层实现技术?不是都看你上层包得好不好么。
|
2
fortynine 2023-11-21 10:39:16 +08:00
啊?你是想让用户编辑之后手动点保存吗?不能实时保存的笔记软件不可能推广出去
|
3
qizheng22 2023-11-21 10:41:18 +08:00 15
曾经看到一个评论,一说要做个产品,程序员最先想到的就是笔记,天气,书签,博客。都是自娱自乐,瞎折腾。
|
4
lstz OP @lonewolfakela 因为产品会是开源的,不想闭门造车,关乎到性能和技术可行性,想听取一下各位大佬的建议。
我用过一些大厂笔记类软件,他们都用的是私有文件格式,甚至还加密过的,感觉用公开格式会更让用户放心 |
6
lstz OP |
7
cb01435781 2023-11-21 10:44:11 +08:00 1
看看基于文件的笔记,比如 logseq
|
8
choah 2023-11-21 10:45:45 +08:00 1
用 git 的话,就没有安全性了吧,谁都可以看到内容
|
9
April5 2023-11-21 10:46:30 +08:00 1
git 需要用户自己解决冲突,想过这一点吗?
|
11
AoEiuV020JP 2023-11-21 10:48:19 +08:00 1
纯 git 会不会有太多 commit ,感觉并不好用,应该还是要结合一些其他技术实现短期的保存,
另外这 git 是打算放在服务器还是各端客户端本地控制, 会不会有冲突, |
12
lstz OP @April5 程序上可以实现,将命令行的冲突解决方案呈现到 UI 上。虽然是麻烦点,但不会让用户接触底层的东西
|
13
wjx0912 2023-11-21 10:49:21 +08:00 4
op 说的不就是 obsidian+git 吗,超越它应该很难,创业需谨慎~~~
|
14
lstz OP |
15
riluolvshe 2023-11-21 10:51:31 +08:00
同事远程修改了文档内容,我得先打电话让同事 commit push 一下,我本地再 pull 一下么🤔
|
17
lstz OP @riluolvshe 目前还没想到怎么实现多用户协同,我再想想交互 捂脸
|
18
Masoud2023 2023-11-21 10:53:29 +08:00
会,太会了,你能集成 Github 或者 Gitlab 就更棒了
|
20
XavierLing 2023-11-21 11:08:07 +08:00 1
作为程序员的我,之前也是这个想法。然后我看了各个 Android 端的 git 客户端,使用起来或多或少都有瑕疵。后面直接装了 Termux ,上命令行搞 😂
|
21
lstz OP |
22
weilai99 2023-11-21 11:16:24 +08:00 1
git ,数据加密后上传同步,并且加锁保证先写后读
|
23
lekai63 2023-11-21 11:18:04 +08:00 1
logseq 不就是用 git 来控制版本吗。
就是多端情况下,偶尔要处理 merge 冲突,对于小白用户比较麻烦。 如果是面向 dev ,我估计你干不过 obsidian 和 logseq 如果是面向普通人,也许你直接基于 onedrive 的版本管理来就完事了? |
24
bravecarrot 2023-11-21 11:29:11 +08:00
用户自己用 git 太麻烦了, 不如花钱用印象笔记的会员
|
25
geelaw 2023-11-21 11:29:44 +08:00 1
楼主可以从上面的回复了解绝大多数用户的想法,但我也想鼓励楼主:存在着对底层技术在意的用户的。
|
26
AlanBrian 2023-11-21 11:50:06 +08:00 1
我感觉可以考虑 idea 的设计。git 历史记录归历史记录,应该还有个本地历史记录。你可以让用户自己手动操作 git 来归档,本地历史记录由软件来自动保存记录。
|
27
firefoxer 2023-11-21 11:54:01 +08:00 1
有人做过一个 gitnote ,好像不更新了
|
28
zypy333 2023-11-21 11:55:34 +08:00
坚果云那样的是咋搞的
|
29
cwcc 2023-11-21 11:56:54 +08:00 1
我其实对文档类和 C/S 端 CRUD 类最后合并的分布式内容版本控制一直都有需求,但是现阶段的方案做得都不是很好。
比如 Git ,Git 其实更适合代码类文本流片段,而文档可能会含有富文本、文件、表格、格式等内容,使用 Git 不能很好地处理这些内容,或者现阶段直接把 docx 文件放入 Git 仓库显然是个不可行的方案。 再比如 MS Office 自带的修订,它仅适用于文本段落,对立面的表格比如删除一行的时候,它就会提示无法标记为修订。 我现阶段还没有找到一个可以完美解决以上文档类版本管理的工具,所以插眼等个方案。 |
30
stantoncurry 2023-11-21 12:08:59 +08:00
这不就是 webdav + typora 吗
|
31
smdbh 2023-11-21 12:14:01 +08:00 1
过来人觉得不行,说的就是 obsidian ,版本冲突天天见,立即放弃
|
32
tyzandhr 2023-11-21 12:17:19 +08:00 via Android 1
git 对于解决现在笔记软件版本冲突问题的解决方案是多分支,只要吸收这个点就行了
|
33
Betsy 2023-11-21 12:25:59 +08:00 via iPhone 1
IntelliJ 全家桶自带一个 history 管理,要不研究下它是怎么实现的,然后抄一波?
|
34
subframe75361 2023-11-21 13:29:16 +08:00 1
考虑 crdt 的方案吗
|
35
BlueHat514 2023-11-21 13:33:23 +08:00 via Android
@qizheng22 我要做一个聊天机器人,使用人工智能的,能进行多轮对话,还可以提供 api 接口供第三方调用,这个主意怎么样(づ ●─● )づ
|
36
leokun 2023-11-21 13:34:06 +08:00
|
38
nullboy 2023-11-21 13:55:32 +08:00
有 obsidia 丝滑吗
|
39
realJamespond 2023-11-21 14:01:11 +08:00 1
vscode 不也有 history 功能
|
40
lstz OP |
41
justwkj07 2023-11-21 14:11:08 +08:00
直接用 obsidian
|
42
BUHeF254Lpd1MH06 2023-11-21 14:41:49 +08:00
你只是想用 git 做个笔记,于是有了笔记,现有的笔记满足不了你吗?你的软件亮点就是用 git 实现的笔记?
|
43
lstz OP @v135ex 没有打算拿这个作为软件亮点,只是探讨一下技术可行性... 我是想做一个工具软件,顺便把笔记也加进去
|
44
starrycat 2023-11-21 14:50:49 +08:00 via Android 1
根据我使用 logseq git 功能的经验,体验极差,经常会出现莫名其妙的报错,然后建议关掉 git 功能😅
|
45
djangovcps 2023-11-21 14:51:22 +08:00
但凡需要操作三步的功能,用户都觉得烦,add commit push
|
46
bequt 2023-11-21 14:52:46 +08:00
git 大文件会比较麻烦。
|
48
yc8332 2023-11-21 15:31:50 +08:00 1
用户管你怎么实现啊。用了你也要弄个 gui ,用户就是点一点。
|
49
0o0O0o0O0o 2023-11-21 15:38:32 +08:00 1
想起来 v 站有人发过个 git + note 的个人闭源作品,很难想象他这种维护状态下用户的感受 https://github.com/zhaopengme/gitnote/issues
此外,我一直很喜欢这种特性,但我觉得贡献给已有的活跃社区会更好 - https://github.com/GitJournal/GitJournal - https://github.com/laurent22/joplin/issues/753 |
50
NullPointerExce 2023-11-21 16:56:23 +08:00 1
自己 DIY 了一个,大致如下:
1. 用 typora 作为写笔记的软件,写完的笔记就是 markdown 格式,程序员狂喜 2. typora 配置图床,图片保存在 GitHub 3. 准备一个文件夹,比如就叫 mynote ,这个文件夹设置成 git 管理的,写的笔记都在这个文件夹里 4. 准备一个 GitHub 仓库,用来保存笔记 5. macOS 可以设置自动化命令,写一个脚本,每分钟执行一次,先 pull ,再 push 6. windows 可以设置自动化任务,同样写了脚本,每分钟执行一次。 完美~ |
51
Nullnode 2023-11-21 17:01:11 +08:00
obsidian
|
52
lstz OP @0o0O0o0O0o 谢谢同学补充,我这个开源项目将会一直保持开源,而且提供其他集成的方式
|
53
tool2d 2023-11-21 17:11:03 +08:00 1
我项目代码是对 2 周内修改的文件,增量 zip 打包。
单用户很少有合并文本的需求,文件都是一个人修改的。 又不是代码,存在同时多个分支在修改。 |
54
leconio 2023-11-21 18:08:54 +08:00
想问下给每个用户开一个库吗?还是让用户自己开自己的库,小白可不太会。
|
55
GP1 2023-11-21 18:47:17 +08:00
你这 UI 界面还需要继续优化,这太面向开发人员了。
|
56
jqtmviyu 2023-11-21 18:51:34 +08:00
obsidian 有 git 功能吗? 我都没用过.
直接丢 onedrive 里同步了. |
57
OceanRs 2023-11-21 18:57:07 +08:00
语雀好像就是这样吧
|
58
narmgalaxy 2023-11-21 19:03:12 +08:00
https://github.com/openneno/neno 我的笔记就是用 git 控制的
|
59
Serif 2023-11-21 19:54:06 +08:00
Foam 瞭解一下
|
60
Andywoo 2023-11-21 20:08:38 +08:00
我直接包了 git(远程管理) + hugo(部署): https://github.com/rangwea/swallow-wails
|
62
SenLief 2023-11-21 21:15:02 +08:00 via iPhone
一个笔记 app 如果做不到 Joplin 的水平,那也没什么发展额。
|
63
netabare 2023-11-21 21:17:33 +08:00 via Android 1
感觉不如参考一下 git 的实现原理然后自己想一下怎么把这个机制移植到记事软件上。
而不是说直接在 git 上面盖个记事软件。 |
65
xingheng 2023-11-21 22:20:06 +08:00
|
66
xbleey 2023-11-21 23:02:27 +08:00 via iPhone
参考 confluence 不就行了吗
|
67
leang521 2023-11-21 23:56:14 +08:00 via Android 1
最好支持 webdev 。
格式开源,方便转 word 和 pdf 。 最重要的,方便快速搜索 |
68
momo1pm 2023-11-22 01:23:02 +08:00
能不能有点新花样,天天搁着笔记 日历 记账来回折腾,程序员三大妈?
|
69
haleyJen 2023-11-22 02:17:07 +08:00 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——一个更加强大智能的搜索引擎;系统性的知识有书——一个更加系统的笔记。有没有一种可能,之所有有太多的笔记要记,是因为书没有写好? …… 所以,这是一条劝退帖。 |
70
wupher 2023-11-22 08:36:06 +08:00 1
喜欢,至少对于程序员来说
|
72
body007 2023-11-22 09:00:02 +08:00
@haleyJen 我仔细看了你的回复,我在用的 https://github.com/zadam/trilium 感觉有些能满足。我最喜欢的是克隆笔记,以及手写 js 和 html 自定义自己的笔记(甚至让笔记实现 web 相关功能的需求,我自己的 2fa 验证码就做成笔记了)。
|
73
cndenis 2023-11-22 09:40:15 +08:00
git 只对文本友好, 笔记一般都要嵌图片和其他文件, 得想办法
而且笔记即便要版本管理, 线性的也足够了, 我几乎想不到有啥分支的需求, 用 SVN 的逻辑可能更好 |
74
kenvix 2023-11-22 09:48:49 +08:00
|
75
qhy0802he 2023-11-22 10:01:46 +08:00 1
笔记类软件,现在的核心需求:
1 、支持良好的文档 tree 管理 2 、支持云文档管理 3 、支持多种插件 建议参考下 lark 。 历史管理只是很小的一部分需求。 |
76
acerphoenix 2023-11-22 10:24:36 +08:00 1
笔记类,图和二进制文件挺多的,git 并不天然合适,再说现在支持 git 的笔记也挺多的。反正我记笔记没什么频繁的强大的版本比较功能,一个文件,整体覆盖就行,简单的历史 dropbox 也有。
|
77
skwyl 2023-11-22 10:42:06 +08:00
感觉 git 日积月累会比较大,为啥不再开个 sqllite 做历史存档,然后用户可以选择节点删除,git 删除不了之前的记录
|
78
skwyl 2023-11-22 10:43:14 +08:00 1
再加上这样做导出的时候也比较简单,历史记录以及当前记录导出会比较方便。
|
79
yelan 2023-11-22 10:48:22 +08:00
Metion 这个 app 是不是就是这样实现的,可以将笔记同步到 github 上。
|
80
LavaC 2023-11-22 10:50:57 +08:00 1
logseq 还只有网页版的时候用的 git 同步,体验糟糕到没边
|
81
go522000 2023-11-22 11:34:53 +08:00 1
看了你的开源作品,主要是针对于程序员的工具箱。
那么选择 GIT 来版本控制(或者说是用来自动备份),作为程序员群体,这个选择我觉得更加适合,这个作品又不是为普通用户设计。 既然是程序员专用的工具箱,对于执行过程,反而不要无感知这个过程,建议是在底部或右侧显示 GIT 命令行过程,并支持用户自己输入 GIT 命令。 我是支持这个项目的。 |
82
lstz OP @go522000 明白的,谢谢同学支持,我也是这么想的,为程序员而做的产品,技术细节更多掌控反而可能是优点
|
83
leang521 2023-11-22 12:27:23 +08:00 via Android 1
以我项目管理的经验,SVN 确实比 GIT 好用。项目中很多 word 文档都是用 SVN 同步多人编辑的。必过 Word 不开放,做笔记用不方便。
笔记主要需要轻量级,方便打开。然后最重要的是方便搜索。我至今还用有道的原因是很容易将我十年前的笔记搜索出来。 但是有道越来越大。没以前好用了。 |
84
MENGKE 2023-11-22 13:42:01 +08:00 1
首先版本控制无所谓。我觉得要是整合一下能把 md 和图片视频的整合到一块,并且方便备份、解析就完美了
|
85
Lojii 2023-11-22 14:04:15 +08:00
我写的: https://github.com/Lojii/TreeDiary
基于 Git 的日记 APP ,除了几个搞技术的会感兴趣,普通用户看都懒得看 |
86
celiachu207 2023-11-22 16:28:15 +08:00
|
87
Chipmunker 2023-11-22 16:42:26 +08:00
@leang521 SVN 可以一眼看出版本的先后顺序,这点确实比 GIT 好。
|