4 个版本 (2 个稳定版)
1.0.1 | 2024年5月19日 |
---|---|
0.2.0 | 2024年3月4日 |
0.1.0 | 2024年1月27日 |
在 #git-clone 中排名 13
每月下载量 52
91KB
2.5K SLoC
rgit: Rust 中实现的 git
这是一个受 James Coglan 的 Building Git 严重启发的简单 git 实现。这是一个正在进行中的工作,并且尚未完全功能化。这绝对不是原始 git 的替代品(尽管你可以用它来玩耍),而是一个了解 git 内部工作原理和更好地理解 Rust 的学习练习。
目前实现了以下命令
rgit init <可选根目录>
: 初始化一个新的 git 仓库rgit add <文件(s)>
: 将文件(s)添加到暂存区rgit commit -m <信息>
: 提交暂存文件rgit status
: 显示工作目录的状态rgit diff
: 显示工作目录和暂存区之间的差异rgit diff --cached
: 显示暂存区和最后一次提交之间的差异
注意:要使提交命令工作,您需要设置以下环境变量
export RGIT_AUTHOR_NAME="Your Name"
export RGIT_AUTHOR_EMAIL="[email protected]"
这是因为提交命令会从这些环境变量中提取作者姓名和电子邮件地址。
安装
要安装 rgit
,克隆仓库并运行以下命令
cargo build --release
这将在 target/release
目录中创建一个可执行文件。然后您可以将其目录添加到您的 PATH
,以便在任何地方使用 rgit
,如下所示
export PATH=$PATH:/path/to/rgit/target/release/r_git
用法
~/test_rgit git:(master) ✗ rgit
r_git 1.0.0
Chandra Kiran G
A simple git clone written in Rust
Usage:
r_git <COMMAND>
Commands:
init Initialize a new git repository
commit Commit the changes in the working tree
status Show the working tree status
add Add file contents to the index
diff Show diff
help Print this message or the help of the given subcommand(s)
Options:
-h, --help Print help
-V, --version Print version
本地开发
要运行测试,请使用以下命令
cargo test -- --test-threads=1
这是必要的,因为少数测试修改了相同的仓库,并且并发运行,这可能会引起问题。 --test-threads=1
标志确保测试顺序运行。
依赖关系
~9–22MB
~218K SLoC