mirror of https://github.com/sobolevn/git-secret
CONTRIBUTING.md added
parent
db0f2e1940
commit
1e748a3c54
@ -0,0 +1,86 @@
|
|||||||
|
# Contributing
|
||||||
|
|
||||||
|
Your contributions are always welcome!
|
||||||
|
|
||||||
|
## Process
|
||||||
|
|
||||||
|
### Environment
|
||||||
|
|
||||||
|
Before starting make sure you have:
|
||||||
|
|
||||||
|
* git
|
||||||
|
* bash
|
||||||
|
* gnupg (or gnupg2)
|
||||||
|
* [shellcheck](https://github.com/koalaman/shellcheck)
|
||||||
|
|
||||||
|
Only required if dealing with manuals, `gh-pages` or releases:
|
||||||
|
|
||||||
|
* ruby, ruby-dev
|
||||||
|
|
||||||
|
### Getting started
|
||||||
|
|
||||||
|
1. Create your own or pick an opened issue from the [tracker](https://github.com/sobolevn/git-secret/issues). Take a look at the [`help-wanted` tag](https://github.com/sobolevn/git-secret/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22)
|
||||||
|
2. Fork and clone your repository: `git clone https://github.com/${YOUR_NAME}/git-secret.git`
|
||||||
|
3. Make sure that everything works fine by running `make test`
|
||||||
|
|
||||||
|
### Development Process
|
||||||
|
|
||||||
|
1. Firstly, you will need to setup development hooks with `make install-hooks`
|
||||||
|
2. Make changes to the files that need to be changed
|
||||||
|
3. When making changes to any files inside `src/` you will need to rebuild the binary `git-secret` with `make clean && make build` command
|
||||||
|
4. Run [`shellcheck`](https://github.com/koalaman/shellcheck) against all your changes with `find src utils -type f -name '*.sh' -print0 | xargs -0 -I {} shellcheck {}`
|
||||||
|
5. Now, add all your files to the commit with `git add --all` and commit changes `git commit`, make sure you write a good commit message, which will explain your works
|
||||||
|
6. When running `git commit` the tests will run automatically, you commit will be canceled if they fail
|
||||||
|
7. Push to your repository, make a pull-request against `develop` branch. Please, make sure you have *one* commit per pull-request
|
||||||
|
|
||||||
|
### Branches
|
||||||
|
|
||||||
|
We have three long-live branches: `master`, `staging` and `develop` (and `gh-pages`).
|
||||||
|
|
||||||
|
It basically looks like that:
|
||||||
|
|
||||||
|
> `your-branch` -> `develop` -> `staging` -> `master`
|
||||||
|
|
||||||
|
* `master` branch is protected, since `antigen` and tools like it installs the app from main branch directly. So only fully tested code goes there
|
||||||
|
* `staging` - this brach is used to create a new `git` tag and a `github` release, then it gets merged into `master`
|
||||||
|
* `develop` is where the development is done and the branch you should send your pull-requests to
|
||||||
|
|
||||||
|
### Continuous integration
|
||||||
|
|
||||||
|
CI is done with the help of `travis`. `travis` handles multiple environments:
|
||||||
|
|
||||||
|
* `Docker`-based jobs, or so-called 'integration tests', these tests creates a local release, installs it with the package-manager and then runs unit-tests and system checks
|
||||||
|
* `OSX` jobs, they just assure that everything will work under `OSX`
|
||||||
|
* Native `travis` jobs, which handles basic unit-tests and style-checks
|
||||||
|
|
||||||
|
### Release process
|
||||||
|
|
||||||
|
The release process is defined in the `git`-hooks and `.travis.yml`.
|
||||||
|
|
||||||
|
When creating a commit inside the `staging` branch (it is usually a documentation and changelog update with the version bump inside `src/version.sh`) it will trigger two main events.
|
||||||
|
|
||||||
|
Firstly, new manuals will be created and added to the current commit with `make build-man` on `pre-commit` hook.
|
||||||
|
|
||||||
|
Secondly, after the commit is successfully created it will also trigger `make build-gh-pages` target on `post-commit` hook, which will push new manuals to the https://sobolevn.github.io/git-secret/. And the new `git` tag will be automatically created if the version is changed:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
if [[ "$NEWEST_TAG" != "v${SCRIPT_VERSION}" ]]; then
|
||||||
|
git tag -a "v${SCRIPT_VERSION}" -m "version $SCRIPT_VERSION"
|
||||||
|
fi
|
||||||
|
```
|
||||||
|
|
||||||
|
Then it will be merged inside `master` when ready.
|
||||||
|
|
||||||
|
#### Travis releases
|
||||||
|
|
||||||
|
When creating a commit inside `master` branch `travis` on successful build will publish new `deb` and `rpm` packages to [`bintray`](https://bintray.com/sobolevn).
|
||||||
|
|
||||||
|
If you wish to override previous release (*be careful*) you will need to add `"override": 1 ` into `matrixParams`, see `deb-deploy.sh` and `rpm-deploy.sh`
|
||||||
|
|
||||||
|
#### Manual releases
|
||||||
|
|
||||||
|
Releases to `brew` are made manually.
|
||||||
|
|
||||||
|
#### Dockerhub releases
|
||||||
|
|
||||||
|
[`Dockerhub`](https://hub.docker.com/r/sobolevn/git-secret/) contains `Docker` images with different OS'es used for testing. It is updated via a `github` webhook on commit into `master`.
|
@ -0,0 +1,21 @@
|
|||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2016 Nikita Sobolev
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
Loading…
Reference in New Issue