From 2ec4b394920caa27661c2493fbc554c5b8459c98 Mon Sep 17 00:00:00 2001 From: mrbeanc Date: Tue, 2 Jan 2024 15:20:05 +0800 Subject: [PATCH] =?UTF-8?q?fix=EF=BC=9Astatus=E6=98=BE=E7=A4=BA=E6=89=80?= =?UTF-8?q?=E6=9C=89=E6=9B=B4=E6=94=B9=EF=BC=8C=E8=80=8C=E9=9D=9E=E4=BB=85?= =?UTF-8?q?=E5=BD=93=E5=89=8D=E7=9B=AE=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Cargo.toml | 2 +- src/commands/status.rs | 14 ++++++++++---- src/utils/util.rs | 1 + 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 5e4d743..0f41407 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "mit" # mini_git -version = "0.2.0" +version = "1.0.0" edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html diff --git a/src/commands/status.rs b/src/commands/status.rs index f2850c4..53dd279 100644 --- a/src/commands/status.rs +++ b/src/commands/status.rs @@ -31,8 +31,9 @@ impl Changes { } /// 使用paths过滤,返回相对路径(to cur_dir) + ///
注意,如果paths为空,则返回空 pub fn filter_relative(&self, paths: &Vec) -> Changes { - self.filter_abs(paths).to_relative() + self.filter_abs(paths).to_relative_from_abs() } /// 转换为绝对路径(from workdir相对路径) @@ -51,7 +52,7 @@ impl Changes { } /// 转换为相对路径(to cur_dir)注意:要先转换为绝对路径 - fn to_relative(&self) -> Changes { + fn to_relative_from_abs(&self) -> Changes { let mut change = self.clone(); let cur_dir = util::cur_dir(); [&mut change.new, &mut change.modified, &mut change.deleted] @@ -61,6 +62,11 @@ impl Changes { }); change } + + ///转换为相对路径(to cur_dir) + pub fn to_relative(&self) -> Changes { + self.to_absolute().to_relative_from_abs() + } } /** 比较暂存区与HEAD(最后一次Commit::Tree)的差异 @@ -147,8 +153,8 @@ pub fn status() { } // 对当前目录进行过滤 & 转换为相对路径 - let staged = changes_to_be_committed().filter_relative(&vec![util::cur_dir()]); - let unstaged = changes_to_be_staged().filter_relative(&vec![util::cur_dir()]); + let staged = changes_to_be_committed().to_relative(); + let unstaged = changes_to_be_staged().to_relative(); if staged.is_empty() && unstaged.is_empty() { println!("nothing to commit, working tree clean"); return; diff --git a/src/utils/util.rs b/src/utils/util.rs index 071afab..aaabf61 100644 --- a/src/utils/util.rs +++ b/src/utils/util.rs @@ -77,6 +77,7 @@ pub fn is_sub_path(path: &Path, parent: &Path) -> bool { } /// 判断文件是否在paths中(包括子目录),不检查存在性 +///
注意,如果paths为空,则返回false pub fn include_in_paths(path: &Path, paths: U) -> bool where T: AsRef,