Pony of Shadows

Queen of Truth & King of Practice


数据存档01手动存档规范

文件名讲清所有信息

list下路径命名规范

对于list下任意event, 仿照以下格式记录:

24050809开始记录事件@doc@new|0856

即:(如果是将要发生的事件前面加.)+2位年份+4位日期+2位模糊时间代号+事件标题(根据事件的语言环境选用中英文)+(如果包含一些事件属性,比如有关联的proj, 用@开头;有参考精确时间,用|开头)

proj下路径命名规范

对于project, 仿照下面的格式记录:

project_name1
.project_name2
..project_name3

project_name只能用英语,且不能包含这些符号:@;|。 如果一个项目不再会使用,已经进入冷备份阶段,在前面加一个".", 如果一个冷备份项目要被彻底删除内容,在前面加个".."

.bak下路径命名规范

  • 给每个备份盘起名(必须用英文),并在.bak/下建立同名路径作为挂载点。
  • ls -l即可看出路径的最后改动时间,不需要额外记录。
  • 在路径前加".", 则表示该盘已弃用。
  • 各盘上次备份时间距今超过一周,则可以再备份一次。备份可以基于rsync这个强大的增量备份工具。

从project挑选文件到event的工作流程

event路径下的文件必须按照如下子路径规范存放:

ab # 图片和视频
au # 音频
eb # 电子书及相应笔记
pp # 论文及相应笔记
nt # 独立笔记和各种随笔
dt # 实验或调查数据
cd # 代码、配置文件
ot # 其它

event附加的文件遵循的规范

  • 来自project的文件使用硬链接,作为同一个文件,不额外占用空间、不受路径改名的影响。
  • 不在任何event路径下运行任何代码
  • 文件的命名充分表达有用信息。

project的版本控制

使用git进行版本控制。

对于非文本代码项目,可能需要只保存最新的几次提交

可以用变基的方法:

git log
git rebase -i <第五个提交的哈希值>^ # 启用交互式变基,注意这里的 ^ 是指该提交的父提交。
# 在交互式界面中操作:Git 会展示一个列表,其中包括从指定的提交开始的所有后续提交。在这个界面里,可以选择删除(通过删除行或者使用 drop 命令)早于这五次提交的所有提交记录。
# 解决冲突后完成变基
git rebase --continue
# 如果要推送到远程仓库,务必使用--force
git push --force origin master

也可以更直接地用重置的方法,同样会改写提交历史:

git log
git reset --hard <第五个提交的哈希值>
# 还要清除不再被任何分支和标签引用的对象
git reflog expire --expire=now --all
git gc --prune=now
# 如果要推送到远程仓库,务必使用--force
git push --force origin master

对于包含大文件的project, 可能需要用到git-lfs

  1. 在系统中安装和初始化git-lfs, 以archlinux为例
sudo pacman -S git-lfs
git lfs install
  1. 在一个仓库中启用git-lfs对某个类型的文件的追踪
git lfs track "*.psd"

这会记录到.gitattributes, 保证这个文件也要被git追踪

git add .gitattributes
  1. 如果在开启git-lfs的追踪前已经有同类型文件被git追踪,可以用下面的办法改为全部用git-lfs追踪:
git add --renormalize
git commit -m "Migrate existing large files to Git LFS"