version-keeper(vk): 一个版本管理工具
一个运行在服务器端的版本管理工具
idea 提示词
我想实现一个命令行
1. --target-dir: 指定一个目录,待处理的目录(target_dir)
2. --limit: 一个数字,默认值为 5
3. --versions 版本目录,默认值为 versions,这个目录是相对于 --target-dir
4. --latest 当前目录的值,默认值为 current,这个目录是相对于 --target-dir
5. --type 只针对 file 或者 directory
6. --filter 在目录里,写一个 glob 表达式,默认是 *
功能如下
1. 跳转到指定目录
2. 清空 latest 目录,注意实现的时候是:清空其中的内容,而不是直接删除再创建
3. 找到指定目录下的所有版本目录
4. 找到最新的版本目录(最后更新时间),软连接到当前目录; 如果 current 已经存在,不要先删除原来的链接
5. 根据-n的值,保留最新的n个版本目录,删除其他版本目录
6. 保留最新的n个版本目录,删除其他版本目录
7. 删除前是否需要进行确认,不需要
添加一个 --skip-symbolic-link 的选项: 如果有这个就不需要 current 目录,并且不需要做软连接相关的逻辑
添加一个 --skip-versions: 如果有这个,就不需要创建 versions 目录,相关文件直接放在 target-dir 里。
项目名
我计划在
github
上实现这个功能,帮我取个简洁的项目名吧(多列几个让我选),并写一个10-15
词的描述,英文的
### 项目名称建议:
1. **version-keeper**
2. **dir-versioner**
3. **version-prune**
4. **latest-linker**
5. **clean-versions**
### 项目描述(英文):
A CLI tool to manage versioned directories by linking the latest and keeping only the newest N versions.
使用场景
- 备份数据库
- 发布网站
备份数据库
# 假设数据库文件为 db.sql
$ tar -czf db_$(date +"%Y%m%d%H%M%S").tar.gz db.sql
# 使用 vk 备份
$ vk --target-dir my-backup/ --skip-symbolic-link --skip-versions --type file


# 备份前
$ tree
.
├── file1
├── file2
├── file3
├── file4
├── file5
└── file6
# 备份后
.
├── file3
├── file4
├── file5
├── file6
└── file7
纯静态HTML
- 在 nginx 上配置
/Users/ap7/Downloads/my-app/current
为网站目录即可
vk my-app --limit 5
$ tree
.
├── current -> /Users/ap7/Downloads/my-app/versions/versions9
└── versions
├── versions5
│ └── app.txt
├── versions6
│ └── app.txt
├── versions7
│ └── app.txt
├── versions8
│ └── app.txt
└── versions9
└── app.txt