3.2 KiB
3.2 KiB
Project Setup
- Initialize Project
- Configure
build.gradle.ktswith dependencies - Set up testing framework
Core
- Create
Repository.ktclass - Implement
.notevcdirectory initialization - Create
ObjectStore.ktfor content storage - Implement content hashing
HashUtils.kt - Create
NoteSnapshotdata class - Implement
Timeline.ktfor version tracking - Add
RepoMetadataand configuration
File Operations
- Implement markdown file scanning
- Create file change detection logic
- Add file content reading/writing utilities
- Implement path resolution and validation
- Add file timestamp tracking
- Create backup and restore mechanisms
Core Commands
Init Command
notevc init- Initialize repository- Create
.notevcdirectory structure - Generate initial metadata file
- Handle existing repository detection
Status Command
notevc status- Show file changes- Compare current files with last snapshot
- Display added/modified/deleted files
- Show clean working directory message
Commit command
notevc commit "message"- Create snapshot- Validate commit message exists
- Store changed file contents
- Create snapshot with metadata
- Update repository head pointer
Log Command
notevc log- Show commit history- Display snapshots in reverse chronological order
- Show commit hashes, messages, and timestamps
- add
--sincetime filtering option
Advanced Commands
Diff Command
notevc diff- Show current changesnotevc diff <file>- Show changes for specific filenotevc diff <commit>- Compare with specific commit- Implement basic text diffing algorithm
Restore Command
notevc restore <commit>- Restore entire statenotevc restore <commit> <file>- Restore specific file- Add conformation prompts for destructive operations
- Handle file conflicts gracefully
Show Command
notevc show <commit>- Display commit changes- Show commit metadata and file changes
- Display file contents at specific commit
Utilities and Polish
- Add colored output for better UX
- Implement proper error handling messages
- Add input validation for all commands
- Create help system (
notevc --help) - Add version information (
notevc --version) - Implement configuration file support
Testing
- Write unit tests for
ObjectStore - Test
Repositoryinitialization and operations - Add integration tests for CLI commands
- Test file change detection logic
- Add edge case testing (empty repos, corrupted data)
- Performance testing with large note collections
Build and Distribution
- Create fat JAR for distribution
- Add shell script wrapper for easy execution
- Test on different operating systems
- Create installation scripts
- Add build automation (GitHub Actions)
Future Features
- Compression for stored content
- Garbage collection for unused objects
- Branch-like functionality for different contexts
- Automatic backup scheduling
- File watching for auto-commits
- Export/import functionality
- NeoVim Plugin