4 个版本 (2 个稳定版)

1.0.1 2024年5月19日
0.2.0 2024年3月4日
0.1.0 2024年1月27日

#git-clone 中排名 13

Download history 275/week @ 2024-05-17 27/week @ 2024-05-24 8/week @ 2024-07-05 50/week @ 2024-07-26 2/week @ 2024-08-02

每月下载量 52

MIT/Apache

91KB
2.5K SLoC

rgit: Rust 中实现的 git

codecov

这是一个受 James Coglan 的 Building Git 严重启发的简单 git 实现。这是一个正在进行中的工作,并且尚未完全功能化。这绝对不是原始 git 的替代品(尽管你可以用它来玩耍),而是一个了解 git 内部工作原理和更好地理解 Rust 的学习练习。

目前实现了以下命令

  1. rgit init <可选根目录>: 初始化一个新的 git 仓库
  2. rgit add <文件(s)>: 将文件(s)添加到暂存区
  3. rgit commit -m <信息>: 提交暂存文件
  4. rgit status: 显示工作目录的状态
  5. rgit diff: 显示工作目录和暂存区之间的差异
  6. 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