Skip to content

Commit

Permalink
Rebase
Browse files Browse the repository at this point in the history
  • Loading branch information
simonsan committed Aug 20, 2023
1 parent dfd4545 commit 654134e
Show file tree
Hide file tree
Showing 17 changed files with 561 additions and 56 deletions.
1 change: 1 addition & 0 deletions .gitattributes
@@ -0,0 +1 @@
*.afdesign filter=lfs diff=lfs merge=lfs -text
5 changes: 4 additions & 1 deletion .github/workflows/check-and-lint.yaml
Expand Up @@ -4,12 +4,15 @@ on:
- main
paths-ignore:
- "**/*.md"
- "docs/**"
- "docs/**/*"
- "assets/**/*"
push:
branches:
- main
paths-ignore:
- "**/*.md"
- "docs/**/*"
- "assets/**/*"

name: Check and Lint
# env:
Expand Down
5 changes: 4 additions & 1 deletion .github/workflows/release.yaml
Expand Up @@ -4,13 +4,16 @@ on:
- main
paths-ignore:
- "**/*.md"
- "docs/**"
- "docs/**/*"
- "assets/**/*"
push:
branches:
- main
- release/*
paths-ignore:
- "**/*.md"
- "docs/**/*"
- "assets/**/*"

name: Build release binaries

Expand Down
5 changes: 4 additions & 1 deletion .github/workflows/tests.yaml
Expand Up @@ -4,12 +4,15 @@ on:
- main
paths-ignore:
- "**/*.md"
- "docs/**"
- "docs/**/*"
- "assets/**/*"
push:
branches:
- main
paths-ignore:
- "**/*.md"
- "docs/**/*"
- "assets/**/*"

name: Tests

Expand Down
44 changes: 31 additions & 13 deletions CONTRIBUTING.md
Expand Up @@ -74,8 +74,8 @@ guidelines:
```

- Use `dprint` to format text in markdown, toml, and json. You can install it
with `cargo install dprint` and run it with the following command in the
repository root:
with `cargo install dprint`/`scoop install dprint` and run it with the
following command in the repository root:

```bash
dprint fmt
Expand All @@ -96,7 +96,24 @@ making changes, please include relevant unit tests. Run the test suite with:
cargo test --workspace
```

Make sure all tests pass before submitting your changes.
or check the [development guide](/docs/dev/development_guide.md#testing) for
more information which tools we provide for making developing `rustic` easier.

Make sure all tests pass before submitting your changes. PRs containing tests
have a much higher probability of getting merged (fast).

We expect PRs especially ones that introduce new features to contain tests for
the new code.

Besides that, we welcome PRs which increase the general test coverage of the
project. You can check the
[testing guide](/docs/dev/testing_guide.md#code-coverage) for more information.

We appreciate tests in every form: be it *unit*, *doc* or *integration* tests
(chose depending on your use case).

If you want to implement some *fuzzing* or *benchmarking*, that is also highly
appreciated.

### Submitting Pull Requests

Expand All @@ -110,9 +127,10 @@ To contribute code changes, follow these steps:
git checkout -b feature/your-feature-name
```

3. **Commit** your changes:
3. **Check** and **Commit** your changes:

```bash
just pre-commit
git commit -m "Add your meaningful commit message here"
```

Expand All @@ -133,7 +151,7 @@ follow your progress and can give early feedback.
Once your PR is submitted, it will be reviewed by the maintainers. We may
suggest changes or ask for clarifications before merging.

#### IMPORTANT NOTE
##### IMPORTANT NOTE

Please don't force push commits in your branch, in order to keep commit history
and make it easier for us to see changes between reviews.
Expand All @@ -153,9 +171,9 @@ else.

There's two main applications:

- If you based your work on a older master (so old that stuff can't be
- If you based your work on a older main (so old that stuff can't be
automatically merged), you can rebase to move your commits to the current
[upstream](https://help.github.com/articles/fork-a-repo/) master:
[upstream](https://help.github.com/articles/fork-a-repo/) main:

```bash
# update the upstream remote to receive new commits
Expand All @@ -167,8 +185,8 @@ git checkout my-awesome-feature
# make backup (you never know, you know?)
git branch my-awesome-feature-backup

# rebase: put your commits on top of upstream's master
git rebase -m upstream/master
# rebase: put your commits on top of upstream's main
git rebase -m upstream/main
```

- If you want to fix an older commit of yours, or merge several commits into a
Expand All @@ -187,10 +205,10 @@ git rebase -m upstream/master
changes in that graph, you do an **interactive rebase**:

```sh
git rebase -i -m upstream/master
git rebase -i -m upstream/main
```

With this command, your new "base" is `upstream/master` and you can then change
With this command, your new "base" is `upstream/main` and you can then change
any of your branch's commits.

`-i` will open an interactive editor where you can choose actions for each
Expand All @@ -212,12 +230,12 @@ creation of a new commit and instead melds the changes into the last one you
made.

If you want to update a single commit in the range
`[upstream/master, current HEAD]` which is not the last commit:
`[upstream/main, current HEAD]` which is not the last commit:

- `edit stuff you wanna change in some previous commit`
- `git add changed_stuff`
- `git commit --fixup $hash_of_commit_to_be_fixed`
- `git rebase --autosquash -i -m upstream/master`
- `git rebase --autosquash -i -m upstream/main`

##### Pushing changes

Expand Down
125 changes: 88 additions & 37 deletions README.md
@@ -1,70 +1,127 @@
# rustic - fast, encrypted, deduplicated backups powered by Rust
<p align="center">
<img src="https://github.com/rustic-rs/rustic/blob/main/assets/Logo.svg?raw=true" height="400" />
</p>

[![crate][crate-image]][crate-link] [![Docs][docs-image]][docs-link]
![Apache2/MIT licensed][license-image]
[![Crates.io Downloads][downloads-image]][crate-link]
<p align="center">
<a href="https://crates.io/crates/rustic-rs"><img src="https://img.shields.io/crates/v/rustic-rs.svg" /></a>
<a href="https://docs.rs/rustic-rs/"><img src="https://img.shields.io/docsrs/rustic-rs?style=flat&amp;labelColor=1c1d42&amp;color=4f396a&amp;logo=Rust&amp;logoColor=white" /></a>
<a href="https://raw.githubusercontent.com/rustic-rs/rustic/main/"><img src="https://img.shields.io/badge/license-Apache2.0/MIT-blue.svg" /></a>
<a href="https://crates.io/crates/rustic-rs"><img src="https://img.shields.io/crates/d/rustic-rs.svg" /></a>
<p>

## Contact
# *`rustic`*

| Contact | Where? |
| ------------- | -------------------------------------------------------------------------------------- |
| Issue Tracker | [GitHub Issues](https://github.com/rustic-rs/rustic/issues) |
| Discord | [![](https://dcbadge.vercel.app/api/server/WRUWENZnzQ)](https://discord.gg/WRUWENZnzQ) |
| Discussions | [GitHub Discussions](https://github.com/rustic-rs/rustic/discussions) |
### **fast, encrypted, and deduplicated backups**

## About

Rustic is a backup tool that provides fast, encrypted, deduplicated backups
written in [Rust](https://www.rust-lang.org/). It reads and writes the
[restic][1] repo format described in the [design document][2] and can be used as
a restic replacement in most cases.
`rustic` is a backup tool that provides fast, encrypted, deduplicated backups.

Rustic supports the major operating systems (Linux, MacOs, *BSD), Windows
support is experimental.
It reads and writes the [restic][1] repo format described in the
[design document][2] and can be used as a *restic* replacement in most cases.

Note that rustic currently is in a beta release and misses regression tests.
It is implemented in [Rust](https://www.rust-lang.org/), a performant,
memory-efficient, and reliable cross-platform systems programming language.

You can ask questions in the [Discussions][3] or have a look at the
[FAQ](docs/FAQ.md).
Hence `rustic` supports all major operating systems (Linux, MacOs, *BSD), with
Windows support still being experimental.

### Stability

`rustic` currently is in **beta** state and misses regression tests. It is not
recommended to use it for production backups, yet.

## `rustic` Libraries

The `rustic` project is split into multiple crates:

- [rustic](https://crates.io/crates/rustic-rs) - the main binary
- [rustic-core](https://crates.io/crates/rustic_core) - the core library

<!-- - [rustic-testing](https://crates.io/crates/rustic_testing) - testing utilities -->

## Features

- Backup data is deduplicated and encrypted.
- Backup data is **deduplicated** and **encrypted**.
- Backup storage can be local or cloud storages, including cold storages.
- Allows multiple clients to concurrently access a backup repository using
- Allows multiple clients to **concurrently** access a backup repository using
lock-free operations.
- Backups by default are append-only on the repository.
- The operations are robustly designed and can be safely aborted and efficiently
resumed.
- The operations are robustly designed and can be **safely aborted** and
**efficiently resumed**.
- Snapshot organization is possible by hostname, backup paths, label and tags.
Also a rich set of metadata is saved with each snapshot.
- Retention policies and cleaning of old backups can be highly customized.
- Retention policies and cleaning of old backups can be **highly customized**.
- Follow-up backups only process changed files, but still create a complete
backup snapshot.
- In-place restore only modifies files which are changed.
- Can use config files for easy configuration of all every-day commands, see
- Uses config files for easy configuration of all every-day commands, see
[example config files](/config/).

## Contact

You can ask questions in the [Discussions][3] or have a look at the
[FAQ](docs/FAQ.md).

| Contact | Where? |
| ------------- | -------------------------------------------------------------------------------------------------------- |
| Issue Tracker | [GitHub Issues](https://github.com/rustic-rs/rustic/issues) |
| Discord | [![](https://dcbadge.vercel.app/api/server/WRUWENZnzQ?style=flat-square)](https://discord.gg/WRUWENZnzQ) |
| Discussions | [GitHub Discussions](https://github.com/rustic-rs/rustic/discussions) |

## Quick start

![rustic getting started](https://github.com/rustic-rs/rustic/blob/main/docs/screenshots/gettingstarted.gif?raw=true)

## Are binaries available?
## Installation

### From source

**Beware**: This installs the latest development version, which might be
unstable.

````bash
```bash
cargo install --git https://github.com/rustic-rs/rustic.git rustic-rs
````
### crates.io
```bash
cargo install rustic-rs
```
### From binaries
Check out the [releases](https://github.com/rustic-rs/rustic/releases).
Sure. Check out the [releases](https://github.com/rustic-rs/rustic/releases).
Binaries for the latest development version are available
[here](https://github.com/rustic-rs/rustic-beta).
[here](https://github.com/rustic-rs/rustic-beta/releases).
## What is the difference between rustic and restic?
## Differences to `restic`?
See the [Comparison between rustic and restic](docs/comparison-restic.md).
We have collected some improvements of `rustic` over `restic`
[here](docs/comparison-restic.md).
## Contribution
## Contributing
Contributions in form of [issues][4] or PRs are very welcome.
Please make sure, that you read the [contribution guide](./CONTRIBUTING.md).
## Minimum Rust version policy
This crate's minimum supported `rustc` version is `1.67.1`.
The current policy is that the minimum Rust version required to use this crate
can be increased in minor version updates. For example, if `crate 1.0` requires
Rust 1.20.0, then `crate 1.0.z` for all values of `z` will also require Rust
1.20.0 or newer. However, `crate 1.y` for `y > 0` may require a newer minimum
version of Rust.
In general, this crate will be conservative with respect to the minimum
supported version of Rust.
## License
Licensed under either of:
Expand All @@ -75,12 +132,6 @@ Licensed under either of:
at your option.
[//]: # (badges)
[crate-image]: https://img.shields.io/crates/v/rustic-rs.svg
[crate-link]: https://crates.io/crates/rustic-rs
[docs-image]: https://docs.rs/rustic-rs/badge.svg
[docs-link]: https://docs.rs/rustic-rs/
[license-image]: https://img.shields.io/badge/license-Apache2.0/MIT-blue.svg
[downloads-image]: https://img.shields.io/crates/d/rustic-rs.svg
[//]: # (general links)
[1]: https://github.com/restic/restic
[2]: https://github.com/restic/restic/blob/master/doc/design.rst
Expand Down
3 changes: 3 additions & 0 deletions assets/Logo.afdesign
Git LFS file not shown
1 change: 1 addition & 0 deletions assets/Logo.svg
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/Logo_Discord.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/Readme_Header.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit 654134e

Please sign in to comment.