Skip to content

Comments

Update README.md compare with git#65

Merged
genedna merged 1 commit intoweb3infra-foundation:mainfrom
genedna:main
Nov 24, 2025
Merged

Update README.md compare with git#65
genedna merged 1 commit intoweb3infra-foundation:mainfrom
genedna:main

Conversation

@genedna
Copy link
Member

@genedna genedna commented Nov 24, 2025

No description provided.

Signed-off-by: Eli Ma <eli@patch.sh>
Copilot AI review requested due to automatic review settings November 24, 2025 13:41
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR transforms the README's Git compatibility documentation from a simple checklist format into comprehensive comparison tables. The new format adds explicit status indicators (✅ implemented, ⚠️ differs from Git, ⛔ not implemented) and priority levels (P0/P1/P2) for unimplemented features, making it easier to track Libra's Git compatibility and prioritize development work.

Key Changes

  • Replaced flat bullet-point checklist with structured comparison tables organized by functional area (Repository Setup, Working Tree & Index, Commit & History, etc.)
  • Added detailed status markers and priority levels for each command option
  • Included Git comparison column and notes explaining behavioral differences or implementation gaps

| | `-d, --delete <branch>` | Yes | No | ⛔ | P1 | Safe delete (refuse if unmerged) |
| | `-u, --set-upstream-to <upstream>` | Yes | Yes | ✅ | - | Set upstream tracking branch |
| | `--show-current` | Yes | Yes | ✅ | - | Show current branch |
| | `-m, --move [OLD] [NEW]` | Yes | Yes | ✅ | - | Rename branches |
Copy link

Copilot AI Nov 24, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Status inconsistency: The -m, --move [OLD] [NEW] option is marked as implemented (✅), but the original checklist showed both -m, --move <old> <new> and -M, --move --force <old> <new> as not implemented ([ ]). Please verify this feature was implemented, or update the status to ⛔. Also, the -M (force move) variant is not listed in the table.

Suggested change
| | `-m, --move [OLD] [NEW]` | Yes | Yes | | - | Rename branches |
| | `-m, --move <old> <new>` | Yes | No | | P1 | Rename branches |

Copilot uses AI. Check for mistakes.
| | `--show-current` | Yes | Yes | ✅ | - | Show current branch |
| | `-m, --move [OLD] [NEW]` | Yes | Yes | ✅ | - | Rename branches |
| | `-r, --remotes` | Yes | Yes | ✅ | - | List remote branches |
| | `-a, --all` | Yes | Yes | ✅ | - | List all branches |
Copy link

Copilot AI Nov 24, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The table shows -a, --all for branch listing as implemented (✅), but the original checklist showed this option as not implemented ([ ]) at line 179. Please verify if this feature was actually implemented or if the status should be ⛔.

Suggested change
| | `-a, --all` | Yes | Yes | | - | List all branches |
| | `-a, --all` | Yes | No | | P1 | List all branches |

Copilot uses AI. Check for mistakes.
Comment on lines +249 to +254
| `remote` | `add <name> <url>` | Yes | Yes | ✅ | - | Add remote |
| | `remove <name>` (Git: `rm`) | Yes | Yes | ✅ | - | Remove remote |
| | `rename <old> <new>` | Yes | Yes | ✅ | - | Rename remote |
| | `-v` (list with URLs) | Yes | Yes | ✅ | - | List remotes verbosely |
| | `show` | Yes | Yes | ✅ | - | Show remote details |
| | `get-url <name> [--push\|--all]` | Yes | Yes | ✅ | - | Print configured URLs |
Copy link

Copilot AI Nov 24, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The remote command shows several subcommands (add, remove, rename, show, get-url) as implemented (✅), but these were not present in the original checklist at all. The original checklist (lines 268-282) showed all remote subcommands as not implemented ([ ]). Please verify these implementations exist or mark them with appropriate status.

Suggested change
| `remote` | `add <name> <url>` | Yes | Yes | | - | Add remote |
| | `remove <name>` (Git: `rm`) | Yes | Yes | | - | Remove remote |
| | `rename <old> <new>` | Yes | Yes | | - | Rename remote |
| | `-v` (list with URLs) | Yes | Yes | | - | List remotes verbosely |
| | `show` | Yes | Yes | | - | Show remote details |
| | `get-url <name> [--push\|--all]` | Yes | Yes | | - | Print configured URLs |
| `remote` | `add <name> <url>` | Yes | No | | P0 | Add remote |
| | `remove <name>` (Git: `rm`) | Yes | No | | P0 | Remove remote |
| | `rename <old> <new>` | Yes | No | | P1 | Rename remote |
| | `-v` (list with URLs) | Yes | No | | P1 | List remotes verbosely |
| | `show` | Yes | No | | P1 | Show remote details |
| | `get-url <name> [--push\|--all]` | Yes | No | | P1 | Print configured URLs |

Copilot uses AI. Check for mistakes.
| | `--multiple` | Yes | No | ⛔ | P2 | Fetch from multiple remotes |
| `pull` | `<repository> <refspec>` | Yes | Yes | ✅ | - | Fetch and integrate |
| | `--rebase` | Yes | No | ⛔ | P0 | `pull --rebase` workflow |
| | `--ff-only / --no-ff` | Yes | No | ⛔ | P0 | Control merge mode on pull |
Copy link

Copilot AI Nov 24, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Incomplete pull options: The table shows only 3 rows for pull (basic usage, --rebase, and --ff-only / --no-ff), but the original checklist (lines 322-327) included additional options like --squash and --strategy <name> that are missing from the new table. For completeness, include all options with appropriate status markers.

Suggested change
| | `--ff-only / --no-ff` | Yes | No || P0 | Control merge mode on pull |
| | `--ff-only / --no-ff` | Yes | No || P0 | Control merge mode on pull |
| | `--squash` | Yes | No || P1 | Squash all commits into one on merge |
| | `--strategy <name>` | Yes | No || P2 | Select merge strategy (e.g., recursive, resolve) |

Copilot uses AI. Check for mistakes.
| | `-q, --quiet` | Yes | Yes | ✅ | - | Suppress output |
| | `--shared <perm>` | Yes | Yes | ⚠️ | P1 | Supported, but effective semantics may differ from Git in edge cases |
| | `--separate-git-dir <dir>` | Yes | No | ⛔ | P1 | Separate `.git` directory; useful for advanced layouts |
| | `--object-format <alg>` | Yes | No | ⛔ | P0 | Important for SHA‑1/SHA‑256 migration/compatibility |
Copy link

Copilot AI Nov 24, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Inconsistent hyphen usage: "SHA‑1" and "SHA‑256" use non-breaking hyphens (U+2011) instead of regular hyphens or ASCII dashes. For consistency and searchability, consider using standard ASCII hyphens "SHA-1" and "SHA-256" throughout the document.

Suggested change
| | `--object-format <alg>` | Yes | No || P0 | Important for SHA1/SHA256 migration/compatibility |
| | `--object-format <alg>` | Yes | No || P0 | Important for SHA-1/SHA-256 migration/compatibility |

Copilot uses AI. Check for mistakes.
Comment on lines +114 to +299
| | `--chmod=(+x\|-x)` | Yes | No | ⛔ | P1 | Toggle executable bit |
| | `--renormalize` | Yes | No | ⛔ | P2 | Re‑normalize line endings / attributes |
| `rm` | `<pathspec...>` | Yes | Yes | ✅ | - | Remove files |
| | `--cached` | Yes | Yes | ✅ | - | Remove only from index |
| | `-r, --recursive` | Yes | Yes | ✅ | - | Recurse into directories |
| | `-f, --force` | Yes | Yes | ✅ | - | Force removal |
| | `--dry-run` | Yes | Yes | ✅ | - | Show what would be removed |
| | `--ignore-unmatch` | Yes | No | ⛔ | P0 | Don’t error if paths don’t match; important for scripts |
| | `--pathspec-from-file <file>` | Yes | No | ⛔ | P1 | Read pathspecs from file |
| | `--pathspec-file-nul` | Yes | No | ⛔ | P1 | NUL‑separated pathspec file |
| `restore` | `<pathspec...>` | Yes | Yes | ✅ | - | Restore paths |
| | `-s, --source <commit>` | Yes | Yes | ✅ | - | Restore from specific commit |
| | `-W, --worktree` | Yes | Yes | ✅ | - | Restore working tree only |
| | `-S, --staged` | Yes | Yes | ✅ | - | Restore index (staged) state |
| `status` | `--porcelain` | Yes | Yes | ✅ | - | Machine‑readable output |
| | `-s, --short` | Yes | Yes | ✅ | - | Short format |
| | `--branch` | Yes | Yes | ✅ | - | Show branch info |
| | `--ignored` | Yes | Yes | ✅ | - | Show ignored files |
| | `--untracked-files[=no\|normal\|all]` | Yes | No | ⛔ | P0 | Control visibility of untracked files |
| | `--show-stash` | No | Yes | ⚠️ | P1 | Libra extension; only in standard mode |

---

### Commit & History: `commit`, `log`, `tag`, `show`, `reflog`

| Command | Option / Form | Git | Libra | Status | Priority (for ⛔) | Notes |
| --- | --- | --- | --- | --- | --- | --- |
| `commit` | `-m, --message <msg>` | Yes | Yes | ✅ | - | Commit message |
| | `-F, --file <path>` | Yes | Yes | ✅ | - | Read message from file |
| | `--allow-empty` | Yes | Yes | ✅ | - | Allow empty commit |
| | `--conventional` | No | Yes | ⚠️ | P1 | Libra extension for conventional commits |
| | `--amend` | Yes | Yes | ✅ | - | Amend previous commit |
| | `-s, --signoff` | Yes | Yes | ✅ | - | Add Signed-off-by |
| | `--disable-pre` | Approx. `--no-verify` | Yes | ⚠️ | P0 | Behavior should be aligned with Git hook semantics as much as possible |
| | `-a, --all` | Yes | Yes | ✅ | - | Auto‑stage tracked changes |
| | `-p, --patch` | Yes | No | ⛔ | P1 | Patch‑mode commit (often paired with `add -p`) |
| | `--no-verify` | Yes | No | ⛔ | P0 | Standard way to skip hooks; should coexist with or alias `--disable-pre` |
| | `--no-edit` | Yes | No | ⛔ | P1 | Reuse previous message |
| | `--author <name>` | Yes | No | ⛔ | P0 | Override author identity |
| | `--date <when>` | Yes | No | ⛔ | P0 | Override author date |
| | `-S, --gpg-sign` / `--no-gpg-sign` | Yes | No | ⛔ | P1 | GPG signing support |
| `log` | `-n, --number <n>` | Yes | Yes | ✅ | - | Limit number of commits |
| | `--oneline` | Yes | Yes | ✅ | - | One‑line output |
| | `-p, --patch` | Yes | Yes | ✅ | - | Show patch |
| | `--decorate / --no-decorate` | Yes | Yes | ✅ | - | Show/hide ref decorations |
| | `[pathspec]` | Yes | Yes | ✅ | - | Restrict to paths |
| | `--graph` | Yes | Yes | ✅ | - | ASCII commit graph |
| | `--pretty=<format>` | Yes | No | ⛔ | P0 | Customizable formatting; heavily used in tooling |
| | `--abbrev-commit` | Yes | No | ⛔ | P1 | Shorten commit IDs |
| | `--name-only / --name-status` | Yes | No | ⛔ | P0 | Show changed files, with or without status |
| | `--stat` | Yes | Yes | ✅ | - | Diffstat summary |
| | `--since <date> / --until <date>` | Yes | No | ⛔ | P0 | Time‑based filtering |
| | `--author <pattern>` | Yes | No | ⛔ | P0 | Author‑based filtering |
| `tag` | `<name>` | Yes | Yes | ✅ | - | Lightweight tag |
| | `-l, --list [pattern]` | Yes | Yes | ✅ | - | List tags |
| | `-d, --delete <name>` | Yes | Yes | ✅ | - | Delete tags |
| | `-m, --message <msg>` | Yes | Yes | ✅ | - | Annotated tag message |
| | `-f, --force` | Yes | Yes | ✅ | - | Force re‑tag |
| | `-a` | Yes | No | ⛔ | P0 | Explicit annotated tag |
| | `-s, --sign` | Yes | No | ⛔ | P1 | GPG‑signed tags |
| | `-u <keyid>` | Yes | No | ⛔ | P1 | Select signing key |
| | `-n <n>` | Yes | No | ⛔ | P2 | Show annotation lines |
| | `-v, --verify` | Yes | No | ⛔ | P1 | Verify tag signatures |
| `show` | (basic usage) | Yes | Yes | ⚠️ | P1 | Core behavior implemented; detailed flag parity needs further audit |
| `reflog` | `show [--pretty=<fmt>]` | Yes | Yes | ⚠️ | P1 | Supported; `--pretty` formatting parity may not be full Git parity |
| | `delete <selectors...>` | Yes | Yes | ✅ | - | Delete reflog entries |
| | `exists <ref>` | Yes | Yes | ✅ | - | Check reflog presence |
| | `expire [--expire=<time>]` | Yes | No | ⛔ | P1 | Cleanup policy for reflogs |

---

### Branching & Checkout: `branch`, `switch`, `checkout`

| Command | Option / Form | Git | Libra | Status | Priority (for ⛔) | Notes |
| --- | --- | --- | --- | --- | --- | --- |
| `branch` | `<new_branch> [commit_hash]` | Yes | Yes | ✅ | - | Create branch from commit or HEAD |
| | `-D, --delete <branch>` | Yes | Yes | ✅ | - | Force delete branch |
| | `-d, --delete <branch>` | Yes | No | ⛔ | P1 | Safe delete (refuse if unmerged) |
| | `-u, --set-upstream-to <upstream>` | Yes | Yes | ✅ | - | Set upstream tracking branch |
| | `--show-current` | Yes | Yes | ✅ | - | Show current branch |
| | `-m, --move [OLD] [NEW]` | Yes | Yes | ✅ | - | Rename branches |
| | `-r, --remotes` | Yes | Yes | ✅ | - | List remote branches |
| | `-a, --all` | Yes | Yes | ✅ | - | List all branches |
| | `--contains <commit>` | Yes | No | ⛔ | P1 | Useful for branch cleanup and queries |
| | `--merged / --no-merged` | Yes | No | ⛔ | P1 | Check merge status into current HEAD |
| `switch` | `<branch>` | Yes | Yes | ✅ | - | Switch to branch |
| | `-c, --create <new_branch>` | Yes | Yes | ✅ | - | Create and switch |
| | `-d, --detach` | Yes | Yes | ✅ | - | Detach HEAD |
| | `-C, --force-create <branch>` | Yes | No | ⛔ | P1 | Force re‑create branch |
| | `--guess / --no-guess` | Yes | No | ⛔ | P2 | Heuristic branch name guessing |
| | `--track` | Yes | No | ⛔ | P0 | Auto set upstream when switching to remote branch |
| | `--merge` | Yes | No | ⛔ | P2 | Merge mode on switch |
| | `--conflict=<style>` | Yes | No | ⛔ | P2 | Conflict marker style |
| `checkout` | `<branch>` | Yes | Yes | ✅ | - | Checkout existing branch |
| | `-b <new_branch> [start-point]` | Yes | Yes | ✅ | - | Create and checkout branch |
| | `-B <new_branch> [start-point]` | Yes | No | ⛔ | P1 | Force re‑create branch at start‑point |
| | `--detach` | Yes | No | ⛔ | P1 | Detach HEAD at given ref |
| | `-f, --force` | Yes | No | ⛔ | P1 | Discard local changes when switching |

---

### Advanced History Operations: `merge`, `rebase`, `cherry-pick`, `revert`

| Command | Option / Form | Git | Libra | Status | Priority (for ⛔) | Notes |
| --- | --- | --- | --- | --- | --- | --- |
| `merge` | `<branch>` | Yes | Yes | ✅ | - | Basic merge of given branch |
| | `--no-ff / --ff-only` | Yes | No | ⛔ | P0 | Control merge topology (no‑ff, fast‑forward only) |
| | `--squash` | Yes | No | ⛔ | P0 | Squash merges into a single commit |
| | `--commit / --no-commit` | Yes | No | ⛔ | P1 | Whether to auto‑commit after merge |
| | `-m, --message <msg>` | Yes | No | ⛔ | P1 | Specify merge commit message |
| | `--strategy <name>` | Yes | No | ⛔ | P1 | Select merge strategy (e.g. `ort`, `recursive`) |
| | `--strategy-option <opt>` | Yes | No | ⛔ | P2 | Fine‑tune chosen strategy |
| `rebase` | `<upstream>` | Yes | Yes | ✅ | - | Basic rebase onto upstream |
| | `-i, --interactive` | Yes | No | ⛔ | P1 | Interactive rebase (edit/reorder/squash) |
| | `--onto <newbase>` | Yes | No | ⛔ | P1 | Rebase onto different base |
| | `--autostash` | Yes | No | ⛔ | P1 | Stash/unstash automatically around rebase |
| | `--continue / --abort / --skip` | Yes | No | ⛔ | P0 | Essential state machine for resolving rebase conflicts |
| `cherry-pick` | `<commits...>` | Yes | Yes | ✅ | - | Apply one or more commits |
| | `-n, --no-commit` | Yes | Yes | ✅ | - | Don’t create commit automatically |
| | `-x` | Yes | No | ⛔ | P1 | Append “(cherry picked from …)” |
| | `-e, --edit` | Yes | No | ⛔ | P1 | Edit commit message |
| | `-m, --mainline <parent>` | Yes | No | ⛔ | P1 | Specify parent for merge commits |
| | `--continue / --abort / --quit` | Yes | No | ⛔ | P0 | Workflow control after conflicts |
| `revert` | `<commit>` | Yes | Yes | ✅ | - | Revert single commit |
| | `-n, --no-commit` | Yes | Yes | ✅ | - | Don’t auto‑commit |
| | `--edit / --no-edit` | Yes | No | ⛔ | P1 | Edit or reuse default message |
| | `-m, --mainline <parent>` | Yes | No | ⛔ | P1 | Revert merge commits |
| | `--continue / --abort / --quit` | Yes | No | ⛔ | P0 | Multi‑commit revert / conflict handling |

---

### Remote & Network: `remote`, `push`, `fetch`, `pull`, `lfs`

| Command | Option / Form | Git / Git LFS | Libra | Status | Priority (for ⛔) | Notes |
| --- | --- | --- | --- | --- | --- | --- |
| `remote` | `add <name> <url>` | Yes | Yes | ✅ | - | Add remote |
| | `remove <name>` (Git: `rm`) | Yes | Yes | ✅ | - | Remove remote |
| | `rename <old> <new>` | Yes | Yes | ✅ | - | Rename remote |
| | `-v` (list with URLs) | Yes | Yes | ✅ | - | List remotes verbosely |
| | `show` | Yes | Yes | ✅ | - | Show remote details |
| | `get-url <name> [--push\|--all]` | Yes | Yes | ✅ | - | Print configured URLs |
| | `set-url <name> <newurl> [--add] [--delete] [--push] [--all]` | Yes | Partial | ⛔ | P1 | Advanced URL management; basic `set-url` support is P0 |
| | `prune <name>` | Yes | No | ⛔ | P1 | Prune stale remote-tracking refs |
| | `update [<group>\|<remotes>...]` | Yes | No | ⛔ | P2 | Batch remote updates |
| `push` | `<repository> <refspec>` | Yes | Yes | ✅ | - | Basic push |
| | `-u, --set-upstream` | Yes | Yes | ✅ | - | Set upstream on push |
| | `--force` | Yes | No | ⛔ | P0 | Force push (use carefully) |
| | `--force-with-lease` | Yes | No | ⛔ | P0 | Safer force push; strongly recommended over bare `--force` |
| | `--tags / --all` | Yes | No | ⛔ | P1 | Push all tags / all branches |
| | `--delete` | Yes | No | ⛔ | P1 | Delete remote ref |
| | `--dry-run` | Yes | No | ⛔ | P2 | Simulate push |
| `fetch` | `[<repository>] [<refspec>]` | Yes | Yes | ✅ | - | Basic fetch |
| | `-a, --all` | Yes | Yes | ✅ | - | Fetch from all remotes |
| | `--tags` | Yes | No | ⛔ | P1 | Fetch all tags |
| | `--prune` | Yes | No | ⛔ | P0 | Prune removed remote branches |
| | `--force` | Yes | No | ⛔ | P1 | Force update of local refs |
| | `--depth <n> / --shallow-exclude <ref>` | Yes | No | ⛔ | P0 | Shallow fetch; crucial for large repos |
| | `--multiple` | Yes | No | ⛔ | P2 | Fetch from multiple remotes |
| `pull` | `<repository> <refspec>` | Yes | Yes | ✅ | - | Fetch and integrate |
| | `--rebase` | Yes | No | ⛔ | P0 | `pull --rebase` workflow |
| | `--ff-only / --no-ff` | Yes | No | ⛔ | P0 | Control merge mode on pull |
| `lfs` | `track` / `untrack` | Yes (Git LFS) | Yes | ✅ | - | LFS tracking configuration |
| | `locks` / `lock` / `unlock` | Yes | Yes | ✅ | - | LFS locking |
| | `install / uninstall` | Yes | No | ⛔ | P1 | Install LFS filters/hooks |
| | `fetch / pull / push` | Yes | No | ⛔ | P0 | Transfer LFS objects with remotes |
| | `ls-files` | Yes | No | ⛔ | P1 | List LFS‑tracked files |
| | `env / version` | Yes | No | ⛔ | P2 | Diagnostic info |

---

### Configuration & Maintenance: `config`, `index-pack`

| Command | Option / Form | Git | Libra | Status | Priority (for ⛔) | Notes |
| --- | --- | --- | --- | --- | --- | --- |
| `config` | `--add <name> <value>` | Yes | Yes | ✅ | - | Add config entry |
| | `--get <name>` | Yes | Yes | ✅ | - | Get single value |
| | `--get-all <name>` | Yes | Yes | ✅ | - | Get all values |
| | `--unset <name>` | Yes | Yes | ✅ | - | Remove entry |
| | `--unset-all <name>` | Yes | Yes | ✅ | - | Remove all entries |
| | `-l, --list` | Yes | Yes | ✅ | - | List config |
| | `--name-only` | Yes | Yes | ✅ | - | Show names only |
| | `-d, --default <value>` | Yes | Yes | ✅ | - | Default value if missing |
| | `--global / --system / --local` | Yes | No | ⛔ | P0 | Select config scope (system/global/repo) |
| | `--file <path>` | Yes | No | ⛔ | P1 | Use explicit config file |
| | `--replace-all` | Yes | No | ⛔ | P1 | Replace all matching entries |
| | `--type=<bool\|int\|path>` | Yes | No | ⛔ | P2 | Typed config parsing |
Copy link

Copilot AI Nov 24, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Inconsistent option description format: Most options use escaped pipes \| in the description (e.g., --chmod=(+x\|-x) on line 114), but some use unescaped pipes (e.g., --untracked-files[=no\|normal\|all] on line 132). For consistency, use the same escaping pattern throughout all tables.

Copilot uses AI. Check for mistakes.
Comment on lines +309 to +315
This section is intended to be kept up to date as new flags and commands are implemented. When implementing a new option:

1. Mark the README checklist for that command as `[x]`.
2. Update the corresponding row here:
- Change Libra to “Yes”.
- Update **Status** from ⛔ to ✅ or ⚠️ as appropriate.
- Clear or adjust the **Priority** field.
Copy link

Copilot AI Nov 24, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Missing Git comparison: The original checklist included sections "### Others" (lines 334-337) covering .gitignore, .gitattributes, LFS, and ssh support. These items are not represented in the new table format. Consider adding a table section for these features or documenting them elsewhere in the README.

Suggested change
This section is intended to be kept up to date as new flags and commands are implemented. When implementing a new option:
1. Mark the README checklist for that command as `[x]`.
2. Update the corresponding row here:
- Change Libra to “Yes”.
- Update **Status** from ⛔ to ✅ or ⚠️ as appropriate.
- Clear or adjust the **Priority** field.
### Other Git Features
| Feature | Git | Libra | Status | Notes |
|-------------------|-----|-------|--------|-------|
| `.gitignore` | Yes | No || Not yet implemented |
| `.gitattributes` | Yes | No || Not yet implemented |
| LFS (Large File Storage) | Yes | No || Not yet implemented |
| SSH support | Yes | No || Not yet implemented |
This section is intended to be kept up to date as new features are implemented. When implementing a new feature:
1. Mark the README checklist for that feature as `[x]`.
2. Update the corresponding row here:
- Change Libra to “Yes”.
- Update **Status** from ⛔ to ✅ or ⚠️ as appropriate.
- Add or update the **Notes** field.

Copilot uses AI. Check for mistakes.

---

### Remote & Network: `remote`, `push`, `fetch`, `pull`, `lfs`
Copy link

Copilot AI Nov 24, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[nitpick] Inconsistent table structure: The "Remote & Network" section combines Git and Git LFS in the "Git / Git LFS" column header (line 247), but other tables only reference "Git". For consistency, either separate LFS into its own table or clarify in the section title that it includes Git LFS features.

Suggested change
### Remote & Network: `remote`, `push`, `fetch`, `pull`, `lfs`
### Remote & Network (Git & Git LFS): `remote`, `push`, `fetch`, `pull`, `lfs`

Copilot uses AI. Check for mistakes.
Comment on lines +99 to +135
### Working Tree & Index: `add`, `rm`, `restore`, `status`

| Command | Option / Form | Git | Libra | Status | Priority (for ⛔) | Notes |
| --- | --- | --- | --- | --- | --- | --- |
| `add` | `<pathspec...>` | Yes | Yes | ✅ | - | Add files matching pathspec |
| | `-A, --all` | Yes | Yes | ✅ | - | Add all changes (tracked + untracked) |
| | `-u, --update` | Yes | Yes | ✅ | - | Add only tracked changes |
| | `--refresh` | Yes | Yes | ✅ | - | Refresh the index stat info |
| | `-v, --verbose` | Yes | Yes | ✅ | - | Verbose output |
| | `-n, --dry-run` | Yes | Yes | ✅ | - | Show what would be added |
| | `--ignore-errors` | Yes | Yes | ✅ | - | Continue even if some paths fail |
| | `-f, --force` | Yes | Yes | ✅ | - | Add ignored files |
| | `-p, --patch` | Yes | No | ⛔ | P0 | Interactive hunk selection; core to many workflows |
| | `-i, --interactive` | Yes | No | ⛔ | P0 | Interactive mode (`git add -i`) |
| | `-N, --intent-to-add` | Yes | No | ⛔ | P1 | Mark paths as “to be added” later |
| | `--chmod=(+x\|-x)` | Yes | No | ⛔ | P1 | Toggle executable bit |
| | `--renormalize` | Yes | No | ⛔ | P2 | Re‑normalize line endings / attributes |
| `rm` | `<pathspec...>` | Yes | Yes | ✅ | - | Remove files |
| | `--cached` | Yes | Yes | ✅ | - | Remove only from index |
| | `-r, --recursive` | Yes | Yes | ✅ | - | Recurse into directories |
| | `-f, --force` | Yes | Yes | ✅ | - | Force removal |
| | `--dry-run` | Yes | Yes | ✅ | - | Show what would be removed |
| | `--ignore-unmatch` | Yes | No | ⛔ | P0 | Don’t error if paths don’t match; important for scripts |
| | `--pathspec-from-file <file>` | Yes | No | ⛔ | P1 | Read pathspecs from file |
| | `--pathspec-file-nul` | Yes | No | ⛔ | P1 | NUL‑separated pathspec file |
| `restore` | `<pathspec...>` | Yes | Yes | ✅ | - | Restore paths |
| | `-s, --source <commit>` | Yes | Yes | ✅ | - | Restore from specific commit |
| | `-W, --worktree` | Yes | Yes | ✅ | - | Restore working tree only |
| | `-S, --staged` | Yes | Yes | ✅ | - | Restore index (staged) state |
| `status` | `--porcelain` | Yes | Yes | ✅ | - | Machine‑readable output |
| | `-s, --short` | Yes | Yes | ✅ | - | Short format |
| | `--branch` | Yes | Yes | ✅ | - | Show branch info |
| | `--ignored` | Yes | Yes | ✅ | - | Show ignored files |
| | `--untracked-files[=no\|normal\|all]` | Yes | No | ⛔ | P0 | Control visibility of untracked files |
| | `--show-stash` | No | Yes | ⚠️ | P1 | Libra extension; only in standard mode |

---
Copy link

Copilot AI Nov 24, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Missing reset and diff commands: The original checklist included reset (lines 201-209) and diff (lines 211-224) commands, but these are not present in the new table format. These are core Git commands and should be included in the comparison tables, likely in the "Working Tree & Index" or "Commit & History" sections.

Copilot uses AI. Check for mistakes.
| `restore` | `<pathspec...>` | Yes | Yes | ✅ | - | Restore paths |
| | `-s, --source <commit>` | Yes | Yes | ✅ | - | Restore from specific commit |
| | `-W, --worktree` | Yes | Yes | ✅ | - | Restore working tree only |
| | `-S, --staged` | Yes | Yes | ✅ | - | Restore index (staged) state |
Copy link

Copilot AI Nov 24, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Incomplete restore options: The table shows only 3 options for restore, but the original checklist (lines 191-199) included several more options like -p, --patch, --ignore-unmerged, --merge, and --conflict=<style>. While some are marked as not implemented, the table is missing these entries entirely. For completeness, all options from the original checklist should be represented with appropriate status markers.

Suggested change
| | `-S, --staged` | Yes | Yes || - | Restore index (staged) state |
| | `-S, --staged` | Yes | Yes || - | Restore index (staged) state |
| | `-p, --patch` | Yes | No || P2 | Interactive patch mode (not implemented) |
| | `--ignore-unmerged` | Yes | No || P2 | Ignore unmerged entries (not implemented) |
| | `--merge` | Yes | No || P2 | Restore with merge (not implemented) |
| | `--conflict=<style>` | Yes | No || P2 | Conflict style: merge, diff3, etc. (not implemented) |

Copilot uses AI. Check for mistakes.
@genedna genedna merged commit b7c2a29 into web3infra-foundation:main Nov 24, 2025
11 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant