18个版本
0.1.17 | 2024年1月2日 |
---|---|
0.1.16 | 2024年1月2日 |
0.1.14 | 2023年12月31日 |
#195 in 文件系统
每月下载量168次
27KB
389 代码行
dotup
一个用于备份dotfile的命令行工具。受yadm启发。
设置新的仓库
初始化仓库
dotup init
这将
- 初始化dotup的git仓库。
- 创建dotup的配置文件
config.toml
。运行dotup init
后,您可以运行dotup status
来查看config.toml
已存在于dotup仓库中,但尚未提交或添加到暂存区。
将文件添加到跟踪文件列表
dotup track ~/.zshrc
检查本地仓库的状态
dotup status
提交更改
dotup commit -m "Initial file"
更改分支为主分支
dotup branch -M main
添加远程origin(此仓库应该已经通过Codeberg/Gitlab/Github/Gitea或类似方式设置)
dotup remote add origin git@github.com:concur1/dotfiles.git
推送到origin
dotup push -u origin main
克隆现有仓库(请确保包括 .
)
使用以下命令将远程仓库克隆到本地dotup仓库中
dotup clone <url> .
config.toml
文件应已包括在 [files.hostname1]
下的文件映射部分。但您现在还应看到,config.toml文件已更新,包括一个包含当前 [files.hostname2]
的部分。
跟踪文件
将文件添加到跟踪文件列表
dotup track <important file>
从跟踪文件列表中删除文件
dotup untrack <important file>
使用命令行git或git GUI/TUI应用程序
使用 run
命令,我们可以在dotup仓库文件与系统文件同步时运行(git ui)应用程序。为此
- 在config.toml中为要启动的程序创建一个部分
[program.gitui] # This is the name of the section we will be configuring name = "gitui" # This is the name of the program that will be running additional_args = "--watcher --logging" # These are the arguments that will be supplied to the program
- 您需要使用您首选的包管理器安装您要运行的程序,例如
cargo install gitui
。 - 运行程序并与dotup同步文件
dotup run gitui
默认情况下,gitui、lazygit、gitkraken和hx已配置。
或者 使用dotup将文件/更改添加到git,然后跟一个git命令
dotup status
dotup add <important file>
dotup commit
示例用法
待办事项
- 在本地系统上启用跟踪功能。
- 在通知监视器中使用仓库路径。
- 启用未跟踪功能。
- 在本地系统上启用同步功能。
- 使同步功能能够获取新添加的文件。
- 使通知/同步命令生效。
- 创建配置文件。
- 从updot运行gitui/lazygit等其他工具。
- 更新以使用git命令。
- 添加repo_names。
- 重命名data.json并将其移动到仓库中。
- 添加检查以确保映射是文件到文件。
- 添加检查以确保每个文件在每个主机名下只映射一次。
- 添加日志记录。
- 使多个系统(泛化home/local/config)生效。
- 将名称更改为dotup。
- 向updot状态添加附加信息。
- 创建测试。
- 测试跟踪功能。
- 测试未跟踪功能。
- 测试包括合并在内的git命令。
- 测试gitui/lazygit启动功能。
- 修复警告。
- 创建仅包含linting和测试的文件。
- 'track'这个词合适吗?也许'mirror'更好?
需要考虑的一些情况
- 一个文件被合并到一个不需要它的系统,该文件被未跟踪。文件是否应该仍然存在?
- 如果文件在本地存在,则仅应取消跟踪,还是我们应该在用它之前先将其复制到本地?
- 合并/克隆包含比系统文件更新的文件将导致系统文件丢失。
-
解决方案1 - 创建一个单独的仓库,该仓库仅包含系统文件的备份。
-
解决方案2 - 检测克隆/合并是否会覆盖系统文件。
-
解决方案3 - 仅从系统复制到仓库,永远不要从仓库复制到系统。
-
解决方案4 - 使用
git pull --allow-unrelated-histories
并在克隆时禁止/引发错误。 -
解决方案5 - 将跟踪分离。在允许合并/pull1之前检查跟踪文件是否匹配。
-
解决方案6 - 有一个apply命令,该命令将本地仓库应用于系统文件。
- 此apply命令将
- 检查仓库中是否存在合并冲突
- 检查仓库中的跟踪文件是否是系统跟踪文件的超集。如果仓库中有不在系统中的跟踪文件,则引发错误/警告/选项:"在本地仓库中检测到额外的跟踪文件。将这些文件添加到跟踪文件列表中。"。
- 此apply命令将
-
解决方案7 - 不要使用共享的跟踪文件文件。相反,每个文件将本地指定或通过配置文件指定。
- 如果使用cli指定要跟踪的文件
-
依赖关系
~6–19MB
~220K SLoC