# Contributing to WLK
Thank you for your interest in contributing to WLK! This document provides guidelines and instructions for contributing.
## Code of Conduct
Be respectful, constructive, and professional in all interactions.
## Getting Started
1. Fork the repository
2. Clone your fork: `git clone https://github.com/yourusername/wlk.git`
3. Create a feature branch: `git checkout -b feature/your-feature`
4. Make your changes
5. Run tests: `cargo test`
6. Run clippy: `cargo clippy`
7. Format code: `cargo fmt`
8. Commit with clear messages
9. Push and create a Pull Request
## Development Setup
### Prerequisites
- Rust 1.70 or later
- Cargo
### Building
```bash
cargo build
```
### Testing
```bash
# Run all tests
cargo test
# Run specific test
cargo test test_name
# Run with output
cargo test -- --nocapture
```
## Project Structure
```
wlk/
├── src/
│ ├── main.rs # CLI interface
│ ├── lib.rs # Library exports
│ ├── delta.rs # Delta operations
│ ├── shadow.rs # Shadow file management
│ ├── metalog.rs # Directory event log
│ ├── wal.rs # Write-ahead log
│ ├── repository.rs # Repository management
│ ├── config.rs # Configuration
│ ├── diff.rs # Diff display
│ └── utils.rs # Utilities
├── tests/ # Integration tests
├── examples/ # Example programs
└── benches/ # Benchmarks
```
## Code Style
- Follow Rust conventions
- Run `cargo fmt` before committing
- Run `cargo clippy` and fix warnings
- Add tests for new features
- Document public APIs with `///` comments
## License
By contributing, you agree that your contributions will be dual-licensed under MIT and Apache-2.0.