mirror of
https://github.com/MrBeanCpp/MIT.git
synced 2026-04-30 21:59:50 +08:00
commit操作初版完成
This commit is contained in:
@@ -1,5 +1,6 @@
|
|||||||
use clap::{Parser, Subcommand};
|
use clap::{Parser, Subcommand};
|
||||||
use mit::commands::add::add;
|
use mit::commands::add::add;
|
||||||
|
use mit::commands::commit::commit;
|
||||||
use mit::commands::init::init;
|
use mit::commands::init::init;
|
||||||
|
|
||||||
/// Rust实现的简易版本的Git,用于学习Rust语言
|
/// Rust实现的简易版本的Git,用于学习Rust语言
|
||||||
@@ -52,7 +53,7 @@ pub fn handle_command() {
|
|||||||
Command::Init => {
|
Command::Init => {
|
||||||
let _ = init();
|
let _ = init();
|
||||||
}
|
}
|
||||||
Command::Add { files , all, update} => {
|
Command::Add { files, all, update } => {
|
||||||
add(files, all, update);
|
add(files, all, update);
|
||||||
}
|
}
|
||||||
Command::Rm { files, cached } => {
|
Command::Rm { files, cached } => {
|
||||||
@@ -62,7 +63,7 @@ pub fn handle_command() {
|
|||||||
message,
|
message,
|
||||||
allow_empty,
|
allow_empty,
|
||||||
} => {
|
} => {
|
||||||
println!("commit: {:?}, allow empty={:?}", message, allow_empty);
|
commit(message, allow_empty);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,16 +1,28 @@
|
|||||||
use crate::head;
|
use crate::head;
|
||||||
use crate::models::{commit, index};
|
use crate::models::{commit, index};
|
||||||
// XXX NOT TESTED
|
|
||||||
pub fn commit(message: String, allow_enpty: bool) {
|
pub fn commit(message: String, allow_enpty: bool) {
|
||||||
let index = index::Index::new();
|
let index = index::Index::new();
|
||||||
// XXX true 需要替换为 index.is_empty()
|
// XXX true 需要替换为 index.is_empty()
|
||||||
if true && !allow_enpty {
|
if false && !allow_enpty {
|
||||||
println!("工作区没有任何改动,不需要提交");
|
println!("工作区没有任何改动,不需要提交");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let current_head = head::current_head();
|
||||||
let current_commit_hash = head::current_head_commit();
|
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();
|
let commit_hash = commit.save();
|
||||||
head::update_head_commit(&commit_hash);
|
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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ pub enum Head {
|
|||||||
Branch(String),
|
Branch(String),
|
||||||
}
|
}
|
||||||
|
|
||||||
fn current_head() -> Head {
|
pub fn current_head() -> Head {
|
||||||
let mut head = util::get_storage_path().unwrap();
|
let mut head = util::get_storage_path().unwrap();
|
||||||
head.push("HEAD");
|
head.push("HEAD");
|
||||||
let head_content = std::fs::read_to_string(head).expect("HEAD文件损坏");
|
let head_content = std::fs::read_to_string(head).expect("HEAD文件损坏");
|
||||||
|
|||||||
Reference in New Issue
Block a user