-
Notifications
You must be signed in to change notification settings - Fork 31
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #35 from genedna/main
#34 - Reorganize and improve docs and README
- Loading branch information
Showing
15 changed files
with
103 additions
and
101 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,74 +1,28 @@ | ||
# Mega - Monorepo Engine for Enterprise and Individual | ||
|
||
Mega is developing a monorepo engine similar to Google's Piper using Rust, which will facilitate Git and trunk-based development on a large scale. | ||
Mega is an engine for managing a monorepo. It functions similarly to Google's Piper and helps to streamline Git and trunk-based development for large-scale projects. | ||
|
||
## Git Compatible | ||
|
||
Git is a distributed version control system that stores file versions on local machines, enabling fast access and distributed collaboration. Though Git repositories can scale to 20TB for mid-sized companies, managing such large codebases can be difficult. | ||
|
||
Mega allows using Git with monorepo. It lets you clone or pull any monorepo folder into a local Git repo and push changes back. Though Git is popular, it lacks monorepo support. Mega bridges this gap. | ||
Git is a version control system that distributes file versions across local machines, allowing for quick access and collaboration. While mid-sized companies can store repositories as large as 20TB, managing such extensive codebases can pose challenges. Mega offers the ability to utilize Git with a monorepo. This allows for easy cloning or pulling of any monorepo folder into local filesystem as a Git repository, and seamless pushing of changes back. Despite Git's widespread use, it does not inherently support monorepo structures, but Mega fills this void. | ||
|
||
## Trunk-based Development | ||
|
||
Trunk-based development is an ideal workflow for monorepo. Monorepo are large codebases managed centrally, and trunk-based development provides a simple approach to changes. It involves working on a single codebase, frequent commits and testing, and deployments. This helps identify issues early, ensuring code stability. By enabling consistency and integration, trunk-based development keeps monorepo manageable, helping developers collaborate efficiently on big projects. | ||
When it comes to managing large codebases in a centralized manner, trunk-based development is the way to go. This workflow is particularly well-suited for monorepos. The idea behind trunk-based development is to work on a single codebase, making frequent commits and testing regularly. This approach helps identify issues early on, which ultimately leads to greater code stability. Additionally, trunk-based development enables consistency and integration, making it easier to manage monorepos and collaborate effectively on larger projects. | ||
|
||
## Getting Started | ||
|
||
Coming soon... | ||
|
||
## Contributing | ||
|
||
Mega is an open-source Git-based monorepo platform for trunk-based development. The project relies on community contributions and aims to simplify getting started. To use Mega, clone the repo, install dependencies, and run tests. Pick an issue, make changes, and submit a pull request for community review. | ||
|
||
To contribute to Mega, you should: | ||
|
||
- Familiarize yourself with the [Code of Conduct](CODE-OF-CONDUCT.md). Mega has a strict policy against abusive, unethical, or illegal behavior. | ||
- Review the [Contributing Guidelines](CONTRIBUTING.md). This document outlines the process for submitting bug reports, feature requests, and pull requests to Mega. | ||
- Sign the [Developer Certificate of Origin](https://developercertificate.org) (DCO) by adding a `Signed-off-by` line to your commit messages. This certifies that you wrote or have the right to submit the code you are contributing to the project. | ||
- Choose an issue to work on. Issues labeled `good first issue` are suitable for newcomers. You can also look for issues marked `help wanted`. | ||
- Fork the Mega repository and create a branch for your changes. | ||
- Make your changes and commit them with a clear commit message. | ||
- Push your changes to GitHub and open a pull request. | ||
- Respond to any feedback on your pull request. The Mega maintainers will review your changes and may request modifications before merging. | ||
- Once your pull request is merged, you will be listed as a contributor in the project repository and documentation. | ||
|
||
To comply with the requirements, contributors must include both a `Signed-off-by` line and a PGP signature in their commit messages. You can find more information about how to generate a PGP key [here](https://docs.github.com/en/github/authenticating-to-github/managing-commit-signature-verification/generating-a-new-gpg-key). | ||
|
||
Git even has a `-s` command line option to append this automatically to your commit message, and `-S` to sign your commit with your PGP key. For example: | ||
|
||
```bash | ||
$ git commit -S -s -m 'This is my commit message' | ||
``` | ||
|
||
### Rebase the branch | ||
The mega project relies on community contributions and aims to simplify getting started. To develop Mega, clone the repository, then install all dependencies and initialize the database schema, run the test suite and try it out locally. Pick an issue, make changes, and submit a pull request for community review. | ||
|
||
If you have a local git environment and meet the criteria below, one option is to rebase the branch and add your Signed-off-by lines in the new commits. Please note that if others have already begun work based upon the commits in this branch, this solution will rewrite history and may cause serious issues for collaborators (described in the git documentation under “The Perils of Rebasing”). | ||
|
||
You should only do this if: | ||
|
||
- You are the only author of the commits in this branch | ||
- You are absolutely certain nobody else is doing any work based upon this branch | ||
- There are no empty commits in the branch (for example, a DCO Remediation Commit which was added using `-allow-empty`) | ||
|
||
To add your Signed-off-by line to every commit in this branch: | ||
|
||
- Ensure you have a local copy of your branch by checking out the pull request locally via command line. | ||
- In your local branch, run: `git rebase HEAD~1 --signoff` | ||
- Force push your changes to overwrite the branch: `git push --force-with-lease origin main` | ||
More information on contributing to Mega is available in the [Contributing Guide](docs/contributing.md). | ||
|
||
## License | ||
|
||
Mega is licensed under this Licensed: | ||
|
||
- MIT LICENSE ( [LICENSE-MIT](LICENSE-MIT) or https://opensource.org/licenses/MIT) | ||
- Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or https://www.apache.org/licenses/LICENSE-2.0) | ||
|
||
## References | ||
|
||
1. [What is monorepo? (and should you use it?)](https://semaphoreci.com/blog/what-is-monorepo) | ||
2. [Monorepo: A single repository for all your code](https://medium.com/@mattklein123/monorepo-a-single-repository-for-all-your-code-86a852bff054) | ||
3. [Why Google Stores Billions of Lines of Code in a Single Repository](https://cacm.acm.org/magazines/2016/7/204032-why-google-stores-billions-of-lines-of-code-in-a-single-repository) | ||
4. [Trunk Based Development](https://trunkbaseddevelopment.com/) | ||
5. [Branching strategies: Git-flow vs trunk-based development](https://www.devbridge.com/articles/branching-strategies-git-flow-vs-trunk-based-development/) | ||
6. [Monorepo.tools](https://monorepo.tools/) | ||
7. [Google Open Source Third Party](https://opensource.google/documentation/reference/thirdparty) | ||
- Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or https://www.apache.org/licenses/LICENSE-2.0) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
# API |
File renamed without changes.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1,48 @@ | ||
# Contributing | ||
# Contributing Guide | ||
|
||
Mega is an open source monorepo engine for trunk-based development. The project relies on community contributions and aims to simplify getting started. To develop Mega, clone the repository, then install all dependencies and initialize the database schema, run the test suite and try it out locally. Pick an issue, make changes, and submit a pull request for community review. | ||
|
||
## What't the contribution | ||
|
||
Here are some guidelines for contributing to this project: | ||
|
||
1. Report issues/bugs: If you find any issues or bugs in the project, please report them by creating an issue on the issue tracker. Describe the issue in detail and also mention the steps to reproduce it. The more details you provide, the easier it will be for me to investigate and fix the issue. | ||
2. Suggest enhancements: If you have an idea to enhance or improve this project, you can suggest it by creating an issue on the issue tracker. Explain your enhancement in detail along with its use cases and benefits. I appreciate well-thought-out enhancement suggestions. | ||
3. Contribute code: If you want to develop and contribute code, follow these steps: | ||
- Familiarize yourself with the [Code of Conduct](CODE-OF-CONDUCT.md). Mega has a strict policy against abusive, unethical, or illegal behavior. | ||
- Choose an issue to work on. Issues labeled `good first issue` are suitable for newcomers. You can also look for issues marked `help wanted`. | ||
- Fork the Mega repository and create a branch for your changes. | ||
- Make your changes and commit them with a clear commit message. Sign the [Developer Certificate of Origin](https://developercertificate.org) (DCO) by adding a `Signed-off-by` line to your commit messages. This certifies that you wrote or have the right to submit the code you are contributing to the project. | ||
- Push your changes to GitHub and open a pull request. | ||
- Respond to any feedback on your pull request. The Mega maintainers will review your changes and may request modifications before merging. Please ensure your code is properly formatted and follows the same style as the existing codebase. | ||
- Once your pull request is merged, you will be listed as a contributor in the project repository and documentation. | ||
4. Write tutorials/blog posts: You can contribute by writing tutorials or blog posts to help users get started with this project. Submit your posts on the issue tracker for review and inclusion. High quality posts that provide value to users are highly appreciated. | ||
5. Improve documentation: If you find any gaps in the documentation or think any part can be improved, you can make changes to files in the documentation folder and submit a PR. Ensure the documentation is up-to-date with the latest changes. | ||
|
||
Your contributions are highly appreciated. Feel free to ask any questions if you have any doubts or facing issues while contributing. The more you contribute, the more you will learn and improve your skills. | ||
|
||
## DCO & PGP | ||
|
||
To comply with the requirements, contributors must include both a `Signed-off-by` line and a PGP signature in their commit messages. You can find more information about how to generate a PGP key [here](https://docs.github.com/en/github/authenticating-to-github/managing-commit-signature-verification/generating-a-new-gpg-key). | ||
|
||
Git even has a `-s` command line option to append this automatically to your commit message, and `-S` to sign your commit with your PGP key. For example: | ||
|
||
```bash | ||
$ git commit -S -s -m 'This is my commit message' | ||
``` | ||
|
||
### Rebase the branch | ||
|
||
If you have a local git environment and meet the criteria below, one option is to rebase the branch and add your Signed-off-by lines in the new commits. Please note that if others have already begun work based upon the commits in this branch, this solution will rewrite history and may cause serious issues for collaborators (described in the git documentation under “The Perils of Rebasing”). | ||
|
||
You should only do this if: | ||
|
||
- You are the only author of the commits in this branch | ||
- You are absolutely certain nobody else is doing any work based upon this branch | ||
- There are no empty commits in the branch (for example, a DCO Remediation Commit which was added using `-allow-empty`) | ||
|
||
To add your Signed-off-by line to every commit in this branch: | ||
|
||
- Ensure you have a local copy of your branch by checking out the pull request locally via command line. | ||
- In your local branch, run: `git rebase HEAD~1 --signoff` | ||
- Force push your changes to overwrite the branch: `git push --force-with-lease origin main` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
# Database |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
# Deployment |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1,11 @@ | ||
# Philosophy | ||
# Philosophy | ||
|
||
## References | ||
|
||
1. [What is monorepo? (and should you use it?)](https://semaphoreci.com/blog/what-is-monorepo) | ||
2. [Monorepo: A single repository for all your code](https://medium.com/@mattklein123/monorepo-a-single-repository-for-all-your-code-86a852bff054) | ||
3. [Why Google Stores Billions of Lines of Code in a Single Repository](https://cacm.acm.org/magazines/2016/7/204032-why-google-stores-billions-of-lines-of-code-in-a-single-repository) | ||
4. [Trunk Based Development](https://trunkbaseddevelopment.com/) | ||
5. [Branching strategies: Git-flow vs trunk-based development](https://www.devbridge.com/articles/branching-strategies-git-flow-vs-trunk-based-development/) | ||
6. [Monorepo.tools](https://monorepo.tools/) | ||
7. [Google Open Source Third Party](https://opensource.google/documentation/reference/thirdparty) |
File renamed without changes.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters