3 个不稳定版本
0.2.0 | 2022年7月10日 |
---|---|
0.2.0-rc1 | 2022年6月20日 |
0.1.0 | 2022年1月23日 |
#14 in #git-tool
48KB
969 代码行
杜拉
杜拉是一个后台进程,它会监视您的 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 log
或tig
来确定您想要回滚到的哪个提交。复制哈希值,然后运行类似以下命令的内容:
# 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安装
- 安装Cargo
- 如果您想运行发布版本,请输入
cargo install dura
,否则请输入cargo install --git https://github.com/tkellogg/dura
通过源代码
- 安装Rust(例如,
brew install rustup && brew install rust
) - 克隆此存储库(例如,
git clone https://github.com/tkellogg/dura.git
) - 导航到存储库基本目录(
cd dura
) - 运行
cargo install --path .
注意:如果您在获取Cargo依赖项时遇到失败,请尝试使用本地的git客户端用于cargo fetches。CARGO_NET_GIT_FETCH_WITH_CLI=true cargo install --path .
Windows
- 下载rustup-init
- 克隆此存储库(例如,
git clone https://github.com/tkellogg/dura.git
) - 导航到存储库基本目录(
cd dura
) - 运行
cargo install --path .
注意:如果您在获取Cargo依赖项时遇到失败,请尝试使用本地的git客户端用于cargo fetches。CARGO_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