18个版本

0.1.17 2024年1月2日
0.1.16 2024年1月2日
0.1.14 2023年12月31日

#195 in 文件系统

Download history 90/week @ 2024-03-29 18/week @ 2024-04-05

每月下载量168次

GPL-3.0 许可证

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)应用程序。为此

  1. 在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
    
  2. 您需要使用您首选的包管理器安装您要运行的程序,例如 cargo install gitui
  3. 运行程序并与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命令将
        • 检查仓库中是否存在合并冲突
        • 检查仓库中的跟踪文件是否是系统跟踪文件的超集。如果仓库中有不在系统中的跟踪文件,则引发错误/警告/选项:"在本地仓库中检测到额外的跟踪文件。将这些文件添加到跟踪文件列表中。"。
    • 解决方案7 - 不要使用共享的跟踪文件文件。相反,每个文件将本地指定或通过配置文件指定。

      • 如果使用cli指定要跟踪的文件

依赖关系

~6–19MB
~220K SLoC