diff --git a/CHANGELOG.md b/CHANGELOG.md index f9eab5c..81aac42 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,14 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [0.3.0] - 2026-06-25 + +### Added + +- **Porcelain `commit` command:** Added high-level `commit` command bridging the gap from plumbing to porcelain. +- **Refs Management:** Implemented branch pointer mutation and HEAD resolution. +- **Configurable Author:** Modified `commit` logic to read author and committer data from the `.git/config` file. + ## [0.2.0] - 2026-06-24 ### Added diff --git a/Cargo.lock b/Cargo.lock index d221598..0be7398 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -252,7 +252,7 @@ dependencies = [ [[package]] name = "git-rs" -version = "0.2.0" +version = "0.3.0" dependencies = [ "anyhow", "assert_cmd", diff --git a/Cargo.toml b/Cargo.toml index 9c0f7d2..4a8d045 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "git-rs" -version = "0.2.0" +version = "0.3.0" edition = "2021" authors = ["Fady Philip "] description = "A from-scratch implementation of Git's core object storage engine in Rust." diff --git a/README.md b/README.md index 31722f0..e0b2a67 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@

- Status + Status License

diff --git a/docs/04_commit_object_and_commit_tree.md b/docs/04_commit_object_and_commit_tree.md index f6de66d..55b643f 100644 --- a/docs/04_commit_object_and_commit_tree.md +++ b/docs/04_commit_object_and_commit_tree.md @@ -242,7 +242,7 @@ graph LR E --> F["History (DAG)"] ``` -The `commit-tree` command in `git-rs` currently uses hardcoded author/committer information for simplicity. In Phase 5, this will be configurable through Git's standard configuration mechanism (user.name, user.email) or environment variables. +The `commit-tree` command in `git-rs` used hardcoded author/committer information for simplicity in Phase 4. In Phase 5, this is configurable through Git's standard configuration mechanism (user.name, user.email). --- diff --git a/docs/05_dag_and_commit_serialization.md b/docs/05_dag_and_commit_serialization.md index 5b87437..0f7a2da 100644 --- a/docs/05_dag_and_commit_serialization.md +++ b/docs/05_dag_and_commit_serialization.md @@ -276,7 +276,7 @@ Fady 1718000000 +0000 | Cherry-pick | Alice (original author) | Bob (performed the cherry-pick) | | Rebase | Alice (original author) | Bob (performed the rebase) | -In `git-rs` Phase 4, author and committer are identical for simplicity. Phase 5 will support reading these from Git configuration or environment variables. +In `git-rs` Phase 4, author and committer are identical for simplicity. Phase 5 supports reading these from Git configuration. --- @@ -309,7 +309,7 @@ Even though there are 3 commits, `blob-a` and `blob-c` are each stored only once The `commit-tree` command in `git-rs` implements the following: 1. **Parses arguments** (tree hash, `-m` flag, message) -2. **Constructs a Commit struct** with hardcoded author info (Phase 5 will make this configurable) +2. **Constructs a Commit struct** with hardcoded author info (Phase 5 makes this configurable) 3. **Generates timestamp** using Unix epoch seconds 4. **Serializes the commit** to text with proper line endings 5. **Calls `write_object("commit", ...)`** to hash, compress, store, and return the hash