commit操作初版完成

This commit is contained in:
HouXiaoxuan
2023-12-21 02:14:59 +08:00
parent b560a3f302
commit ba7797ece1
3 changed files with 19 additions and 6 deletions

View File

@@ -1,5 +1,6 @@
use clap::{Parser, Subcommand};
use mit::commands::add::add;
use mit::commands::commit::commit;
use mit::commands::init::init;
/// Rust实现的简易版本的Git用于学习Rust语言
@@ -52,7 +53,7 @@ pub fn handle_command() {
Command::Init => {
let _ = init();
}
Command::Add { files , all, update} => {
Command::Add { files, all, update } => {
add(files, all, update);
}
Command::Rm { files, cached } => {
@@ -62,7 +63,7 @@ pub fn handle_command() {
message,
allow_empty,
} => {
println!("commit: {:?}, allow empty={:?}", message, allow_empty);
commit(message, allow_empty);
}
}
}

View File

@@ -1,16 +1,28 @@
use crate::head;
use crate::models::{commit, index};
// XXX NOT TESTED
pub fn commit(message: String, allow_enpty: bool) {
let index = index::Index::new();
// XXX true 需要替换为 index.is_empty()
if true && !allow_enpty {
if false && !allow_enpty {
println!("工作区没有任何改动,不需要提交");
}
let current_head = head::current_head();
let current_commit_hash = head::current_head_commit();
let mut commit = commit::Commit::new(&index, vec![current_commit_hash], message);
let mut commit =
commit::Commit::new(&index, vec![current_commit_hash.clone()], message.clone());
let commit_hash = commit.save();
head::update_head_commit(&commit_hash);
{
let commit_target = {
match current_head {
head::Head::Branch(branch_name) => branch_name,
head::Head::Detached(commit_hash) => commit_hash[..6].to_string(),
}
};
println!("commit to [{:?}] message{:?}", commit_target, message);
println!("commit hash: {:?}", commit_hash);
}
}

View File

@@ -5,7 +5,7 @@ pub enum Head {
Branch(String),
}
fn current_head() -> Head {
pub fn current_head() -> Head {
let mut head = util::get_storage_path().unwrap();
head.push("HEAD");
let head_content = std::fs::read_to_string(head).expect("HEAD文件损坏");