diff options
-rw-r--r-- | CHANGELOG.md | 67 | ||||
-rw-r--r-- | CONTRIBUTING.md | 72 | ||||
-rw-r--r-- | README.md | 184 |
3 files changed, 313 insertions, 10 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..03301f9 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,67 @@ +# v0.1 + +The change log was generated from the git commit titles and grouped by type of +commit or task completed with the commit. They are not in any particular order. +If you'd like to see the contents of the commits please take a look at the git +log! The major highlights of the first release include: + +- Initial release of `ds` +- Initial release of `ticket` +- Initial release of `hooked` + +Have fun taking the initial release out for a spin! + +## Added Features + +Make hooked and dev-suite git hooks cross platform +Add the ability to install dev-suite to ds tool +Add the ability to assign users to tickets +Switch from termion to crossterm for tui +Upgrade tui to allow commenting from it +Add the ability to add comments to tickets +Extend ds with config subcommand +Create configamajig to handle dev-suite configs +Upgrade ticket format from V0 to V1 to use UUIDs +Add a tui for ticket +Add logging output to ticket +Add logging output to hooked +Create dev-suite tool to orchestrate tooling +Add 'hooked init' test +Add hooked and empty inited hooks from the tool +Add ticket functionality to dev-suite (#3) + +## Bug Fixes + +Change ticket tui to fix thread panic on Windows +Fix init logic for `ds init` + +## Chores and refactors + +Add CHANGELOG and CONTRIBUTING and update README +Cleanup ds install and format hooked properly +Update reqwest and create a release profile +Make the toolchain use the latest stable rustc +Add licenses for dependencies to the project +Add a repo config and set self as maintainer +Refactor ticket to use common methods +Change pre-commit hook so that it works in fish +Upgrade Rust from 1.39 to 1.40 +Add README and CODE_OF_CONDUCT +License all code under GPL-3.0 +Make the pre-commit script pedantic and fix errors +Add commit message linting hook to the repo +Remove GitHub actions now that git hooks exist +Fix formatting and add checks to pre-commit hook +Setup CI for dev-suite (#1) +Initialize the dev-suite repo +Change ticket/Cargo.toml to use non * versions +Bump anyhow from 1.0.19 to 1.0.22 +Move find_root function into the new shared crate +Setup the website skeleton with the kube theme + +## Issues + +Create ticket 'Create a tui for ticket' +Close 'Create a tui for ticket' +Create a ticket for a find_root function +Add tickets to the repo diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..b57aa2a --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,72 @@ +# Contributing + +## Thanks! + +First of all thank you! You being here means you want to help in some way and +that's greatly appreciated! + +## Mailing List + +Part of dogfooding dev-suite's tools means figuring out how to make contributing +easy. It's not expected to be easy for a while, but that's part of the fun; +solving really hard problems. However, it's not impossible and working towards +this is the end goal of this project. There are a few ways you can contribute. + +Many of them involve interacting with the mailing list: +- Mailing list email address: dev-suite@googlegroups.com +- [Google Group][google] + +## Commit Messages + +Before jumping into all of the below ways you can contribute please note that +any commits being submitted must be in the form laid out in +[this blog post][blog_post]. In summary all commits must have the following +form: + +1. Separate subject from body with a blank line +2. Limit the subject line to 50 characters +3. Capitalize the subject line +4. Do not end the subject line with a period +5. Use the imperative mood in the subject line +6. Wrap the body at 72 characters +7. Use the body to explain what and why vs. how + +Commits not following this will be rejected though number seven as a requirement +is a bit more lax. + +## Feature Requests + +There's a lot of things dev-suite can be and while there already some ideas for +future work it's nice to hear what people want out of their tools. Feature +requests will not be considered issues until they've been actively accepted as +something to be worked on. With that in mind please feel free to send in your +requests to the [wish list topic][wish_list] in the mailing list. + +## Filing Issues + +Bugs are inevitable feature of all software. If you find a bug please file an +issue with ticket in your own fork and send an email to +[the issues topic][issues] in the mailing list with where it can be pulled from +and it will get integrated it into the repo. Comments added to issues should be +done the same way as well. If it's a feature request follow the above to send +that in. In the future finding a way to automate this part so that you can just +send an email and have it merge the issue or comment automatically would be +great. + +## Adding code or sending in bug fixes + +Much like filing issues send an email to the mailing list with [PR] and what +the PR is for in the subject and a link to a publicly accessible repo where the +commits can be pulled from for review. Discussion will happen on that thread +until changes are accepted. Please follow the Commit Messages guidelines when +doing this. The history is not going to be cluttered with those that don't +follow the rules above. Having a nice git log to work with is absolutely +critical. Please also do not send patches by email. Sending patches screws up +the history and email clients do all kinds of stuff with newlines and white +space. git was designed to work in a distributed manner. Just make the repo +public and your changes should be able to be pulled in to the main repo! + +[blog_post]: https://chris.beams.io/posts/git-commit/ +[google]: https://groups.google.com/forum/#!forum/dev-sute +[wish_list]: https://groups.google.com/d/topic/dev-suite/H62oYcV-mE4/discussion +[issues]: https://groups.google.com/d/msg/dev-suite/IJdllJGoqSA/q6-VVmE9BAAJ @@ -1,24 +1,188 @@ # dev-suite -dev-suite is a set of tools designed to redistribute distributed work +dev-suite is a set of tools designed to redistribute distributed work. Our code +has been locked into centralized services like GitHub and Gitlab. They provide +nice things like an issue tracker and PRs as an integrated service. If we can +put that into the git repo itself we'd be free to host our code wherever and +have our code and it's project management share a common history rather than +being locked into a service and divorcing the context of the important things +that shape what code gets written. -## Current Status -Highly experimental and not for general use. +Currently dev-suite has two tools: +- Hooked, a git hooks manager to allow cross platform git hooks that can help + enable things like trunk based development and allow CI in a local + environment +- Ticket, an on disk ticket manager and viewer to allow issues to live inside of + the repo and travel with it + +## Installation + +### Dependencies + +#### OSX +- git + +#### Linux +- git + +#### Windows +- git for Windows installed to the default path for hooked to work + +#### Optional deps +- Ruby +- Python +- Bash (included with git for Windows) + +Make sure you have these on your path somewhere for the git hooks to work +properly in hooked + +### Recommended install method +1. Grab a binary for the ds tool for your platform and place it somewhere on + your PATH + - [Windows](https://dev-suite-spaces.nyc3.digitaloceanspaces.com/windows/ds.exe) + - [Linux](https://dev-suite-spaces.nyc3.digitaloceanspaces.com/linux/ds) + - [OSX](https://dev-suite-spaces.nyc3.digitaloceanspaces.com/osx/ds) +2. Run `ds install` which will install `ticket` and `hooked` to: + - Windows: `C:\\Users\YourUser\AppData\Local\dev-suite` + - Linux: `$XDG_BIN_HOME` or `$XDG_DATA_HOME/../bin` or `$HOME/.local/bin` + - OSX: `/usr/local/bin` + On Windows `ds install` will add the install path to your PATH with the `setx` + command. You might need to log out or restart your computer to see the + desired effect of not needing to type the path to the executable to run it. +3. Run `ds config self init` to initialize a user config on the system. Failing + to do so will likely cause unexpected errors. + +### Manually compile +In the event the above doesn't work for some reason or because of a bug (please +file an issue and see CONTRIBUTING.md on how to do so) you can install these +tools manually. + +1. Make sure you have the stable Rust compiler and Cargo installed we recommend + doing so via [rustup](https://rustup.rs/) +2. Clone this repo +3. `cd` into the repo +4. `cargo install --path .` +5. `cargo install --path hooked` +6. `cargo install --path ticket` +7. Run `ds config self init` to initialize a user config on the system. Failing + to do so will likely cause unexpected errors. + +## Usage + +### Initializing a repo to use dev-suite +While each tool has it's own init command we recommend running `ds init` inside +of a repo that you want to use these tools. You can choose the ones that you +want to use from the command prompt and it will also initialize the repo with +it's own repo config so this is probably the best way to do so. + +### ds + +`ds` is the main orchestration tool for setting things up with dev-suite. As +this is not the main driver beyond setup it only has a few commands: + +```bash +# Initialize a repo to use dev-suite and it's tools +ds init + +# Install dev-suite's tools onto your computer +ds install + +# Config commands for the user and repo + +## Create a dev-suite repo config in a repo +ds config repo init + +## Add yourself as a maintainer to the repo config +ds config repo add me + +## Pretty print the repo config to the terminal +ds config repo show + +## Create a dev-suite user config for the system +ds config user init "Display Name" + +## Pretty print the user config to the terminal +ds config user show +``` + +## Hooked +`hooked` is a dev-suite tool used to create git hooks for your repo to travel +with it and to link them to `.git/hooks` on a fresh clone of it. + +```bash +# Initialize a repo to use hooked if it was not initialized with it when using +# `ds init` + +## Initialize the repo to use bash for git hooks +hooked init bash + +## Initialize the repo to use ruby for git hooks +hooked init ruby + +## Initialize the repo to use python for git hooks +hooked init python + +# Link pre-existing dev-suite git hooks +hooked link +``` + +## Ticket + +`ticket` is a dev-suite tool used to create, update, view, and manage +tickets for your code base. + +```bash +# Initialize a repo to use ticket if it was not initialized with it when using +# `ds init` +ticket init + +# Open up a new ticket +ticket new + +# Close a ticket +ticket close <TICKET-UUID> + +# Comment on a ticket +ticket comment <TICKET-UUID> <MESSAGE> + +# Show a ticket on the commandline +ticket show <TICKET-UUID> + +# Assign a ticket to yourself +ticket assign <TICKET-UUID> to me + +# Assign a ticket to someone else +ticket assign <TICKET-UUID> to them <USER-UUID> <NAME> + +# Migrate old versions of tickets to the newer versions this does nothing for now +# unless you checkout the codebase from a pre v0.1 release +ticket migrate + +# Open up the tui to look at tickets and comment on them +ticket + +``` + +## Contributing +See CONTRIBUTING.md for more details + +## Changelog +See CHANGELOG.md for more details ## Code of Conduct The Code of Conduct is strictly enforced. See CODE_OF_CONDUCT.md for more details. -## PRs and Issues -GitHub is a mirrored repo and all PRs and Issues will be closed. The point of -these tools is to not depend on these things. This is merely to provide a public -way to clone the source code. Currently this is mostly a private project. If you -want to add issues or send a PR you can email me at `self@mgattozzi.dev`, but -I doubt I will respond or accept changes currently +## Opening PRs and Issues on public mirrors +GitHub, Gitlab, and Bitbucket are mirrored repos and all PRs and Issues will be +closed. The point of dev-suite is to not depend on the value add of these +services. These mirror exist only to provide a public way to clone the source +code. ## Blog Posts - [Redistributing Distributed Work](https://blog.mgattozzi.dev/redistributing-distributed-work/) ## License All code and contributions are licensed under the GNU Public License v3.0 -See LICENSE.md for more details. +See LICENSE.md for more details. While this code does use the GPL we don't +condone the actions of Richard Stallman or the FSF in it's protection of him. |