Verified Commit 4ff48ec4 authored by Michael Gattozzi's avatar Michael Gattozzi
Browse files


This rounds out the documentation that was sorely needed before it could
be tagged as v0.1. It includes instructions on usage, what has changed,
and how to contribute all so that others can begin to contribute to the
project and move it outside a personal one.
parent 92f24f53
# 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
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
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
# 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:
- [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
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
## 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!
# 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
- 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](
- [Linux](
- [OSX](
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 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](
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:
# 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.
# 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.
# 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
## Contributing
See for more details
## Changelog
See for more details
## Code of Conduct
The Code of Conduct is strictly enforced. See for more
## 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 ``, 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
## Blog Posts
- [Redistributing Distributed Work](
## License
All code and contributions are licensed under the GNU Public License v3.0
See for more details.
See 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.
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment