Welcome to the learning experience! First things first: Codetrail is not trying to be the next Git. Heck, we're actually using Git as our version control system. We're just crazy enough to build our own distributed version control system from scratch because... why not?
We're here to prove that with:
- A dangerous amount of curiosity
- Caffeine (lots of it)
- Sheer, unadulterated determination
- And perhaps a slight dash of madness
You can build a distributed version control system from the ground up. Is it practical? Probably not. Is it educational? Absolutely! Will it be fun? You bet your last semicolon it will be!
We believe in learning by doing, but also in documenting why we did what we did. Each major feature comes with its own RFC in the /docs/rfcs directory. These RFCs explain our thinking, design decisions, and implementation details.
Current RFCs:
- RFC-001: Codetrail Initialize Command
- RFC-010: Codetrail Configuration Command
- More to come as we build this thing!
Want to contribute a new feature? Start by reading our existing RFCs to understand our design philosophy, then draft your own RFC before diving into code. We promise to read it, even if it's written on a napkin (digital napkins preferred).
- Project setup (You're looking at it!)
-
init- Because every journey needs a starting point. (CODETRAIL001) -
config- Local config only (we're keeping it simple, folks) (CODETRAIL010) -
add- Teachingcodetrailwhich files to track -
commit- Making our first memories together
-
status- Finding out what's going on -
log- A trip down memory lane -
branch- Because sometimes we need parallel universes -
checkout- Time travel between branches
-
merge- Bringing parallel universes together -
reset- For when we mess up (it happens) -
revert- For when we mess up but want to be fancy about fixing it - Basic conflict resolution (pray we don't need this)
- Remote repository support
- Push/pull mechanisms
- Interactive rebase (because we're ambitious)
- Whatever cool feature you suggest!
Unlike other VCS projects that try to compete with Git, we're here to:
- Learn how Git's magic actually works
- Break things (intentionally, of course)
- Fix those things (eventually)
- Document every "aha!" and "oh no!" moment
- Share the journey with fellow code adventurers
- Python 3.8 or higher
- poetry (Python package manager)
# From PyPI
pip install codetrail
# For development
git clone https://github.com/mochams/codetrail
cd codetrail
poetry install
# Run to see supported commands
codetrail --help
# Run to see usage of a particular command e.g init
codetrail init --help
# Run your command. e.g init
codetrail initFound a bug? That's probably a feature! But if you insist, here's how you can help:
- Check out our RFCs in
/docs/rfcsto understand our design decisions - Browse through existing issues and pull requests
- For new features, consider writing an RFC first
- Clone the repo
- Create your feature branch
- Write tests (yes, we're that serious)
- Commit your changes
- Push to the branch
- Open a Pull Request
- Check existing RFCs to avoid duplication
- Use the RFC template in
/docs/rfcs/Template.md - Submit RFC as a pull request
- Engage in discussion with maintainers
- Once approved, implement away!
Interested in following our journey? Here's how to stay updated:
- ⭐ Star the repository to show your support
- 👀 Watch the repository for all activity
- 🔔 Follow releases for major updates
- 📖 Check our Wiki for learning resources and documentation
If you're looking for a production-ready VCS, you might want to stick with Git. If you're looking for an adventure in code that might occasionally explode in your face (in a good way), you're in the right place!
Made with ❤️ and excessive amounts of ☕