Merge remote-tracking branch 'origin/dev' into dev

This commit is contained in:
Vanessa 2022-06-15 15:02:34 +08:00
commit ad55e13c95
13 changed files with 2453 additions and 118 deletions

View File

@ -3,7 +3,7 @@ name: CI/CD For SiYuan
on:
push:
tags:
- 'dev*'
- '*-dev*'
workflow_dispatch:

View File

@ -884,6 +884,7 @@
"139": "Data snapshot is being generated, [%s] data files have been processed, [%s] remaining...",
"140": "Failed to create data snapshot: %s",
"141": "Failed to rollback data snapshot",
"142": "Snapshot memo cannot be empty"
"142": "Snapshot memo cannot be empty",
"143": "Creating data snapshot..."
}
}

View File

@ -884,6 +884,7 @@
"139": "L'instantané des données est en cours de génération, [%s] fichiers de données ont été traités, [%s] restants...",
"140": "Échec de la création de l'instantané des données: %s",
"141": "Échec de la restauration de l'instantané des données",
"142": "Le mémo d'instantané ne peut pas être vide"
"142": "Le mémo d'instantané ne peut pas être vide",
"143": "Création d'un instantané de données..."
}
}

View File

@ -883,6 +883,7 @@
"139": "正在生成數據快照,已處理 [%s] 個數據文件,剩餘待處理 [%s]...",
"140": "創建數據快照失敗:%s",
"141": "回滾數據快照失敗",
"142": "快照備註不能為空"
"142": "快照備註不能為空",
"143": "正在創建數據快照..."
}
}

View File

@ -885,6 +885,7 @@
"139": "正在生成数据快照,已处理 [%s] 个数据文件,剩余待处理 [%s]...",
"140": "创建数据快照失败:%s",
"141": "回滚数据快照失败",
"142": "快照备注不能为空"
"142": "快照备注不能为空",
"143": "正在创建数据快照..."
}
}

View File

@ -4,7 +4,7 @@
"Properties": {
"id": "20210615213222-vs5tzbd",
"title": "Data history",
"updated": "20220503204314"
"updated": "20220615120852"
},
"Children": [
{
@ -23,36 +23,167 @@
]
},
{
"ID": "20220501135308-99gc8dn",
"ID": "20220615120310-jq1miv3",
"Type": "NodeParagraph",
"Properties": {
"id": "20220501135308-99gc8dn",
"updated": "20220502163315"
"id": "20220615120310-jq1miv3",
"updated": "20220615120310"
},
"Children": [
{
"Type": "NodeText",
"Data": "Data history is mainly used to ensure data security, and even if a misoperation occurs, data can be rolled back through the history. Historical data is uniformly stored in the "
},
"Data": "Data history is mainly used to ensure data security, and even if a misoperation occurs, data can be rolled back through history. The data history is divided into two functions:"
}
]
},
{
"ID": "20220615120310-64352xf",
"Type": "NodeList",
"ListData": {},
"Properties": {
"id": "20220615120310-64352xf",
"updated": "20220615120310"
},
"Children": [
{
"Type": "NodeCodeSpan",
"Data": "code",
"ID": "20220615120310-zyipokx",
"Type": "NodeListItem",
"ListData": {
"BulletChar": 42,
"Marker": "Kg=="
},
"Properties": {
"id": "20220615120310-zyipokx",
"updated": "20220615120310"
},
"Children": [
{
"Type": "NodeCodeSpanOpenMarker"
},
{
"Type": "NodeCodeSpanContent",
"Data": "workspace/history/"
},
{
"Type": "NodeCodeSpanCloseMarker"
"ID": "20220615120310-hxba93x",
"Type": "NodeParagraph",
"Properties": {
"id": "20220615120310-hxba93x",
"updated": "20220615120310"
},
"Children": [
{
"Type": "NodeText",
"Data": "File history: saved in the "
},
{
"Type": "NodeCodeSpan",
"Data": "code",
"Children": [
{
"Type": "NodeCodeSpanOpenMarker"
},
{
"Type": "NodeCodeSpanContent",
"Data": "workspace/history/"
},
{
"Type": "NodeCodeSpanCloseMarker"
}
]
},
{
"Type": "NodeText",
"Data": " folder as the original file, human-readable, and can be manually copied to the corresponding location of data for recovery"
}
]
}
]
},
{
"ID": "20220615120310-ku0y1n6",
"Type": "NodeListItem",
"ListData": {
"BulletChar": 42,
"Marker": "Kg=="
},
"Properties": {
"id": "20220615120310-ku0y1n6",
"updated": "20220615120310"
},
"Children": [
{
"ID": "20220615120310-qkv8ygq",
"Type": "NodeParagraph",
"Properties": {
"id": "20220615120310-qkv8ygq",
"updated": "20220615120310"
},
"Children": [
{
"Type": "NodeText",
"Data": "Data snapshot: partitioned by file, encrypted and compressed and saved in the "
},
{
"Type": "NodeCodeSpan",
"Data": "code",
"Children": [
{
"Type": "NodeCodeSpanOpenMarker"
},
{
"Type": "NodeCodeSpanContent",
"Data": "workspace/repo/"
},
{
"Type": "NodeCodeSpanCloseMarker"
}
]
},
{
"Type": "NodeText",
"Data": " folder, unreadable by humans and cannot be manually restored"
}
]
}
]
}
]
},
{
"ID": "20220615120310-qal3upv",
"Type": "NodeParagraph",
"Properties": {
"id": "20220615120310-qal3upv",
"updated": "20220615120310"
},
"Children": [
{
"Type": "NodeText",
"Data": " folder. History will be automatically generated in the following cases:"
"Data": "In addition to local data history, data snapshots are also used for cloud data snapshot synchronization."
}
]
},
{
"ID": "20220615120326-oxyzckb",
"Type": "NodeHeading",
"HeadingLevel": 2,
"Properties": {
"id": "20220615120326-oxyzckb",
"updated": "20220615120330"
},
"Children": [
{
"Type": "NodeText",
"Data": "File history"
}
]
},
{
"ID": "20220615120326-dopr4db",
"Type": "NodeHeading",
"HeadingLevel": 3,
"Properties": {
"id": "20220615120326-dopr4db",
"updated": "20220615120326"
},
"Children": [
{
"Type": "NodeText",
"Data": "File history generation rules"
}
]
},
@ -406,12 +537,12 @@
"HeadingLevel": 2,
"Properties": {
"id": "20220501135308-2rn9rgb",
"updated": "20220501135308"
"updated": "20220615120407"
},
"Children": [
{
"Type": "NodeText",
"Data": "Browsing History"
"Data": "Browse file history"
}
]
},
@ -421,7 +552,7 @@
"ListData": {},
"Properties": {
"id": "20220501135308-3azjqzh",
"updated": "20220503204314"
"updated": "20220615120419"
},
"Children": [
{
@ -433,7 +564,7 @@
},
"Properties": {
"id": "20220501135308-itmzgsj",
"updated": "20220503204314"
"updated": "20220615120419"
},
"Children": [
{
@ -441,7 +572,7 @@
"Type": "NodeParagraph",
"Properties": {
"id": "20220501135308-yvsiton",
"updated": "20220503204314"
"updated": "20220615120419"
},
"Children": [
{
@ -486,7 +617,7 @@
},
{
"Type": "NodeText",
"Data": " to open the history, only supports browsing the latest 32 times of history"
"Data": " to open the history, only supports browsing the latest 32 times of file history"
}
]
}
@ -548,12 +679,12 @@
"HeadingLevel": 2,
"Properties": {
"id": "20210104091559-kgrtuyh",
"updated": "20210403161323"
"updated": "20220615120446"
},
"Children": [
{
"Type": "NodeText",
"Data": "Rollback"
"Data": "Rollback through file history"
}
]
},
@ -562,12 +693,12 @@
"Type": "NodeParagraph",
"Properties": {
"id": "20220501133808-qv8l0rm",
"updated": "20220501133808"
"updated": "20220615120526"
},
"Children": [
{
"Type": "NodeText",
"Data": "In the time list column on the left side of the history interface, there is a rollback button behind each historical record. After clicking, a confirmation dialog box will pop up. If the rollback is confirmed, the existing data will be overwritten with the historical data."
"Data": "In the time list column on the left side of the data history interface, there is a rollback button on the right side of each history record. After clicking, a confirmation dialog box will pop up. If the rollback is confirmed, the existing file will be overwritten with the file history."
}
]
},
@ -810,7 +941,7 @@
},
"Properties": {
"id": "20220501133808-vpkkff8",
"updated": "20220501134108"
"updated": "20220615111249"
},
"Children": [
{
@ -924,7 +1055,7 @@
},
"Properties": {
"id": "20220501133808-te5g9yq",
"updated": "20220501134108"
"updated": "20220615111249"
},
"Children": [
{
@ -932,18 +1063,654 @@
"Type": "NodeParagraph",
"Properties": {
"id": "20220501133808-8md1hk0",
"updated": "20220501134108"
"updated": "20220615111249"
},
"Children": [
{
"Type": "NodeText",
"Data": "Restart SiYuan"
"Data": "Reindex manually after starting SiYuan"
}
]
}
]
}
]
},
{
"ID": "20220615120602-rhii2c7",
"Type": "NodeHeading",
"HeadingLevel": 3,
"Properties": {
"id": "20220615120602-rhii2c7",
"updated": "20220615120602"
},
"Children": [
{
"Type": "NodeText",
"Data": "Clean up file history"
}
]
},
{
"ID": "20220615120602-mjy7por",
"Type": "NodeParagraph",
"Properties": {
"id": "20220615120602-mjy7por",
"updated": "20220615120602"
},
"Children": [
{
"Type": "NodeText",
"Data": "By default, the history of files generated in the last 30 days is automatically saved, which can be adjusted through "
},
{
"Type": "NodeKbd",
"Data": "kbd",
"Children": [
{
"Type": "NodeKbdOpenMarker"
},
{
"Type": "NodeText",
"Data": "Settings"
},
{
"Type": "NodeKbdCloseMarker"
}
]
},
{
"Type": "NodeText",
"Data": " - "
},
{
"Type": "NodeKbd",
"Data": "kbd",
"Children": [
{
"Type": "NodeKbdOpenMarker"
},
{
"Type": "NodeText",
"Data": "Editor"
},
{
"Type": "NodeKbdCloseMarker"
}
]
},
{
"Type": "NodeText",
"Data": " - "
},
{
"Type": "NodeKbd",
"Data": "kbd",
"Children": [
{
"Type": "NodeKbdOpenMarker"
},
{
"Type": "NodeText",
"Data": "History Retention Days"
},
{
"Type": "NodeKbdCloseMarker"
}
]
},
{
"Type": "NodeText",
"Data": ". History will be automatically deleted."
}
]
},
{
"ID": "20220615120602-3fqyf3h",
"Type": "NodeParagraph",
"Properties": {
"id": "20220615120602-3fqyf3h",
"updated": "20220615120726"
},
"Children": [
{
"Type": "NodeText",
"Data": "If you want to clear all file history data, you can click "
},
{
"Type": "NodeKbd",
"Data": "kbd",
"Children": [
{
"Type": "NodeKbdOpenMarker"
},
{
"Type": "NodeText",
"Data": "Settings"
},
{
"Type": "NodeKbdCloseMarker"
}
]
},
{
"Type": "NodeText",
"Data": " - "
},
{
"Type": "NodeKbd",
"Data": "kbd",
"Children": [
{
"Type": "NodeKbdOpenMarker"
},
{
"Type": "NodeText",
"Data": "Editor"
},
{
"Type": "NodeKbdCloseMarker"
}
]
},
{
"Type": "NodeText",
"Data": " - "
},
{
"Type": "NodeKbd",
"Data": "kbd",
"Children": [
{
"Type": "NodeKbdOpenMarker"
},
{
"Type": "NodeText",
"Data": "Clear all history"
},
{
"Type": "NodeKbdCloseMarker"
}
]
},
{
"Type": "NodeText",
"Data": ", or manually delete "
},
{
"Type": "NodeCodeSpan",
"Data": "code",
"Children": [
{
"Type": "NodeCodeSpanOpenMarker"
},
{
"Type": "NodeCodeSpanContent",
"Data": "workspace/history/"
},
{
"Type": "NodeCodeSpanCloseMarker"
}
]
},
{
"Type": "NodeText",
"Data": " folder."
}
]
},
{
"ID": "20220615120602-drz9hwc",
"Type": "NodeHeading",
"HeadingLevel": 2,
"Properties": {
"id": "20220615120602-drz9hwc",
"updated": "20220615120658"
},
"Children": [
{
"Type": "NodeText",
"Data": "Data snapshot"
}
]
},
{
"ID": "20220615120602-iya2886",
"Type": "NodeHeading",
"HeadingLevel": 3,
"Properties": {
"id": "20220615120602-iya2886",
"updated": "20220615120602"
},
"Children": [
{
"Type": "NodeText",
"Data": "Initialize key"
}
]
},
{
"ID": "20220615120602-wipwu6g",
"Type": "NodeParagraph",
"Properties": {
"id": "20220615120602-wipwu6g",
"updated": "20220615120742"
},
"Children": [
{
"Type": "NodeText",
"Data": "Before using the data snapshot for the first time, you need to initialize the "
},
{
"Type": "NodeKbd",
"Data": "kbd",
"Children": [
{
"Type": "NodeKbdOpenMarker"
},
{
"Type": "NodeText",
"Data": "Data repo key"
},
{
"Type": "NodeKbdCloseMarker"
}
]
},
{
"Type": "NodeText",
"Data": " in "
},
{
"Type": "NodeKbd",
"Data": "kbd",
"Children": [
{
"Type": "NodeKbdOpenMarker"
},
{
"Type": "NodeText",
"Data": "Settings"
},
{
"Type": "NodeKbdCloseMarker"
}
]
},
{
"Type": "NodeText",
"Data": " - "
},
{
"Type": "NodeKbd",
"Data": "kbd",
"Children": [
{
"Type": "NodeKbdOpenMarker"
},
{
"Type": "NodeText",
"Data": "About"
},
{
"Type": "NodeKbdCloseMarker"
}
]
},
{
"Type": "NodeText",
"Data": "."
}
]
},
{
"ID": "20220615120602-cx1f2g9",
"Type": "NodeParagraph",
"Properties": {
"id": "20220615120602-cx1f2g9",
"updated": "20220615120602"
},
"Children": [
{
"Type": "NodeText",
"Data": "If you have multiple devices, you only need to initialize the key on one of the devices, then copy the key string to other devices and import by importing the key string. Do not initialize keys repeatedly on multiple devices, otherwise data snapshots will not be available across devices, for example, data snapshots cannot be synchronized through the cloud."
}
]
},
{
"ID": "20220615120602-wp2lnbq",
"Type": "NodeHeading",
"HeadingLevel": 3,
"Properties": {
"id": "20220615120602-wp2lnbq",
"updated": "20220615120602"
},
"Children": [
{
"Type": "NodeText",
"Data": "Create data snapshot"
}
]
},
{
"ID": "20220615120602-5r3nl34",
"Type": "NodeList",
"ListData": {
"Typ": 1
},
"Properties": {
"id": "20220615120602-5r3nl34",
"updated": "20220615120840"
},
"Children": [
{
"ID": "20220615120602-a20qin2",
"Type": "NodeListItem",
"ListData": {
"Typ": 1,
"Delimiter": 46,
"Marker": "MS4=",
"Num": 1
},
"Properties": {
"id": "20220615120602-a20qin2",
"updated": "20220615120602"
},
"Children": [
{
"ID": "20220615120602-k0xs8n5",
"Type": "NodeParagraph",
"Properties": {
"id": "20220615120602-k0xs8n5",
"updated": "20220615120602"
},
"Children": [
{
"Type": "NodeText",
"Data": "On the top "
},
{
"Type": "NodeKbd",
"Data": "kbd",
"Children": [
{
"Type": "NodeKbdOpenMarker"
},
{
"Type": "NodeText",
"Data": "..."
},
{
"Type": "NodeKbdCloseMarker"
}
]
},
{
"Type": "NodeText",
"Data": " menu or "
},
{
"Type": "NodeKbd",
"Data": "kbd",
"Children": [
{
"Type": "NodeKbdOpenMarker"
},
{
"Type": "NodeText",
"Data": "Alt+H"
},
{
"Type": "NodeKbdCloseMarker"
}
]
},
{
"Type": "NodeText",
"Data": " to open the data history interface"
}
]
}
]
},
{
"ID": "20220615120602-fhbmyhz",
"Type": "NodeListItem",
"ListData": {
"Typ": 1,
"Delimiter": 46,
"Marker": "Mi4=",
"Num": 2
},
"Properties": {
"id": "20220615120602-fhbmyhz",
"updated": "20220615120602"
},
"Children": [
{
"ID": "20220615120602-rh4nmca",
"Type": "NodeParagraph",
"Properties": {
"id": "20220615120602-rh4nmca",
"updated": "20220615120602"
},
"Children": [
{
"Type": "NodeText",
"Data": "Switch to the last tab "
},
{
"Type": "NodeKbd",
"Data": "kbd",
"Children": [
{
"Type": "NodeKbdOpenMarker"
},
{
"Type": "NodeText",
"Data": "Data snapshot"
},
{
"Type": "NodeKbdCloseMarker"
}
]
}
]
}
]
},
{
"ID": "20220615120602-dkrrocp",
"Type": "NodeListItem",
"ListData": {
"Typ": 1,
"Delimiter": 46,
"Marker": "My4=",
"Num": 3
},
"Properties": {
"id": "20220615120602-dkrrocp",
"updated": "20220615120840"
},
"Children": [
{
"ID": "20220615120602-4hggbdj",
"Type": "NodeParagraph",
"Properties": {
"id": "20220615120602-4hggbdj",
"updated": "20220615120840"
},
"Children": [
{
"Type": "NodeText",
"Data": "Click "
},
{
"Type": "NodeKbd",
"Data": "kbd",
"Children": [
{
"Type": "NodeKbdOpenMarker"
},
{
"Type": "NodeText",
"Data": "Create Snapshot"
},
{
"Type": "NodeKbdCloseMarker"
}
]
},
{
"Type": "NodeText",
"Data": ", fill in "
},
{
"Type": "NodeKbd",
"Data": "kbd",
"Children": [
{
"Type": "NodeKbdOpenMarker"
},
{
"Type": "NodeText",
"Data": "Memo"
},
{
"Type": "NodeKbdCloseMarker"
}
]
},
{
"Type": "NodeText",
"Data": " and confirm"
}
]
}
]
}
]
},
{
"ID": "20220615120602-dwulzmi",
"Type": "NodeParagraph",
"Properties": {
"id": "20220615120602-dwulzmi",
"updated": "20220615120852"
},
"Children": [
{
"Type": "NodeText",
"Data": "When browsing data snapshots, you can only distinguish between the snapshot creation time and memo, so the memo should be as detailed as possible, so that different data snapshots can be accurately identified in the future."
}
]
},
{
"ID": "20220615120602-nzrp6gt",
"Type": "NodeHeading",
"HeadingLevel": 3,
"Properties": {
"id": "20220615120602-nzrp6gt",
"updated": "20220615120602"
},
"Children": [
{
"Type": "NodeText",
"Data": "Browse data snapshots"
}
]
},
{
"ID": "20220615120602-13h2vpv",
"Type": "NodeParagraph",
"Properties": {
"id": "20220615120602-13h2vpv",
"updated": "20220615120602"
},
"Children": [
{
"Type": "NodeText",
"Data": "After creating a data snapshot, you can see the snapshot time list on the left, and click different snapshots to browse their notes."
}
]
},
{
"ID": "20220615120602-cikdh3o",
"Type": "NodeHeading",
"HeadingLevel": 3,
"Properties": {
"id": "20220615120602-cikdh3o",
"updated": "20220615120602"
},
"Children": [
{
"Type": "NodeText",
"Data": "Rollback data snapshot"
}
]
},
{
"ID": "20220615120602-zusc5xs",
"Type": "NodeParagraph",
"Properties": {
"id": "20220615120602-zusc5xs",
"updated": "20220615120602"
},
"Children": [
{
"Type": "NodeText",
"Data": "There is a rollback button on the right side of the snapshot time list entry. After clicking, a confirmation dialog box will pop up. If the rollback is confirmed, the existing data will be completely replaced with the snapshot data."
}
]
},
{
"ID": "20220615120602-nhnnujh",
"Type": "NodeHeading",
"HeadingLevel": 3,
"Properties": {
"id": "20220615120602-nhnnujh",
"updated": "20220615120602"
},
"Children": [
{
"Type": "NodeText",
"Data": "Clean data snapshot"
}
]
},
{
"ID": "20220615120602-f90cll0",
"Type": "NodeParagraph",
"Properties": {
"id": "20220615120602-f90cll0",
"updated": "20220615120602"
},
"Children": [
{
"Type": "NodeText",
"Data": "Manually deleting the "
},
{
"Type": "NodeCodeSpan",
"Data": "code",
"Children": [
{
"Type": "NodeCodeSpanOpenMarker"
},
{
"Type": "NodeCodeSpanContent",
"Data": "workspace/repo/"
},
{
"Type": "NodeCodeSpanCloseMarker"
}
]
},
{
"Type": "NodeText",
"Data": " folder will clear all data snapshots."
}
]
}
]
}

View File

@ -4,7 +4,7 @@
"Properties": {
"id": "20210615211733-v6rzowm",
"title": "数据历史",
"updated": "20220503204134"
"updated": "20220615120214"
},
"Children": [
{
@ -27,32 +27,163 @@
"Type": "NodeParagraph",
"Properties": {
"id": "20220501134418-ql8s90v",
"updated": "20220502163331"
"updated": "20220615111558"
},
"Children": [
{
"Type": "NodeText",
"Data": "数据历史主要用于保证数据安全,即使发生误操作也能通过历史进行数据回滚。历史数据统一保存在 "
},
"Data": "数据历史主要用于保证数据安全,即使发生误操作也能通过历史进行数据回滚。数据历史分为两个功能:"
}
]
},
{
"ID": "20220615111559-oiv8079",
"Type": "NodeList",
"ListData": {},
"Properties": {
"id": "20220615111559-oiv8079",
"updated": "20220615112117"
},
"Children": [
{
"Type": "NodeCodeSpan",
"Data": "code",
"ID": "20220615111600-89ecgx0",
"Type": "NodeListItem",
"ListData": {
"BulletChar": 42,
"Marker": "Kg=="
},
"Properties": {
"id": "20220615111600-89ecgx0",
"updated": "20220615111600"
},
"Children": [
{
"Type": "NodeCodeSpanOpenMarker"
},
{
"Type": "NodeCodeSpanContent",
"Data": "工作空间/history/"
},
{
"Type": "NodeCodeSpanCloseMarker"
"ID": "20220615111600-ag04crg",
"Type": "NodeParagraph",
"Properties": {
"id": "20220615111600-ag04crg",
"updated": "20220615112026"
},
"Children": [
{
"Type": "NodeText",
"Data": "文件历史:按原始文件方式保存在 "
},
{
"Type": "NodeCodeSpan",
"Data": "code",
"Children": [
{
"Type": "NodeCodeSpanOpenMarker"
},
{
"Type": "NodeCodeSpanContent",
"Data": "工作空间/history/"
},
{
"Type": "NodeCodeSpanCloseMarker"
}
]
},
{
"Type": "NodeText",
"Data": " 文件夹下,人类可读,可手动拷贝到 data 对应位置恢复"
}
]
}
]
},
{
"ID": "20220615111601-l9ydpwh",
"Type": "NodeListItem",
"ListData": {
"BulletChar": 42,
"Marker": "Kg=="
},
"Properties": {
"id": "20220615111601-l9ydpwh",
"updated": "20220615112117"
},
"Children": [
{
"ID": "20220615111601-8oaj5t3",
"Type": "NodeParagraph",
"Properties": {
"id": "20220615111601-8oaj5t3",
"updated": "20220615112117"
},
"Children": [
{
"Type": "NodeText",
"Data": "数据快照:按文件分块、加密并压缩保存在 "
},
{
"Type": "NodeCodeSpan",
"Data": "code",
"Children": [
{
"Type": "NodeCodeSpanOpenMarker"
},
{
"Type": "NodeCodeSpanContent",
"Data": "工作空间/repo/"
},
{
"Type": "NodeCodeSpanCloseMarker"
}
]
},
{
"Type": "NodeText",
"Data": " 文件夹下,人类不可读,无法手动恢复"
}
]
}
]
}
]
},
{
"ID": "20220615112117-57abhen",
"Type": "NodeParagraph",
"Properties": {
"id": "20220615112117-57abhen",
"updated": "20220615112255"
},
"Children": [
{
"Type": "NodeText",
"Data": " 文件夹下,以下情况会自动生成历史:"
"Data": "数据快照除了用于本地数据历史,还将用于云端数据快照同步。"
}
]
},
{
"ID": "20220615111435-ownalnb",
"Type": "NodeHeading",
"HeadingLevel": 2,
"Properties": {
"id": "20220615111435-ownalnb",
"updated": "20220615111459"
},
"Children": [
{
"Type": "NodeText",
"Data": "文件历史"
}
]
},
{
"ID": "20220615111435-mm5qpqp",
"Type": "NodeHeading",
"HeadingLevel": 3,
"Properties": {
"id": "20220615111435-mm5qpqp",
"updated": "20220615112944"
},
"Children": [
{
"Type": "NodeText",
"Data": "文件历史生成规则"
}
]
},
@ -62,7 +193,7 @@
"ListData": {},
"Properties": {
"id": "20210403160319-ufy7jta",
"updated": "20220501135255"
"updated": "20220501135036"
},
"Children": [
{
@ -191,7 +322,19 @@
"Children": [
{
"Type": "NodeText",
"Data": "云端同步时,本地被云端覆盖的数据会生成历史,历史文件夹后缀为 "
"Data": "云端"
},
{
"Type": "NodeText",
"Data": "同步时,本地被"
},
{
"Type": "NodeText",
"Data": "云端"
},
{
"Type": "NodeText",
"Data": "覆盖的数据会生成历史,历史文件夹后缀为 "
},
{
"Type": "NodeCodeSpan",
@ -235,7 +378,15 @@
"Children": [
{
"Type": "NodeText",
"Data": "手动删除笔记本、文档和资源文件时会生成历史,历史文件夹后缀为 "
"Data": "手动删除笔记本、文档和"
},
{
"Type": "NodeText",
"Data": "资源文件"
},
{
"Type": "NodeText",
"Data": "时会生成历史,历史文件夹后缀为 "
},
{
"Type": "NodeCodeSpan",
@ -403,15 +554,15 @@
{
"ID": "20210104090742-f9nkimo",
"Type": "NodeHeading",
"HeadingLevel": 2,
"HeadingLevel": 3,
"Properties": {
"id": "20210104090742-f9nkimo",
"updated": "20210403161345"
"updated": "20220615112949"
},
"Children": [
{
"Type": "NodeText",
"Data": "浏览历史"
"Data": "浏览文件历史"
}
]
},
@ -421,7 +572,7 @@
"ListData": {},
"Properties": {
"id": "20210104090742-8rmcz3i",
"updated": "20220503204134"
"updated": "20220615112450"
},
"Children": [
{
@ -433,7 +584,7 @@
},
"Properties": {
"id": "20220501135052-k47n4ms",
"updated": "20220503204134"
"updated": "20220615112450"
},
"Children": [
{
@ -441,7 +592,7 @@
"Type": "NodeParagraph",
"Properties": {
"id": "20220501135052-o3r30jj",
"updated": "20220503204134"
"updated": "20220615112450"
},
"Children": [
{
@ -486,7 +637,7 @@
},
{
"Type": "NodeText",
"Data": " 可打开历史,仅支持浏览最新的 32 次历史"
"Data": " 可打开数据历史界面,仅支持浏览最新的 32 次文件历史"
}
]
}
@ -545,15 +696,15 @@
{
"ID": "20210104090742-hjfornp",
"Type": "NodeHeading",
"HeadingLevel": 2,
"HeadingLevel": 3,
"Properties": {
"id": "20210104090742-hjfornp",
"updated": "20210403161327"
"updated": "20220615112957"
},
"Children": [
{
"Type": "NodeText",
"Data": "回滚"
"Data": "通过文件历史回滚"
}
]
},
@ -562,12 +713,12 @@
"Type": "NodeParagraph",
"Properties": {
"id": "20210121105921-zdk68jf",
"updated": "20210615212506"
"updated": "20220615120058"
},
"Children": [
{
"Type": "NodeText",
"Data": "在历史界面左侧时间列表栏中,每一条历史记录后面都有一个回滚按钮,点击以后将弹出确认对话框,如果确认回滚的话将使用历史数据覆盖现有数据。"
"Data": "在数据历史界面左侧时间列表栏中,每一条历史记录右侧都有一个回滚按钮,点击以后将弹出确认对话框,如果确认回滚的话将使用文件历史覆盖现有文件。"
}
]
},
@ -810,7 +961,7 @@
},
"Properties": {
"id": "20220501133237-il09opg",
"updated": "20220501133436"
"updated": "20220615111149"
},
"Children": [
{
@ -924,7 +1075,7 @@
},
"Properties": {
"id": "20220501133422-0nxnwc2",
"updated": "20220501133436"
"updated": "20220615111149"
},
"Children": [
{
@ -932,18 +1083,653 @@
"Type": "NodeParagraph",
"Properties": {
"id": "20220501133422-gc6qund",
"updated": "20220501133436"
"updated": "20220615111149"
},
"Children": [
{
"Type": "NodeText",
"Data": "重现启动思源"
"Data": "启动思源后手动执行重建索引"
}
]
}
]
}
]
},
{
"ID": "20220615115547-2fr6uej",
"Type": "NodeHeading",
"HeadingLevel": 3,
"Properties": {
"id": "20220615115547-2fr6uej",
"updated": "20220615115551"
},
"Children": [
{
"Type": "NodeText",
"Data": "清理文件历史"
}
]
},
{
"ID": "20220615115551-u75o5mk",
"Type": "NodeParagraph",
"Properties": {
"id": "20220615115551-u75o5mk",
"updated": "20220615115618"
},
"Children": [
{
"Type": "NodeText",
"Data": "默认自动保存最近 30 天生成的文件历史,可通过 "
},
{
"Type": "NodeKbd",
"Data": "kbd",
"Children": [
{
"Type": "NodeKbdOpenMarker"
},
{
"Type": "NodeText",
"Data": "设置"
},
{
"Type": "NodeKbdCloseMarker"
}
]
},
{
"Type": "NodeText",
"Data": " - "
},
{
"Type": "NodeKbd",
"Data": "kbd",
"Children": [
{
"Type": "NodeKbdOpenMarker"
},
{
"Type": "NodeText",
"Data": "编辑器"
},
{
"Type": "NodeKbdCloseMarker"
}
]
},
{
"Type": "NodeText",
"Data": " - "
},
{
"Type": "NodeKbd",
"Data": "kbd",
"Children": [
{
"Type": "NodeKbdOpenMarker"
},
{
"Type": "NodeText",
"Data": "历史保留天数"
},
{
"Type": "NodeKbdCloseMarker"
}
]
},
{
"Type": "NodeText",
"Data": " 进行调整,超过该期限的文件历史会被自动删除。"
}
]
},
{
"ID": "20220615115625-3dx0t1j",
"Type": "NodeParagraph",
"Properties": {
"id": "20220615115625-3dx0t1j",
"updated": "20220615115755"
},
"Children": [
{
"Type": "NodeText",
"Data": "如果你想清空所有文件历史数据,可以点击 "
},
{
"Type": "NodeKbd",
"Data": "kbd",
"Children": [
{
"Type": "NodeKbdOpenMarker"
},
{
"Type": "NodeText",
"Data": "设置"
},
{
"Type": "NodeKbdCloseMarker"
}
]
},
{
"Type": "NodeText",
"Data": " - "
},
{
"Type": "NodeKbd",
"Data": "kbd",
"Children": [
{
"Type": "NodeKbdOpenMarker"
},
{
"Type": "NodeText",
"Data": "编辑器"
},
{
"Type": "NodeKbdCloseMarker"
}
]
},
{
"Type": "NodeText",
"Data": " - "
},
{
"Type": "NodeKbd",
"Data": "kbd",
"Children": [
{
"Type": "NodeKbdOpenMarker"
},
{
"Type": "NodeText",
"Data": "清空所有历史"
},
{
"Type": "NodeKbdCloseMarker"
}
]
},
{
"Type": "NodeText",
"Data": ",或者手动删除 "
},
{
"Type": "NodeCodeSpan",
"Data": "code",
"Children": [
{
"Type": "NodeCodeSpanOpenMarker"
},
{
"Type": "NodeCodeSpanContent",
"Data": "工作空间/history/"
},
{
"Type": "NodeCodeSpanCloseMarker"
}
]
},
{
"Type": "NodeText",
"Data": " 文件夹。"
}
]
},
{
"ID": "20220615112531-5yos96d",
"Type": "NodeHeading",
"HeadingLevel": 2,
"Properties": {
"id": "20220615112531-5yos96d",
"updated": "20220615112535"
},
"Children": [
{
"Type": "NodeText",
"Data": "数据快照"
}
]
},
{
"ID": "20220615113758-i2279ot",
"Type": "NodeHeading",
"HeadingLevel": 3,
"Properties": {
"id": "20220615113758-i2279ot",
"updated": "20220615113939"
},
"Children": [
{
"Type": "NodeText",
"Data": "初始化密钥"
}
]
},
{
"ID": "20220615113752-lbtlf6j",
"Type": "NodeParagraph",
"Properties": {
"id": "20220615113752-lbtlf6j",
"updated": "20220615113952"
},
"Children": [
{
"Type": "NodeText",
"Data": "第一次使用数据快照前需要在 "
},
{
"Type": "NodeKbd",
"Data": "kbd",
"Children": [
{
"Type": "NodeKbdOpenMarker"
},
{
"Type": "NodeText",
"Data": "设置"
},
{
"Type": "NodeKbdCloseMarker"
}
]
},
{
"Type": "NodeText",
"Data": " - "
},
{
"Type": "NodeKbd",
"Data": "kbd",
"Children": [
{
"Type": "NodeKbdOpenMarker"
},
{
"Type": "NodeText",
"Data": "关于"
},
{
"Type": "NodeKbdCloseMarker"
}
]
},
{
"Type": "NodeText",
"Data": " 中初始化 "
},
{
"Type": "NodeKbd",
"Data": "kbd",
"Children": [
{
"Type": "NodeKbdOpenMarker"
},
{
"Type": "NodeText",
"Data": "数据仓库密钥"
},
{
"Type": "NodeKbdCloseMarker"
}
]
},
{
"Type": "NodeText",
"Data": "。"
}
]
},
{
"ID": "20220615113953-4o3uc9z",
"Type": "NodeParagraph",
"Properties": {
"id": "20220615113953-4o3uc9z",
"updated": "20220615114137"
},
"Children": [
{
"Type": "NodeText",
"Data": "如果你有多台设备,仅需在其中一台设备上初始化密钥,然后拷贝该密钥字符串到其他设备上,通过导入密钥字符串进行导入。切勿在多台设备上重复初始化密钥,否则数据快照将无法跨设备使用,比如无法通过云端同步数据快照。"
}
]
},
{
"ID": "20220615112535-k8n73hd",
"Type": "NodeHeading",
"HeadingLevel": 3,
"Properties": {
"id": "20220615112535-k8n73hd",
"updated": "20220615113005"
},
"Children": [
{
"Type": "NodeText",
"Data": "创建数据快照"
}
]
},
{
"ID": "20220615112933-zoh8iyg",
"Type": "NodeList",
"ListData": {
"Typ": 1
},
"Properties": {
"id": "20220615112933-zoh8iyg",
"updated": "20220615120214"
},
"Children": [
{
"ID": "20220615114246-9or7h68",
"Type": "NodeListItem",
"ListData": {
"Typ": 1,
"Delimiter": 46,
"Marker": "MS4=",
"Num": 1
},
"Properties": {
"id": "20220615114246-9or7h68",
"updated": "20220615114246"
},
"Children": [
{
"ID": "20220615114246-lr3ydl0",
"Type": "NodeParagraph",
"Properties": {
"id": "20220615114246-lr3ydl0",
"updated": "20220615114250"
},
"Children": [
{
"Type": "NodeText",
"Data": "在顶部 "
},
{
"Type": "NodeKbd",
"Data": "kbd",
"Children": [
{
"Type": "NodeKbdOpenMarker"
},
{
"Type": "NodeText",
"Data": "..."
},
{
"Type": "NodeKbdCloseMarker"
}
]
},
{
"Type": "NodeText",
"Data": " 菜单或者 "
},
{
"Type": "NodeKbd",
"Data": "kbd",
"Children": [
{
"Type": "NodeKbdOpenMarker"
},
{
"Type": "NodeText",
"Data": "Alt+H"
},
{
"Type": "NodeKbdCloseMarker"
}
]
},
{
"Type": "NodeText",
"Data": " 可打开数据历史界面"
}
]
}
]
},
{
"ID": "20220615114251-72kaaxr",
"Type": "NodeListItem",
"ListData": {
"Typ": 1,
"Delimiter": 46,
"Marker": "Mi4=",
"Num": 2
},
"Properties": {
"id": "20220615114251-72kaaxr"
},
"Children": [
{
"ID": "20220615114251-2y9unt4",
"Type": "NodeParagraph",
"Properties": {
"id": "20220615114251-2y9unt4",
"updated": "20220615114252"
},
"Children": [
{
"Type": "NodeText",
"Data": "切换到最后一个页签 "
},
{
"Type": "NodeKbd",
"Data": "kbd",
"Children": [
{
"Type": "NodeKbdOpenMarker"
},
{
"Type": "NodeText",
"Data": "数据快照"
},
{
"Type": "NodeKbdCloseMarker"
}
]
}
]
}
]
},
{
"ID": "20220615114253-k4a3tg5",
"Type": "NodeListItem",
"ListData": {
"Typ": 1,
"Delimiter": 46,
"Marker": "My4=",
"Num": 3
},
"Properties": {
"id": "20220615114253-k4a3tg5",
"updated": "20220615120214"
},
"Children": [
{
"ID": "20220615114253-70sfmtn",
"Type": "NodeParagraph",
"Properties": {
"id": "20220615114253-70sfmtn",
"updated": "20220615120214"
},
"Children": [
{
"Type": "NodeText",
"Data": "点击 "
},
{
"Type": "NodeKbd",
"Data": "kbd",
"Children": [
{
"Type": "NodeKbdOpenMarker"
},
{
"Type": "NodeText",
"Data": "创建快照"
},
{
"Type": "NodeKbdCloseMarker"
}
]
},
{
"Type": "NodeText",
"Data": ",填写 "
},
{
"Type": "NodeKbd",
"Data": "kbd",
"Children": [
{
"Type": "NodeKbdOpenMarker"
},
{
"Type": "NodeText",
"Data": "备注"
},
{
"Type": "NodeKbdCloseMarker"
}
]
},
{
"Type": "NodeText",
"Data": " 并确认"
}
]
}
]
}
]
},
{
"ID": "20220615114908-0y5tfv9",
"Type": "NodeParagraph",
"Properties": {
"id": "20220615114908-0y5tfv9",
"updated": "20220615115114"
},
"Children": [
{
"Type": "NodeText",
"Data": "浏览数据快照时只能通过快照创建时间和备注进行区别,所以备注信息应该尽量详细一些,以备后续能够准确识别不同的数据快照。"
}
]
},
{
"ID": "20220615114301-099icf4",
"Type": "NodeHeading",
"HeadingLevel": 3,
"Properties": {
"id": "20220615114301-099icf4",
"updated": "20220615114632"
},
"Children": [
{
"Type": "NodeText",
"Data": "浏览数据快照"
}
]
},
{
"ID": "20220615114706-5wy741l",
"Type": "NodeParagraph",
"Properties": {
"id": "20220615114706-5wy741l",
"updated": "20220615115247"
},
"Children": [
{
"Type": "NodeText",
"Data": "创建完数据快照后可以在左侧看到快照时间列表,点击不同快照以后可以浏览其备注。"
}
]
},
{
"ID": "20220615115212-kjebrv4",
"Type": "NodeHeading",
"HeadingLevel": 3,
"Properties": {
"id": "20220615115212-kjebrv4",
"updated": "20220615115226"
},
"Children": [
{
"Type": "NodeText",
"Data": "回滚数据快照"
}
]
},
{
"ID": "20220615115227-oxdlcxq",
"Type": "NodeParagraph",
"Properties": {
"id": "20220615115227-oxdlcxq",
"updated": "20220615115452"
},
"Children": [
{
"Type": "NodeText",
"Data": "在快照时间列表条目右侧都有一个回滚按钮,点击以后将弹出确认对话框,如果确认回滚的话将使用快照数据完全替换现有数据。"
}
]
},
{
"ID": "20220615115126-z62p36j",
"Type": "NodeHeading",
"HeadingLevel": 3,
"Properties": {
"id": "20220615115126-z62p36j",
"updated": "20220615115532"
},
"Children": [
{
"Type": "NodeText",
"Data": "清理数据快照"
}
]
},
{
"ID": "20220615115758-ajl5l83",
"Type": "NodeParagraph",
"Properties": {
"id": "20220615115758-ajl5l83",
"updated": "20220615115831"
},
"Children": [
{
"Type": "NodeText",
"Data": "手动删除 "
},
{
"Type": "NodeCodeSpan",
"Data": "code",
"Children": [
{
"Type": "NodeCodeSpanOpenMarker"
},
{
"Type": "NodeCodeSpanContent",
"Data": "工作空间/repo/"
},
{
"Type": "NodeCodeSpanCloseMarker"
}
]
},
{
"Type": "NodeText",
"Data": " 文件夹可以清空全部数据快照。"
}
]
}
]
}

View File

@ -4,7 +4,7 @@
"Properties": {
"id": "20211226122707-8cr09co",
"title": "數據歷史",
"updated": "20220503204301"
"updated": "20220615120430"
},
"Children": [
{
@ -23,36 +23,167 @@
]
},
{
"ID": "20220501135134-32jh3vi",
"ID": "20220615115939-cp3oszl",
"Type": "NodeParagraph",
"Properties": {
"id": "20220501135134-32jh3vi",
"updated": "20220502163408"
"id": "20220615115939-cp3oszl",
"updated": "20220615115939"
},
"Children": [
{
"Type": "NodeText",
"Data": "數據歷史主要用於保證數據安全,即使發生誤操作也能通過歷史進行數據回滾。歷史數據統一保存在 "
},
"Data": "數據歷史主要用於保證數據安全,即使發生誤操作也能通過歷史進行數據回滾。數據歷史分為兩個功能:"
}
]
},
{
"ID": "20220615115939-r7gtut8",
"Type": "NodeList",
"ListData": {},
"Properties": {
"id": "20220615115939-r7gtut8",
"updated": "20220615115939"
},
"Children": [
{
"Type": "NodeCodeSpan",
"Data": "code",
"ID": "20220615115939-7unbokt",
"Type": "NodeListItem",
"ListData": {
"BulletChar": 42,
"Marker": "Kg=="
},
"Properties": {
"id": "20220615115939-7unbokt",
"updated": "20220615115939"
},
"Children": [
{
"Type": "NodeCodeSpanOpenMarker"
},
{
"Type": "NodeCodeSpanContent",
"Data": "工作空間/history/"
},
{
"Type": "NodeCodeSpanCloseMarker"
"ID": "20220615115939-8i4106r",
"Type": "NodeParagraph",
"Properties": {
"id": "20220615115939-8i4106r",
"updated": "20220615115939"
},
"Children": [
{
"Type": "NodeText",
"Data": "文件歷史:按原始文件方式保存在 "
},
{
"Type": "NodeCodeSpan",
"Data": "code",
"Children": [
{
"Type": "NodeCodeSpanOpenMarker"
},
{
"Type": "NodeCodeSpanContent",
"Data": "工作空間/history/"
},
{
"Type": "NodeCodeSpanCloseMarker"
}
]
},
{
"Type": "NodeText",
"Data": " 文件夾下,人類可讀,可手動拷貝到 data 對應位置恢復"
}
]
}
]
},
{
"ID": "20220615115939-oh1df2d",
"Type": "NodeListItem",
"ListData": {
"BulletChar": 42,
"Marker": "Kg=="
},
"Properties": {
"id": "20220615115939-oh1df2d",
"updated": "20220615115939"
},
"Children": [
{
"ID": "20220615115939-qpaond0",
"Type": "NodeParagraph",
"Properties": {
"id": "20220615115939-qpaond0",
"updated": "20220615115939"
},
"Children": [
{
"Type": "NodeText",
"Data": "數據快照:按文件分塊、加密並壓縮保存在 "
},
{
"Type": "NodeCodeSpan",
"Data": "code",
"Children": [
{
"Type": "NodeCodeSpanOpenMarker"
},
{
"Type": "NodeCodeSpanContent",
"Data": "工作空間/repo/"
},
{
"Type": "NodeCodeSpanCloseMarker"
}
]
},
{
"Type": "NodeText",
"Data": " 文件夾下,人類不可讀,無法手動恢復"
}
]
}
]
}
]
},
{
"ID": "20220615115939-1t2chgc",
"Type": "NodeParagraph",
"Properties": {
"id": "20220615115939-1t2chgc",
"updated": "20220615115939"
},
"Children": [
{
"Type": "NodeText",
"Data": " 文件夾下,以下情況會自動生成歷史:"
"Data": "數據快照除了用於本地數據歷史,還將用於雲端數據快照同步。"
}
]
},
{
"ID": "20220615120005-e50u8z7",
"Type": "NodeHeading",
"HeadingLevel": 2,
"Properties": {
"id": "20220615120005-e50u8z7",
"updated": "20220615120005"
},
"Children": [
{
"Type": "NodeText",
"Data": "文件歷史"
}
]
},
{
"ID": "20220615120005-zarefxu",
"Type": "NodeHeading",
"HeadingLevel": 3,
"Properties": {
"id": "20220615120005-zarefxu",
"updated": "20220615120005"
},
"Children": [
{
"Type": "NodeText",
"Data": "文件歷史生成規則"
}
]
},
@ -406,12 +537,12 @@
"HeadingLevel": 2,
"Properties": {
"id": "20220501135134-b9ixet3",
"updated": "20220501135134"
"updated": "20220615120024"
},
"Children": [
{
"Type": "NodeText",
"Data": "瀏覽歷史"
"Data": "瀏覽文件歷史"
}
]
},
@ -421,7 +552,7 @@
"ListData": {},
"Properties": {
"id": "20220501135134-lh5drjl",
"updated": "20220503204301"
"updated": "20220615120430"
},
"Children": [
{
@ -433,7 +564,7 @@
},
"Properties": {
"id": "20220501135134-nkzl4wl",
"updated": "20220503204301"
"updated": "20220615120430"
},
"Children": [
{
@ -441,7 +572,7 @@
"Type": "NodeParagraph",
"Properties": {
"id": "20220501135134-n7t2zfn",
"updated": "20220503204301"
"updated": "20220615120430"
},
"Children": [
{
@ -486,7 +617,7 @@
},
{
"Type": "NodeText",
"Data": " 可打開歷史,僅支持瀏覽最新的 32 次歷史"
"Data": " 可打開歷史,僅支持瀏覽最新的 32 次文件歷史"
}
]
}
@ -548,12 +679,12 @@
"HeadingLevel": 2,
"Properties": {
"id": "20211226122720-u1qd8zw",
"updated": "20220501134236"
"updated": "20220615120035"
},
"Children": [
{
"Type": "NodeText",
"Data": "回滾Rollback"
"Data": "通過文件歷史回滾Rollback"
}
]
},
@ -562,12 +693,12 @@
"Type": "NodeParagraph",
"Properties": {
"id": "20211226122720-kwrhgnd",
"updated": "20211228141424"
"updated": "20220615120111"
},
"Children": [
{
"Type": "NodeText",
"Data": "在歷史界面左側時間列表欄中,每一條歷史記錄後面都有一個撤銷按鈕,點擊以後將彈出確認對話視窗,如果確認回滾的話將使用歷史資料覆蓋現有資料。"
"Data": "在數據歷史界面左側時間列表欄中,每一條歷史記錄右側都有一個回滾按鈕,點擊以後將彈出確認對話框,如果確認回滾的話將使用文件歷史覆蓋現有文件。"
}
]
},
@ -810,7 +941,7 @@
},
"Properties": {
"id": "20220501134148-72i6ahu",
"updated": "20220501134148"
"updated": "20220615111326"
},
"Children": [
{
@ -924,7 +1055,7 @@
},
"Properties": {
"id": "20220501134148-tl7cuni",
"updated": "20220501134148"
"updated": "20220615111326"
},
"Children": [
{
@ -932,18 +1063,654 @@
"Type": "NodeParagraph",
"Properties": {
"id": "20220501134148-nq2ogsm",
"updated": "20220501134148"
"updated": "20220615111326"
},
"Children": [
{
"Type": "NodeText",
"Data": "重現啟動思源"
"Data": "啟動思源後手動執行重建索引"
}
]
}
]
}
]
},
{
"ID": "20220615120134-r88wlzt",
"Type": "NodeHeading",
"HeadingLevel": 3,
"Properties": {
"id": "20220615120134-r88wlzt",
"updated": "20220615120134"
},
"Children": [
{
"Type": "NodeText",
"Data": "清理文件歷史"
}
]
},
{
"ID": "20220615120134-9i9j08p",
"Type": "NodeParagraph",
"Properties": {
"id": "20220615120134-9i9j08p",
"updated": "20220615120134"
},
"Children": [
{
"Type": "NodeText",
"Data": "默認自動保存最近 30 天生成的文件歷史,可通過 "
},
{
"Type": "NodeKbd",
"Data": "kbd",
"Children": [
{
"Type": "NodeKbdOpenMarker"
},
{
"Type": "NodeText",
"Data": "設置"
},
{
"Type": "NodeKbdCloseMarker"
}
]
},
{
"Type": "NodeText",
"Data": " - "
},
{
"Type": "NodeKbd",
"Data": "kbd",
"Children": [
{
"Type": "NodeKbdOpenMarker"
},
{
"Type": "NodeText",
"Data": "編輯器"
},
{
"Type": "NodeKbdCloseMarker"
}
]
},
{
"Type": "NodeText",
"Data": " - "
},
{
"Type": "NodeKbd",
"Data": "kbd",
"Children": [
{
"Type": "NodeKbdOpenMarker"
},
{
"Type": "NodeText",
"Data": "歷史保留天數"
},
{
"Type": "NodeKbdCloseMarker"
}
]
},
{
"Type": "NodeText",
"Data": " 進行調整,超過該期限的文件歷史會被自動刪除。"
}
]
},
{
"ID": "20220615120134-aiy219j",
"Type": "NodeParagraph",
"Properties": {
"id": "20220615120134-aiy219j",
"updated": "20220615120134"
},
"Children": [
{
"Type": "NodeText",
"Data": "如果你想清空所有文件歷史數據,可以點擊 "
},
{
"Type": "NodeKbd",
"Data": "kbd",
"Children": [
{
"Type": "NodeKbdOpenMarker"
},
{
"Type": "NodeText",
"Data": "設置"
},
{
"Type": "NodeKbdCloseMarker"
}
]
},
{
"Type": "NodeText",
"Data": " - "
},
{
"Type": "NodeKbd",
"Data": "kbd",
"Children": [
{
"Type": "NodeKbdOpenMarker"
},
{
"Type": "NodeText",
"Data": "編輯器"
},
{
"Type": "NodeKbdCloseMarker"
}
]
},
{
"Type": "NodeText",
"Data": " - "
},
{
"Type": "NodeKbd",
"Data": "kbd",
"Children": [
{
"Type": "NodeKbdOpenMarker"
},
{
"Type": "NodeText",
"Data": "清空所有歷史"
},
{
"Type": "NodeKbdCloseMarker"
}
]
},
{
"Type": "NodeText",
"Data": ",或者手動刪除 "
},
{
"Type": "NodeCodeSpan",
"Data": "code",
"Children": [
{
"Type": "NodeCodeSpanOpenMarker"
},
{
"Type": "NodeCodeSpanContent",
"Data": "工作空間/history/"
},
{
"Type": "NodeCodeSpanCloseMarker"
}
]
},
{
"Type": "NodeText",
"Data": " 文件夾。"
}
]
},
{
"ID": "20220615120134-cdqs2gt",
"Type": "NodeHeading",
"HeadingLevel": 2,
"Properties": {
"id": "20220615120134-cdqs2gt",
"updated": "20220615120134"
},
"Children": [
{
"Type": "NodeText",
"Data": "數據快照"
}
]
},
{
"ID": "20220615120134-y8wnvbq",
"Type": "NodeHeading",
"HeadingLevel": 3,
"Properties": {
"id": "20220615120134-y8wnvbq",
"updated": "20220615120134"
},
"Children": [
{
"Type": "NodeText",
"Data": "初始化密鑰"
}
]
},
{
"ID": "20220615120134-8tlqarl",
"Type": "NodeParagraph",
"Properties": {
"id": "20220615120134-8tlqarl",
"updated": "20220615120134"
},
"Children": [
{
"Type": "NodeText",
"Data": "第一次使用數據快照前需要在 "
},
{
"Type": "NodeKbd",
"Data": "kbd",
"Children": [
{
"Type": "NodeKbdOpenMarker"
},
{
"Type": "NodeText",
"Data": "設置"
},
{
"Type": "NodeKbdCloseMarker"
}
]
},
{
"Type": "NodeText",
"Data": " - "
},
{
"Type": "NodeKbd",
"Data": "kbd",
"Children": [
{
"Type": "NodeKbdOpenMarker"
},
{
"Type": "NodeText",
"Data": "關於"
},
{
"Type": "NodeKbdCloseMarker"
}
]
},
{
"Type": "NodeText",
"Data": " 中初始化 "
},
{
"Type": "NodeKbd",
"Data": "kbd",
"Children": [
{
"Type": "NodeKbdOpenMarker"
},
{
"Type": "NodeText",
"Data": "數據倉庫密鑰"
},
{
"Type": "NodeKbdCloseMarker"
}
]
},
{
"Type": "NodeText",
"Data": "。"
}
]
},
{
"ID": "20220615120134-v4frz4w",
"Type": "NodeParagraph",
"Properties": {
"id": "20220615120134-v4frz4w",
"updated": "20220615120134"
},
"Children": [
{
"Type": "NodeText",
"Data": "如果你有多台設備,僅需在其中一台設備上初始化密鑰,然後拷貝該密鑰字符串到其他設備上,通過導入密鑰字符串進行導入。切勿在多台設備上重複初始化密鑰,否則數據快照將無法跨設備使用,比如無法通過雲端同步數據快照。"
}
]
},
{
"ID": "20220615120134-165fbc0",
"Type": "NodeHeading",
"HeadingLevel": 3,
"Properties": {
"id": "20220615120134-165fbc0",
"updated": "20220615120134"
},
"Children": [
{
"Type": "NodeText",
"Data": "創建數據快照"
}
]
},
{
"ID": "20220615120134-rfk9khd",
"Type": "NodeList",
"ListData": {
"Typ": 1
},
"Properties": {
"id": "20220615120134-rfk9khd",
"updated": "20220615120216"
},
"Children": [
{
"ID": "20220615120134-1uthigi",
"Type": "NodeListItem",
"ListData": {
"Typ": 1,
"Delimiter": 46,
"Marker": "MS4=",
"Num": 1
},
"Properties": {
"id": "20220615120134-1uthigi",
"updated": "20220615120134"
},
"Children": [
{
"ID": "20220615120134-7n3iucn",
"Type": "NodeParagraph",
"Properties": {
"id": "20220615120134-7n3iucn",
"updated": "20220615120134"
},
"Children": [
{
"Type": "NodeText",
"Data": "在頂部 "
},
{
"Type": "NodeKbd",
"Data": "kbd",
"Children": [
{
"Type": "NodeKbdOpenMarker"
},
{
"Type": "NodeText",
"Data": "..."
},
{
"Type": "NodeKbdCloseMarker"
}
]
},
{
"Type": "NodeText",
"Data": " 菜單或者 "
},
{
"Type": "NodeKbd",
"Data": "kbd",
"Children": [
{
"Type": "NodeKbdOpenMarker"
},
{
"Type": "NodeText",
"Data": "Alt+H"
},
{
"Type": "NodeKbdCloseMarker"
}
]
},
{
"Type": "NodeText",
"Data": " 可打開數據歷史界面"
}
]
}
]
},
{
"ID": "20220615120134-i7x9gbw",
"Type": "NodeListItem",
"ListData": {
"Typ": 1,
"Delimiter": 46,
"Marker": "Mi4=",
"Num": 2
},
"Properties": {
"id": "20220615120134-i7x9gbw",
"updated": "20220615120134"
},
"Children": [
{
"ID": "20220615120134-37n9cui",
"Type": "NodeParagraph",
"Properties": {
"id": "20220615120134-37n9cui",
"updated": "20220615120134"
},
"Children": [
{
"Type": "NodeText",
"Data": "切換到最後一個頁簽 "
},
{
"Type": "NodeKbd",
"Data": "kbd",
"Children": [
{
"Type": "NodeKbdOpenMarker"
},
{
"Type": "NodeText",
"Data": "數據快照"
},
{
"Type": "NodeKbdCloseMarker"
}
]
}
]
}
]
},
{
"ID": "20220615120134-ivxnjm5",
"Type": "NodeListItem",
"ListData": {
"Typ": 1,
"Delimiter": 46,
"Marker": "My4=",
"Num": 3
},
"Properties": {
"id": "20220615120134-ivxnjm5",
"updated": "20220615120216"
},
"Children": [
{
"ID": "20220615120134-qakb9rm",
"Type": "NodeParagraph",
"Properties": {
"id": "20220615120134-qakb9rm",
"updated": "20220615120216"
},
"Children": [
{
"Type": "NodeText",
"Data": "點擊 "
},
{
"Type": "NodeKbd",
"Data": "kbd",
"Children": [
{
"Type": "NodeKbdOpenMarker"
},
{
"Type": "NodeText",
"Data": "創建快照"
},
{
"Type": "NodeKbdCloseMarker"
}
]
},
{
"Type": "NodeText",
"Data": ",填寫 "
},
{
"Type": "NodeKbd",
"Data": "kbd",
"Children": [
{
"Type": "NodeKbdOpenMarker"
},
{
"Type": "NodeText",
"Data": "備註"
},
{
"Type": "NodeKbdCloseMarker"
}
]
},
{
"Type": "NodeText",
"Data": " 並確認"
}
]
}
]
}
]
},
{
"ID": "20220615120134-iv1q02i",
"Type": "NodeParagraph",
"Properties": {
"id": "20220615120134-iv1q02i",
"updated": "20220615120134"
},
"Children": [
{
"Type": "NodeText",
"Data": "瀏覽數據快照時只能通過快照創建時間和備註進行區別,所以備註信息應該盡量詳細一些,以備後續能夠準確識別不同的數據快照。"
}
]
},
{
"ID": "20220615120134-kbof9pl",
"Type": "NodeHeading",
"HeadingLevel": 3,
"Properties": {
"id": "20220615120134-kbof9pl",
"updated": "20220615120134"
},
"Children": [
{
"Type": "NodeText",
"Data": "瀏覽數據快照"
}
]
},
{
"ID": "20220615120134-9c01krz",
"Type": "NodeParagraph",
"Properties": {
"id": "20220615120134-9c01krz",
"updated": "20220615120134"
},
"Children": [
{
"Type": "NodeText",
"Data": "創建完數據快照後可以在左側看到快照時間列表,點擊不同快照以後可以瀏覽其備註。"
}
]
},
{
"ID": "20220615120134-7prrwzx",
"Type": "NodeHeading",
"HeadingLevel": 3,
"Properties": {
"id": "20220615120134-7prrwzx",
"updated": "20220615120134"
},
"Children": [
{
"Type": "NodeText",
"Data": "回滾數據快照"
}
]
},
{
"ID": "20220615120134-s1wzrtu",
"Type": "NodeParagraph",
"Properties": {
"id": "20220615120134-s1wzrtu",
"updated": "20220615120134"
},
"Children": [
{
"Type": "NodeText",
"Data": "在快照時間列表條目右側都有一個回滾按鈕,點擊以後將彈出確認對話框,如果確認回滾的話將使用快照數據完全替換現有數據。"
}
]
},
{
"ID": "20220615120134-5vxnykd",
"Type": "NodeHeading",
"HeadingLevel": 3,
"Properties": {
"id": "20220615120134-5vxnykd",
"updated": "20220615120134"
},
"Children": [
{
"Type": "NodeText",
"Data": "清理數據快照"
}
]
},
{
"ID": "20220615120134-jrz9hxj",
"Type": "NodeParagraph",
"Properties": {
"id": "20220615120134-jrz9hxj",
"updated": "20220615120134"
},
"Children": [
{
"Type": "NodeText",
"Data": "手動刪除 "
},
{
"Type": "NodeCodeSpan",
"Data": "code",
"Children": [
{
"Type": "NodeCodeSpanOpenMarker"
},
{
"Type": "NodeCodeSpanContent",
"Data": "工作空間/repo/"
},
{
"Type": "NodeCodeSpanCloseMarker"
}
]
},
{
"Type": "NodeText",
"Data": " 文件夾可以清空全部數據快照。"
}
]
}
]
}

View File

@ -40,7 +40,7 @@ require (
github.com/patrickmn/go-cache v2.1.0+incompatible
github.com/qiniu/go-sdk/v7 v7.13.0
github.com/radovskyb/watcher v1.0.7
github.com/siyuan-note/dejavu v0.0.0-20220614100921-f1d318f3dd6b
github.com/siyuan-note/dejavu v0.0.0-20220615064519-8337022f6ebd
github.com/siyuan-note/encryption v0.0.0-20220612074546-f1dd94fe8676
github.com/vmihailenco/msgpack/v5 v5.3.5
github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673

View File

@ -419,8 +419,8 @@ github.com/shurcooL/httpfs v0.0.0-20190707220628-8d4bc4ba7749/go.mod h1:ZY1cvUeJ
github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=
github.com/shurcooL/vfsgen v0.0.0-20200824052919-0d455de96546/go.mod h1:TrYk7fJVaAttu97ZZKrO9UbRa8izdowaMIZcxYMbVaw=
github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
github.com/siyuan-note/dejavu v0.0.0-20220614100921-f1d318f3dd6b h1:GyLlhQQsgfVFzyWB+OB1wCRlyzBhI4EkczC0YK9cRHc=
github.com/siyuan-note/dejavu v0.0.0-20220614100921-f1d318f3dd6b/go.mod h1:Oa/Y6fvTUCg8h9/t6GNWXiu8T7aQri/ZvyDRygnlikI=
github.com/siyuan-note/dejavu v0.0.0-20220615064519-8337022f6ebd h1:+XJhelVPsJCL6dwjONTGE5g1krDNxkyyWx7zocCfVN0=
github.com/siyuan-note/dejavu v0.0.0-20220615064519-8337022f6ebd/go.mod h1:Oa/Y6fvTUCg8h9/t6GNWXiu8T7aQri/ZvyDRygnlikI=
github.com/siyuan-note/encryption v0.0.0-20220612074546-f1dd94fe8676 h1:QB9TjJQFhXhZ6dAtPpY02DlzHAQm1C+WqZq6OadG8mI=
github.com/siyuan-note/encryption v0.0.0-20220612074546-f1dd94fe8676/go.mod h1:H8fyqqAbp9XreANjeSbc72zEdFfKTXYN34tc1TjZwtw=
github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=

View File

@ -34,6 +34,7 @@ import (
"github.com/dustin/go-humanize"
"github.com/siyuan-note/encryption"
"github.com/siyuan-note/siyuan/kernel/filesys"
"github.com/siyuan-note/siyuan/kernel/sql"
"github.com/siyuan-note/siyuan/kernel/util"
)
@ -141,9 +142,11 @@ func RecoverLocalBackup() (err error) {
return errors.New(Conf.Language(11))
}
data := util.AESDecrypt(Conf.E2EEPasswd)
data, _ = hex.DecodeString(string(data))
passwd := string(data)
writingDataLock.Lock()
defer writingDataLock.Unlock()
filesys.ReleaseAllFileLocks()
sql.WaitForWritingDatabase()
CloseWatchAssets()
defer WatchAssets()
@ -153,17 +156,17 @@ func RecoverLocalBackup() (err error) {
Conf.Sync.Enabled = false
Conf.Save()
filesys.ReleaseAllFileLocks()
util.PushEndlessProgress(Conf.Language(63))
util.LogInfof("starting recovery...")
start := time.Now()
data := util.AESDecrypt(Conf.E2EEPasswd)
data, _ = hex.DecodeString(string(data))
passwd := string(data)
decryptedDataDir, err := decryptDataDir(passwd)
if nil != err {
util.ClearPushProgress(100)
return
}
newDataDir := filepath.Join(util.WorkspaceDir, "data.new")
os.RemoveAll(newDataDir)
if err = os.MkdirAll(newDataDir, 0755); nil != err {
@ -249,8 +252,10 @@ func CreateLocalBackup() (err error) {
defer util.ClearPushProgress(100)
util.PushEndlessProgress(Conf.Language(22))
writingDataLock.Lock()
defer writingDataLock.Unlock()
WaitForWritingFiles()
sql.WaitForWritingDatabase()
filesys.ReleaseAllFileLocks()
util.LogInfof("creating backup...")

View File

@ -28,6 +28,7 @@ import (
"github.com/siyuan-note/dejavu/entity"
"github.com/siyuan-note/encryption"
"github.com/siyuan-note/siyuan/kernel/filesys"
"github.com/siyuan-note/siyuan/kernel/sql"
"github.com/siyuan-note/siyuan/kernel/util"
)
@ -43,8 +44,7 @@ func GetRepoIndexLogs(page int) (logs []*dejavu.Log, pageCount, totalCount int,
return
}
page-- // 从 0 开始
logs, pageCount, totalCount, err = repo.GetIndexLogs(page, 32)
logs, pageCount, totalCount, err = repo.GetIndexLogs(page, 16)
if nil != err {
if dejavu.ErrNotFoundIndex == err {
logs = []*dejavu.Log{}
@ -131,10 +131,12 @@ func CheckoutRepo(id string) (err error) {
return
}
filesys.ReleaseAllFileLocks()
util.PushEndlessProgress(Conf.Language(63))
writingDataLock.Lock()
defer writingDataLock.Unlock()
WaitForWritingFiles()
sql.WaitForWritingDatabase()
filesys.ReleaseAllFileLocks()
CloseWatchAssets()
defer WatchAssets()
@ -189,10 +191,13 @@ func IndexRepo(memo string) (err error) {
return
}
WaitForWritingFiles()
filesys.ReleaseAllFileLocks()
util.PushEndlessProgress(Conf.Language(143))
writingDataLock.Lock()
defer writingDataLock.Unlock()
WaitForWritingFiles()
sql.WaitForWritingDatabase()
filesys.ReleaseAllFileLocks()
_, err = repo.Index(memo, util.PushEndlessProgress, indexCallbacks)
util.PushClearProgress()
return

View File

@ -70,6 +70,7 @@ func InitDatabase(forceRebuild bool) (err error) {
if gulu.File.IsExist(util.DBPath) {
if err = removeDatabaseFile(); nil != err {
util.LogErrorf("remove database file [%s] failed: %s", util.DBPath, err)
util.PushClearProgress()
return
}
}