#git-commit #git-repository #git-branch #git-tool #snapshot #process #automatic

bin+lib dura

杜拉通过 Git 提交自动备份您的工作

3 个不稳定版本

0.2.0 2022年7月10日
0.2.0-rc12022年6月20日
0.1.0 2022年1月23日

#14 in #git-tool

Apache-2.0

48KB
969 代码行

杜拉

Build

杜拉是一个后台进程,它会监视您的 Git 仓库并在不影响 HEAD、当前分支或 Git 索引(暂存文件)的情况下提交未提交的更改。如果您陷入“哦,糟糕!”的情况,认为您刚刚丢失了几天的工 作,请检出 dura 分支并恢复。

没有 dura,您需要在编辑器中使用 Ctrl-Z 来回到一个良好的状态。那太 2021 年了。计算机崩溃,Ctrl-Z 只能独立地在文件上工作。杜拉随您进行更改地快照整个仓库,因此您可以回滚到“4小时前”而不是“按 Ctrl-Z 40 次或更多”。最后,一些理智。

如何使用

在后台运行它

$ dura serve &

serve 可以在任何目录中运行。Unix shell 中的 & 是运行进程的后台运行语法,意味着您可以启动 dura 并在 dura 继续运行的同时继续使用相同的终端窗口。您也可以在一个您保持打开的窗口中运行 dura serve

dura 知道要监视哪些仓库

$ cd some/git/repo
$ dura watch

目前,您必须逐个将 cd 切换到您想监视的每个仓库。

如果您有关于如何改进此处的想法,请在这里分享。直到那件事解决,您可以运行类似 find ~ -type d -name .git -prune | xargs -I= sh -c "cd =/..; dura watch" 的命令来开始监视您现有的仓库。

进行一些更改。无需提交或甚至暂存它们。使用任何 Git 工具查看 dura 分支

$ git log --all

dura 为您每次实际的提交创建一个分支,并在该分支上提交更改,而不会影响您的工作副本。您仍然可以像以前一样使用 Git。

使用kill命令让dura知道它应该停止在后台运行。

$ dura kill

kill命令可以在任何目录下执行。它指示serve进程,如果正在运行serve进程,则应该退出。

如何恢复

跟踪您当前未提交更改的dura分支看起来像dura/f4a88e5ea0f1f7492845f7021ae82db70f14c725。在$SHELL中,您可以通过以下方式获取分支名称:

$ echo "dura/$(git rev-parse HEAD)"

使用git logtig来确定您想要回滚到的哪个提交。复制哈希值,然后运行类似以下命令的内容:

# Or, if you don't trust dura yet, `git stash`
$ git reset HEAD --hard
# get the changes into your working directory
$ git checkout $THE_HASH
# last few commands reset HEAD back to master but with changes uncommitted
$ git checkout -b temp-branch
$ git reset master
$ git checkout master
$ git branch -D temp-branch

如果您想改进这一体验,请在这里协作

安装

Arch Linux

$ paru -S dura-git

Nix / Nixos

Nix是一种独特的软件包管理和系统配置工具。NixOS是基于Nix软件包管理器的Linux发行版。

要使用预编译的二进制文件在本地运行dura

nix shell nixpkgs#dura

如果您愿意贡献和发展,dura还提供其自己的Nix flake

要本地构建和运行dura的最新开发版本

nix run github:tkellogg/dura

要运行一个包含开发所需工具的开发环境

nix develop github:tkellogg/dura

Cargo安装

  1. 安装Cargo
  2. 如果您想运行发布版本,请输入cargo install dura,否则请输入cargo install --git https://github.com/tkellogg/dura

通过源代码

  1. 安装Rust(例如,brew install rustup && brew install rust
  2. 克隆此存储库(例如,git clone https://github.com/tkellogg/dura.git
  3. 导航到存储库基本目录(cd dura
  4. 运行cargo install --path . 注意:如果您在获取Cargo依赖项时遇到失败,请尝试使用本地的git客户端用于cargo fetchesCARGO_NET_GIT_FETCH_WITH_CLI=true cargo install --path .

Windows

  1. 下载rustup-init
  2. 克隆此存储库(例如,git clone https://github.com/tkellogg/dura.git
  3. 导航到存储库基本目录(cd dura
  4. 运行cargo install --path . 注意:如果您在获取Cargo依赖项时遇到失败,请尝试使用本地的git客户端用于cargo fetchesCARGO_NET_GIT_FETCH_WITH_CLI=true cargo install --path .

常见问题解答

这是否稳定?

它仍在原型阶段。与稳定性相关的问题被标记为稳定性标签。

这个检查更改的频率是多少?

偶尔检查,大约5秒左右。内部有一个控制循环,在迭代之间睡眠5秒,因此它的运行频率低于每5秒(如果有很多工作要做,可能远远低于每5秒)。

这在我的操作系统上工作吗?

  • Mac:是
  • Linux:可能是
  • Windows:是

我可以添加子命令和别名吗?

是的,路径上以 dura-{cmd} 命名的任何可执行文件都会在调用 dura {cmd} 时执行。例如,dura foo 将会尝试在 $PATH 上查找名为 dura-foo 的可执行文件。

依赖项

~19–28MB
~468K SLoC