Block-level version control for markdown files. Track changes at the heading level, not just file level.
- Block-level tracking: Version control at heading granularity
- Frontmatter support: Control versioning with YAML frontmatter (tags, title, enabled flag)
- Smart commits: Only commits changed blocks
- Block restoration: Restore individual sections without affecting the entire file
- Rich diffs: See exactly which sections changed
Build from source:
gradle buildThe executable will be in build/install/notevc/bin/notevc
These options work with any command and should be placed before the command name:
--no-color: Disable colored output
Examples:
notevc --no-color status
notevc --no-color diff
notevc --no-color log --oneline
notevc --no-color show a1b2c3d4Alternative methods to disable colors:
- Set
NO_COLOR=1environment variable:NO_COLOR=1 notevc status - Pipe output:
notevc status | less(colors auto-disabled) - CI environments automatically disable colors
Initialize a new notevc repository in the current or specified directory.
notevc init # Initialize in current directory
notevc init ./notes # Initialize in specific directoryShow the status of tracked files and which blocks have changed.
notevc statusCreate a commit (snapshot) of changed files.
Options:
--file <file>: Commit only a specific file
Examples:
notevc commit "Added new features" # Commit all changed files
notevc commit --file notes.md "Updated notes" # Commit specific fileShow commit history with details.
Options:
--max-count <n>or-n <n>: Limit number of commits shown--since <time>: Show commits since specified time (e.g., "1h", "2d", "1w")--oneline: Show compact one-line format--fileor-f [file]: Show file and block details for each commit
Examples:
notevc log # Show all commits
notevc log --max-count 5 # Show last 5 commits
notevc log --since 1d # Show commits from last day
notevc log --oneline # Compact format
notevc log --file # Show with file details
notevc log --file notes.md # Show commits affecting specific file
notevc log --file --oneline # Compact format with file infoShow detailed information about a specific commit, including block/file contents.
Options:
--file <file>: Show changes only for specific file--block <block-hash>or-b <block-hash>: Show specific block content--contentor-c: Show full file content at commit
Examples:
notevc show a1b2c3d4 # Show commit details
notevc show a1b2c3d4 --file notes.md # Show changes to specific file
notevc show a1b2c3d4 --file notes.md --content # Show full file content
notevc show a1b2c3d4 --file notes.md --block 1a2b3c # Show specific blockShow differences between commits or working directory with enhanced visual formatting.
Options:
--file <file>: Show diff for specific file only--block <block-hash>or-b <block-hash>: Compare specific block only
Examples:
notevc diff # Show uncommitted changes (enhanced view)
notevc diff a1b2c3d4 # Compare working dir to commit
notevc diff a1b2c3d4 b5c6d7e8 # Compare two commits
notevc diff --file notes.md # Diff specific file
notevc diff a1b2c3d4 --file notes.md # Compare specific file to commit
notevc diff --block 1a2b3c --file notes.md # Compare specific block
notevc diff a1b2c3d4 --block 1a2b3c --file notes.md # Compare block to commitVisual Enhancements:
- Clear separators (+++/---/~~~) for ADDED/DELETED/MODIFIED blocks
- Line-by-line diffs showing exact changes (+/- prefixes)
- Context lines shown in gray for unchanged content
- Block-level comparison for targeted analysis
Restore files or blocks from a specific commit.
Options:
--block <block-hash>or-b <block-hash>: Restore specific block only
Examples:
notevc restore a1b2c3d4 # Restore entire repository
notevc restore a1b2c3d4 notes.md # Restore specific file
notevc restore a1b2c3d4 notes.md --block 1a2b3c # Restore specific blockShow the version of notevc.
notevc versionControl versioning behavior with YAML frontmatter:
---
enabled: "true" # Enable/disable tracking (default: true)
automatic: "true" # Auto-commit on changes (default: false)
title: "My Note" # Note title for sorting
tags: # Tags for categorization
- project
- important
---
# Your content hereFrontmatter fields:
enabled: Set to "false" to exclude file from commits (default: true)automatic: Enable automatic commits (default: false)title: Custom title for the notetags: List of tags (array or comma-separated string)
NoteVC splits markdown files into blocks based on headings. Each block is:
- Identified by a stable hash
- Tracked independently
- Versioned separately
- Compressed automatically (GZIP) when content > 100 bytes
This means you can:
- See which sections changed
- Restore individual sections
- Track content at a granular level
- Save disk space with automatic compression
NoteVC includes built-in compression for efficient storage:
- Automatic GZIP compression for block content over 100 bytes
- Typical compression ratio: 60-80% space savings for text
- Transparent decompression when reading
- No performance impact on small blocks
